Trendsic Platform Service

<back to all web services

SmartsheetsRequest

Requires Authentication
Requires any of the roles:Worker, Agent, Administrator
The following routes are available for this service:
GET/v1/Smartsheets/{AgentID}
GET/v1/Smartsheets
GET/v1/Smartsheets/{AgentID}/{SheetType}
<?php namespace dtos;

use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};


class Attachment implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $AttachmentId='',
        /** @var string|null */
        public ?string $TableName=null,
        /** @var string|null */
        public ?string $FieldName=null,
        /** @var int */
        public int $RecordId=0,
        /** @var string|null */
        public ?string $AttachmentName=null,
        /** @var string|null */
        public ?string $MimeType=null,
        /** @var ByteArray|null */
        public ?ByteArray $AttachmentData=null,
        /** @var float */
        public float $FileSizeInKB=0.0,
        /** @var DateTime */
        public DateTime $CreatedDate=new DateTime(),
        /** @var string|null */
        public ?string $CreatedBy=null,
        /** @var bool|null */
        public ?bool $NeedsOCR=null,
        /** @var DateTime */
        public DateTime $OCRDate=new DateTime(),
        /** @var bool|null */
        public ?bool $IsSecurities=null,
        /** @var string|null */
        public ?string $AWSKey=null,
        /** @var string|null */
        public ?string $PresignedUrl=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['AttachmentId'])) $this->AttachmentId = $o['AttachmentId'];
        if (isset($o['TableName'])) $this->TableName = $o['TableName'];
        if (isset($o['FieldName'])) $this->FieldName = $o['FieldName'];
        if (isset($o['RecordId'])) $this->RecordId = $o['RecordId'];
        if (isset($o['AttachmentName'])) $this->AttachmentName = $o['AttachmentName'];
        if (isset($o['MimeType'])) $this->MimeType = $o['MimeType'];
        if (isset($o['AttachmentData'])) $this->AttachmentData = JsonConverters::from('ByteArray', $o['AttachmentData']);
        if (isset($o['FileSizeInKB'])) $this->FileSizeInKB = $o['FileSizeInKB'];
        if (isset($o['CreatedDate'])) $this->CreatedDate = JsonConverters::from('DateTime', $o['CreatedDate']);
        if (isset($o['CreatedBy'])) $this->CreatedBy = $o['CreatedBy'];
        if (isset($o['NeedsOCR'])) $this->NeedsOCR = $o['NeedsOCR'];
        if (isset($o['OCRDate'])) $this->OCRDate = JsonConverters::from('DateTime', $o['OCRDate']);
        if (isset($o['IsSecurities'])) $this->IsSecurities = $o['IsSecurities'];
        if (isset($o['AWSKey'])) $this->AWSKey = $o['AWSKey'];
        if (isset($o['PresignedUrl'])) $this->PresignedUrl = $o['PresignedUrl'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->AttachmentId)) $o['AttachmentId'] = $this->AttachmentId;
        if (isset($this->TableName)) $o['TableName'] = $this->TableName;
        if (isset($this->FieldName)) $o['FieldName'] = $this->FieldName;
        if (isset($this->RecordId)) $o['RecordId'] = $this->RecordId;
        if (isset($this->AttachmentName)) $o['AttachmentName'] = $this->AttachmentName;
        if (isset($this->MimeType)) $o['MimeType'] = $this->MimeType;
        if (isset($this->AttachmentData)) $o['AttachmentData'] = JsonConverters::to('ByteArray', $this->AttachmentData);
        if (isset($this->FileSizeInKB)) $o['FileSizeInKB'] = $this->FileSizeInKB;
        if (isset($this->CreatedDate)) $o['CreatedDate'] = JsonConverters::to('DateTime', $this->CreatedDate);
        if (isset($this->CreatedBy)) $o['CreatedBy'] = $this->CreatedBy;
        if (isset($this->NeedsOCR)) $o['NeedsOCR'] = $this->NeedsOCR;
        if (isset($this->OCRDate)) $o['OCRDate'] = JsonConverters::to('DateTime', $this->OCRDate);
        if (isset($this->IsSecurities)) $o['IsSecurities'] = $this->IsSecurities;
        if (isset($this->AWSKey)) $o['AWSKey'] = $this->AWSKey;
        if (isset($this->PresignedUrl)) $o['PresignedUrl'] = $this->PresignedUrl;
        return empty($o) ? new class(){} : $o;
    }
}

class Reminder implements JsonSerializable
{
    public function __construct(
        /** @var string */
        public string $ReminderId='',
        /** @var string|null */
        public ?string $TableName=null,
        /** @var string|null */
        public ?string $FieldName=null,
        /** @var int */
        public int $RecordId=0,
        /** @var DateTime */
        public DateTime $ReminderDate=new DateTime(),
        /** @var string|null */
        public ?string $ReminderNote=null,
        /** @var DateTime */
        public DateTime $CreatedDate=new DateTime(),
        /** @var string|null */
        public ?string $CreatedBy=null,
        /** @var DateTime */
        public DateTime $CompletedDate=new DateTime()
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ReminderId'])) $this->ReminderId = $o['ReminderId'];
        if (isset($o['TableName'])) $this->TableName = $o['TableName'];
        if (isset($o['FieldName'])) $this->FieldName = $o['FieldName'];
        if (isset($o['RecordId'])) $this->RecordId = $o['RecordId'];
        if (isset($o['ReminderDate'])) $this->ReminderDate = JsonConverters::from('DateTime', $o['ReminderDate']);
        if (isset($o['ReminderNote'])) $this->ReminderNote = $o['ReminderNote'];
        if (isset($o['CreatedDate'])) $this->CreatedDate = JsonConverters::from('DateTime', $o['CreatedDate']);
        if (isset($o['CreatedBy'])) $this->CreatedBy = $o['CreatedBy'];
        if (isset($o['CompletedDate'])) $this->CompletedDate = JsonConverters::from('DateTime', $o['CompletedDate']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ReminderId)) $o['ReminderId'] = $this->ReminderId;
        if (isset($this->TableName)) $o['TableName'] = $this->TableName;
        if (isset($this->FieldName)) $o['FieldName'] = $this->FieldName;
        if (isset($this->RecordId)) $o['RecordId'] = $this->RecordId;
        if (isset($this->ReminderDate)) $o['ReminderDate'] = JsonConverters::to('DateTime', $this->ReminderDate);
        if (isset($this->ReminderNote)) $o['ReminderNote'] = $this->ReminderNote;
        if (isset($this->CreatedDate)) $o['CreatedDate'] = JsonConverters::to('DateTime', $this->CreatedDate);
        if (isset($this->CreatedBy)) $o['CreatedBy'] = $this->CreatedBy;
        if (isset($this->CompletedDate)) $o['CompletedDate'] = JsonConverters::to('DateTime', $this->CompletedDate);
        return empty($o) ? new class(){} : $o;
    }
}

class SmartsheetsLife implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $ID=0,
        /** @var string|null */
        public ?string $FirstName=null,
        /** @var string|null */
        public ?string $LastName=null,
        /** @var string|null */
        public ?string $PolicyNumber=null,
        /** @var string|null */
        public ?string $PolicyType=null,
        /** @var string|null */
        public ?string $CPT=null,
        /** @var string|null */
        public ?string $AppDate=null,
        /** @var string|null */
        public ?string $AgentName=null,
        /** @var int|null */
        public ?int $AgentID=null,
        /** @var string|null */
        public ?string $Phase=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var string|null */
        public ?string $TransferAmount=null,
        /** @var string|null */
        public ?string $AccountNumber=null,
        /** @var bool|null */
        public ?bool $Deleted=null,
        /** @var string|null */
        public ?string $ModifiedBy=null,
        /** @var bool|null */
        public ?bool $Flagged=null,
        /** @var string|null */
        public ?string $TransactionId=null,
        /** @var string|null */
        public ?string $FaceValue=null,
        /** @var bool|null */
        public ?bool $HasChange=null,
        /** @var bool|null */
        public ?bool $HasConversation=null,
        /** @var bool|null */
        public ?bool $HasAgentMsg=null,
        /** @var bool|null */
        public ?bool $HasAdminMsg=null,
        /** @var array<Attachment>|null */
        public ?array $Attachment=null,
        /** @var array<Reminder>|null */
        public ?array $Reminder=null,
        /** @var string|null */
        public ?string $Agents=null,
        /** @var bool|null */
        public ?bool $HasOCR=null,
        /** @var string */
        public string $PolicyAssociateId='',
        /** @var bool|null */
        public ?bool $HasRequiredDocuments=null,
        /** @var string|null */
        public ?string $Phone=null,
        /** @var string|null */
        public ?string $EmailAddress=null,
        /** @var string|null */
        public ?string $ApprovedDate=null,
        /** @var string|null */
        public ?string $ApprovedBy=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['FirstName'])) $this->FirstName = $o['FirstName'];
        if (isset($o['LastName'])) $this->LastName = $o['LastName'];
        if (isset($o['PolicyNumber'])) $this->PolicyNumber = $o['PolicyNumber'];
        if (isset($o['PolicyType'])) $this->PolicyType = $o['PolicyType'];
        if (isset($o['CPT'])) $this->CPT = $o['CPT'];
        if (isset($o['AppDate'])) $this->AppDate = $o['AppDate'];
        if (isset($o['AgentName'])) $this->AgentName = $o['AgentName'];
        if (isset($o['AgentID'])) $this->AgentID = $o['AgentID'];
        if (isset($o['Phase'])) $this->Phase = $o['Phase'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['TransferAmount'])) $this->TransferAmount = $o['TransferAmount'];
        if (isset($o['AccountNumber'])) $this->AccountNumber = $o['AccountNumber'];
        if (isset($o['Deleted'])) $this->Deleted = $o['Deleted'];
        if (isset($o['ModifiedBy'])) $this->ModifiedBy = $o['ModifiedBy'];
        if (isset($o['Flagged'])) $this->Flagged = $o['Flagged'];
        if (isset($o['TransactionId'])) $this->TransactionId = $o['TransactionId'];
        if (isset($o['FaceValue'])) $this->FaceValue = $o['FaceValue'];
        if (isset($o['HasChange'])) $this->HasChange = $o['HasChange'];
        if (isset($o['HasConversation'])) $this->HasConversation = $o['HasConversation'];
        if (isset($o['HasAgentMsg'])) $this->HasAgentMsg = $o['HasAgentMsg'];
        if (isset($o['HasAdminMsg'])) $this->HasAdminMsg = $o['HasAdminMsg'];
        if (isset($o['Attachment'])) $this->Attachment = JsonConverters::fromArray('Attachment', $o['Attachment']);
        if (isset($o['Reminder'])) $this->Reminder = JsonConverters::fromArray('Reminder', $o['Reminder']);
        if (isset($o['Agents'])) $this->Agents = $o['Agents'];
        if (isset($o['HasOCR'])) $this->HasOCR = $o['HasOCR'];
        if (isset($o['PolicyAssociateId'])) $this->PolicyAssociateId = $o['PolicyAssociateId'];
        if (isset($o['HasRequiredDocuments'])) $this->HasRequiredDocuments = $o['HasRequiredDocuments'];
        if (isset($o['Phone'])) $this->Phone = $o['Phone'];
        if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
        if (isset($o['ApprovedDate'])) $this->ApprovedDate = $o['ApprovedDate'];
        if (isset($o['ApprovedBy'])) $this->ApprovedBy = $o['ApprovedBy'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->FirstName)) $o['FirstName'] = $this->FirstName;
        if (isset($this->LastName)) $o['LastName'] = $this->LastName;
        if (isset($this->PolicyNumber)) $o['PolicyNumber'] = $this->PolicyNumber;
        if (isset($this->PolicyType)) $o['PolicyType'] = $this->PolicyType;
        if (isset($this->CPT)) $o['CPT'] = $this->CPT;
        if (isset($this->AppDate)) $o['AppDate'] = $this->AppDate;
        if (isset($this->AgentName)) $o['AgentName'] = $this->AgentName;
        if (isset($this->AgentID)) $o['AgentID'] = $this->AgentID;
        if (isset($this->Phase)) $o['Phase'] = $this->Phase;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->TransferAmount)) $o['TransferAmount'] = $this->TransferAmount;
        if (isset($this->AccountNumber)) $o['AccountNumber'] = $this->AccountNumber;
        if (isset($this->Deleted)) $o['Deleted'] = $this->Deleted;
        if (isset($this->ModifiedBy)) $o['ModifiedBy'] = $this->ModifiedBy;
        if (isset($this->Flagged)) $o['Flagged'] = $this->Flagged;
        if (isset($this->TransactionId)) $o['TransactionId'] = $this->TransactionId;
        if (isset($this->FaceValue)) $o['FaceValue'] = $this->FaceValue;
        if (isset($this->HasChange)) $o['HasChange'] = $this->HasChange;
        if (isset($this->HasConversation)) $o['HasConversation'] = $this->HasConversation;
        if (isset($this->HasAgentMsg)) $o['HasAgentMsg'] = $this->HasAgentMsg;
        if (isset($this->HasAdminMsg)) $o['HasAdminMsg'] = $this->HasAdminMsg;
        if (isset($this->Attachment)) $o['Attachment'] = JsonConverters::toArray('Attachment', $this->Attachment);
        if (isset($this->Reminder)) $o['Reminder'] = JsonConverters::toArray('Reminder', $this->Reminder);
        if (isset($this->Agents)) $o['Agents'] = $this->Agents;
        if (isset($this->HasOCR)) $o['HasOCR'] = $this->HasOCR;
        if (isset($this->PolicyAssociateId)) $o['PolicyAssociateId'] = $this->PolicyAssociateId;
        if (isset($this->HasRequiredDocuments)) $o['HasRequiredDocuments'] = $this->HasRequiredDocuments;
        if (isset($this->Phone)) $o['Phone'] = $this->Phone;
        if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
        if (isset($this->ApprovedDate)) $o['ApprovedDate'] = $this->ApprovedDate;
        if (isset($this->ApprovedBy)) $o['ApprovedBy'] = $this->ApprovedBy;
        return empty($o) ? new class(){} : $o;
    }
}

class SmartsheetsFlow implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $ID=0,
        /** @var string|null */
        public ?string $FirstName=null,
        /** @var string|null */
        public ?string $LastName=null,
        /** @var string|null */
        public ?string $PolicyNumber=null,
        /** @var string|null */
        public ?string $PolicyType=null,
        /** @var string|null */
        public ?string $AppDate=null,
        /** @var string|null */
        public ?string $AgentName=null,
        /** @var int|null */
        public ?int $AgentID=null,
        /** @var string|null */
        public ?string $SRAStartDate=null,
        /** @var string|null */
        public ?string $Phase=null,
        /** @var string|null */
        public ?string $ModalPremium=null,
        /** @var string|null */
        public ?string $Frequency=null,
        /** @var string|null */
        public ?string $AnnualPremium=null,
        /** @var string|null */
        public ?string $District=null,
        /** @var string|null */
        public ?string $SS=null,
        /** @var string|null */
        public ?string $Carrier=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var string|null */
        public ?string $TPA=null,
        /** @var bool|null */
        public ?bool $Flagged=null,
        /** @var bool|null */
        public ?bool $Deleted=null,
        /** @var string|null */
        public ?string $ModifiedBy=null,
        /** @var string|null */
        public ?string $TransactionId=null,
        /** @var bool|null */
        public ?bool $HasChange=null,
        /** @var bool|null */
        public ?bool $HasConversation=null,
        /** @var bool|null */
        public ?bool $HasAgentMsg=null,
        /** @var bool|null */
        public ?bool $HasAdminMsg=null,
        /** @var array<Attachment>|null */
        public ?array $Attachment=null,
        /** @var array<Reminder>|null */
        public ?array $Reminder=null,
        /** @var string|null */
        public ?string $Agents=null,
        /** @var bool|null */
        public ?bool $HasOCR=null,
        /** @var string */
        public string $PolicyAssociateId='',
        /** @var bool|null */
        public ?bool $HasRequiredDocuments=null,
        /** @var string|null */
        public ?string $Phone=null,
        /** @var string|null */
        public ?string $EmailAddress=null,
        /** @var string|null */
        public ?string $ApprovedDate=null,
        /** @var string|null */
        public ?string $ApprovedBy=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['FirstName'])) $this->FirstName = $o['FirstName'];
        if (isset($o['LastName'])) $this->LastName = $o['LastName'];
        if (isset($o['PolicyNumber'])) $this->PolicyNumber = $o['PolicyNumber'];
        if (isset($o['PolicyType'])) $this->PolicyType = $o['PolicyType'];
        if (isset($o['AppDate'])) $this->AppDate = $o['AppDate'];
        if (isset($o['AgentName'])) $this->AgentName = $o['AgentName'];
        if (isset($o['AgentID'])) $this->AgentID = $o['AgentID'];
        if (isset($o['SRAStartDate'])) $this->SRAStartDate = $o['SRAStartDate'];
        if (isset($o['Phase'])) $this->Phase = $o['Phase'];
        if (isset($o['ModalPremium'])) $this->ModalPremium = $o['ModalPremium'];
        if (isset($o['Frequency'])) $this->Frequency = $o['Frequency'];
        if (isset($o['AnnualPremium'])) $this->AnnualPremium = $o['AnnualPremium'];
        if (isset($o['District'])) $this->District = $o['District'];
        if (isset($o['SS'])) $this->SS = $o['SS'];
        if (isset($o['Carrier'])) $this->Carrier = $o['Carrier'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['TPA'])) $this->TPA = $o['TPA'];
        if (isset($o['Flagged'])) $this->Flagged = $o['Flagged'];
        if (isset($o['Deleted'])) $this->Deleted = $o['Deleted'];
        if (isset($o['ModifiedBy'])) $this->ModifiedBy = $o['ModifiedBy'];
        if (isset($o['TransactionId'])) $this->TransactionId = $o['TransactionId'];
        if (isset($o['HasChange'])) $this->HasChange = $o['HasChange'];
        if (isset($o['HasConversation'])) $this->HasConversation = $o['HasConversation'];
        if (isset($o['HasAgentMsg'])) $this->HasAgentMsg = $o['HasAgentMsg'];
        if (isset($o['HasAdminMsg'])) $this->HasAdminMsg = $o['HasAdminMsg'];
        if (isset($o['Attachment'])) $this->Attachment = JsonConverters::fromArray('Attachment', $o['Attachment']);
        if (isset($o['Reminder'])) $this->Reminder = JsonConverters::fromArray('Reminder', $o['Reminder']);
        if (isset($o['Agents'])) $this->Agents = $o['Agents'];
        if (isset($o['HasOCR'])) $this->HasOCR = $o['HasOCR'];
        if (isset($o['PolicyAssociateId'])) $this->PolicyAssociateId = $o['PolicyAssociateId'];
        if (isset($o['HasRequiredDocuments'])) $this->HasRequiredDocuments = $o['HasRequiredDocuments'];
        if (isset($o['Phone'])) $this->Phone = $o['Phone'];
        if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
        if (isset($o['ApprovedDate'])) $this->ApprovedDate = $o['ApprovedDate'];
        if (isset($o['ApprovedBy'])) $this->ApprovedBy = $o['ApprovedBy'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->FirstName)) $o['FirstName'] = $this->FirstName;
        if (isset($this->LastName)) $o['LastName'] = $this->LastName;
        if (isset($this->PolicyNumber)) $o['PolicyNumber'] = $this->PolicyNumber;
        if (isset($this->PolicyType)) $o['PolicyType'] = $this->PolicyType;
        if (isset($this->AppDate)) $o['AppDate'] = $this->AppDate;
        if (isset($this->AgentName)) $o['AgentName'] = $this->AgentName;
        if (isset($this->AgentID)) $o['AgentID'] = $this->AgentID;
        if (isset($this->SRAStartDate)) $o['SRAStartDate'] = $this->SRAStartDate;
        if (isset($this->Phase)) $o['Phase'] = $this->Phase;
        if (isset($this->ModalPremium)) $o['ModalPremium'] = $this->ModalPremium;
        if (isset($this->Frequency)) $o['Frequency'] = $this->Frequency;
        if (isset($this->AnnualPremium)) $o['AnnualPremium'] = $this->AnnualPremium;
        if (isset($this->District)) $o['District'] = $this->District;
        if (isset($this->SS)) $o['SS'] = $this->SS;
        if (isset($this->Carrier)) $o['Carrier'] = $this->Carrier;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->TPA)) $o['TPA'] = $this->TPA;
        if (isset($this->Flagged)) $o['Flagged'] = $this->Flagged;
        if (isset($this->Deleted)) $o['Deleted'] = $this->Deleted;
        if (isset($this->ModifiedBy)) $o['ModifiedBy'] = $this->ModifiedBy;
        if (isset($this->TransactionId)) $o['TransactionId'] = $this->TransactionId;
        if (isset($this->HasChange)) $o['HasChange'] = $this->HasChange;
        if (isset($this->HasConversation)) $o['HasConversation'] = $this->HasConversation;
        if (isset($this->HasAgentMsg)) $o['HasAgentMsg'] = $this->HasAgentMsg;
        if (isset($this->HasAdminMsg)) $o['HasAdminMsg'] = $this->HasAdminMsg;
        if (isset($this->Attachment)) $o['Attachment'] = JsonConverters::toArray('Attachment', $this->Attachment);
        if (isset($this->Reminder)) $o['Reminder'] = JsonConverters::toArray('Reminder', $this->Reminder);
        if (isset($this->Agents)) $o['Agents'] = $this->Agents;
        if (isset($this->HasOCR)) $o['HasOCR'] = $this->HasOCR;
        if (isset($this->PolicyAssociateId)) $o['PolicyAssociateId'] = $this->PolicyAssociateId;
        if (isset($this->HasRequiredDocuments)) $o['HasRequiredDocuments'] = $this->HasRequiredDocuments;
        if (isset($this->Phone)) $o['Phone'] = $this->Phone;
        if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
        if (isset($this->ApprovedDate)) $o['ApprovedDate'] = $this->ApprovedDate;
        if (isset($this->ApprovedBy)) $o['ApprovedBy'] = $this->ApprovedBy;
        return empty($o) ? new class(){} : $o;
    }
}

class SmartsheetsTransfer implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $ID=0,
        /** @var bool|null */
        public ?bool $Flagged=null,
        /** @var string|null */
        public ?string $Phase=null,
        /** @var string|null */
        public ?string $FirstName=null,
        /** @var string|null */
        public ?string $LastName=null,
        /** @var string|null */
        public ?string $PolicyNumber=null,
        /** @var string|null */
        public ?string $PolicyType=null,
        /** @var string|null */
        public ?string $AppDate=null,
        /** @var string|null */
        public ?string $AgentName=null,
        /** @var int|null */
        public ?int $AgentID=null,
        /** @var string|null */
        public ?string $RegionalOffice=null,
        /** @var string|null */
        public ?string $TransferAmount=null,
        /** @var string|null */
        public ?string $TransferringCompany=null,
        /** @var string|null */
        public ?string $AccountNumber=null,
        /** @var string|null */
        public ?string $SS=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var bool|null */
        public ?bool $Deleted=null,
        /** @var string|null */
        public ?string $ModifiedBy=null,
        /** @var string|null */
        public ?string $TransactionId=null,
        /** @var bool|null */
        public ?bool $HasChange=null,
        /** @var bool|null */
        public ?bool $HasConversation=null,
        /** @var bool|null */
        public ?bool $HasAgentMsg=null,
        /** @var bool|null */
        public ?bool $HasAdminMsg=null,
        /** @var array<Attachment>|null */
        public ?array $Attachment=null,
        /** @var array<Reminder>|null */
        public ?array $Reminder=null,
        /** @var string|null */
        public ?string $Agents=null,
        /** @var bool|null */
        public ?bool $HasOCR=null,
        /** @var string */
        public string $PolicyAssociateId='',
        /** @var bool|null */
        public ?bool $HasRequiredDocuments=null,
        /** @var string|null */
        public ?string $Phone=null,
        /** @var string|null */
        public ?string $EmailAddress=null,
        /** @var string|null */
        public ?string $ApprovedDate=null,
        /** @var string|null */
        public ?string $ApprovedBy=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Flagged'])) $this->Flagged = $o['Flagged'];
        if (isset($o['Phase'])) $this->Phase = $o['Phase'];
        if (isset($o['FirstName'])) $this->FirstName = $o['FirstName'];
        if (isset($o['LastName'])) $this->LastName = $o['LastName'];
        if (isset($o['PolicyNumber'])) $this->PolicyNumber = $o['PolicyNumber'];
        if (isset($o['PolicyType'])) $this->PolicyType = $o['PolicyType'];
        if (isset($o['AppDate'])) $this->AppDate = $o['AppDate'];
        if (isset($o['AgentName'])) $this->AgentName = $o['AgentName'];
        if (isset($o['AgentID'])) $this->AgentID = $o['AgentID'];
        if (isset($o['RegionalOffice'])) $this->RegionalOffice = $o['RegionalOffice'];
        if (isset($o['TransferAmount'])) $this->TransferAmount = $o['TransferAmount'];
        if (isset($o['TransferringCompany'])) $this->TransferringCompany = $o['TransferringCompany'];
        if (isset($o['AccountNumber'])) $this->AccountNumber = $o['AccountNumber'];
        if (isset($o['SS'])) $this->SS = $o['SS'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['Deleted'])) $this->Deleted = $o['Deleted'];
        if (isset($o['ModifiedBy'])) $this->ModifiedBy = $o['ModifiedBy'];
        if (isset($o['TransactionId'])) $this->TransactionId = $o['TransactionId'];
        if (isset($o['HasChange'])) $this->HasChange = $o['HasChange'];
        if (isset($o['HasConversation'])) $this->HasConversation = $o['HasConversation'];
        if (isset($o['HasAgentMsg'])) $this->HasAgentMsg = $o['HasAgentMsg'];
        if (isset($o['HasAdminMsg'])) $this->HasAdminMsg = $o['HasAdminMsg'];
        if (isset($o['Attachment'])) $this->Attachment = JsonConverters::fromArray('Attachment', $o['Attachment']);
        if (isset($o['Reminder'])) $this->Reminder = JsonConverters::fromArray('Reminder', $o['Reminder']);
        if (isset($o['Agents'])) $this->Agents = $o['Agents'];
        if (isset($o['HasOCR'])) $this->HasOCR = $o['HasOCR'];
        if (isset($o['PolicyAssociateId'])) $this->PolicyAssociateId = $o['PolicyAssociateId'];
        if (isset($o['HasRequiredDocuments'])) $this->HasRequiredDocuments = $o['HasRequiredDocuments'];
        if (isset($o['Phone'])) $this->Phone = $o['Phone'];
        if (isset($o['EmailAddress'])) $this->EmailAddress = $o['EmailAddress'];
        if (isset($o['ApprovedDate'])) $this->ApprovedDate = $o['ApprovedDate'];
        if (isset($o['ApprovedBy'])) $this->ApprovedBy = $o['ApprovedBy'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Flagged)) $o['Flagged'] = $this->Flagged;
        if (isset($this->Phase)) $o['Phase'] = $this->Phase;
        if (isset($this->FirstName)) $o['FirstName'] = $this->FirstName;
        if (isset($this->LastName)) $o['LastName'] = $this->LastName;
        if (isset($this->PolicyNumber)) $o['PolicyNumber'] = $this->PolicyNumber;
        if (isset($this->PolicyType)) $o['PolicyType'] = $this->PolicyType;
        if (isset($this->AppDate)) $o['AppDate'] = $this->AppDate;
        if (isset($this->AgentName)) $o['AgentName'] = $this->AgentName;
        if (isset($this->AgentID)) $o['AgentID'] = $this->AgentID;
        if (isset($this->RegionalOffice)) $o['RegionalOffice'] = $this->RegionalOffice;
        if (isset($this->TransferAmount)) $o['TransferAmount'] = $this->TransferAmount;
        if (isset($this->TransferringCompany)) $o['TransferringCompany'] = $this->TransferringCompany;
        if (isset($this->AccountNumber)) $o['AccountNumber'] = $this->AccountNumber;
        if (isset($this->SS)) $o['SS'] = $this->SS;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->Deleted)) $o['Deleted'] = $this->Deleted;
        if (isset($this->ModifiedBy)) $o['ModifiedBy'] = $this->ModifiedBy;
        if (isset($this->TransactionId)) $o['TransactionId'] = $this->TransactionId;
        if (isset($this->HasChange)) $o['HasChange'] = $this->HasChange;
        if (isset($this->HasConversation)) $o['HasConversation'] = $this->HasConversation;
        if (isset($this->HasAgentMsg)) $o['HasAgentMsg'] = $this->HasAgentMsg;
        if (isset($this->HasAdminMsg)) $o['HasAdminMsg'] = $this->HasAdminMsg;
        if (isset($this->Attachment)) $o['Attachment'] = JsonConverters::toArray('Attachment', $this->Attachment);
        if (isset($this->Reminder)) $o['Reminder'] = JsonConverters::toArray('Reminder', $this->Reminder);
        if (isset($this->Agents)) $o['Agents'] = $this->Agents;
        if (isset($this->HasOCR)) $o['HasOCR'] = $this->HasOCR;
        if (isset($this->PolicyAssociateId)) $o['PolicyAssociateId'] = $this->PolicyAssociateId;
        if (isset($this->HasRequiredDocuments)) $o['HasRequiredDocuments'] = $this->HasRequiredDocuments;
        if (isset($this->Phone)) $o['Phone'] = $this->Phone;
        if (isset($this->EmailAddress)) $o['EmailAddress'] = $this->EmailAddress;
        if (isset($this->ApprovedDate)) $o['ApprovedDate'] = $this->ApprovedDate;
        if (isset($this->ApprovedBy)) $o['ApprovedBy'] = $this->ApprovedBy;
        return empty($o) ? new class(){} : $o;
    }
}

class SmartsheetsIssuedClosed implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $Type=null,
        /** @var int */
        public int $ID=0,
        /** @var bool|null */
        public ?bool $Flagged=null,
        /** @var string|null */
        public ?string $Phase=null,
        /** @var string|null */
        public ?string $FirstName=null,
        /** @var string|null */
        public ?string $LastName=null,
        /** @var string|null */
        public ?string $PolicyNumber=null,
        /** @var string|null */
        public ?string $AgentName=null,
        /** @var string|null */
        public ?string $Notes=null,
        /** @var bool|null */
        public ?bool $Deleted=null,
        /** @var string|null */
        public ?string $ModifiedBy=null,
        /** @var bool|null */
        public ?bool $HasChange=null,
        /** @var bool|null */
        public ?bool $HasConversation=null,
        /** @var bool|null */
        public ?bool $HasAgentMsg=null,
        /** @var bool|null */
        public ?bool $HasAdminMsg=null,
        /** @var array<Attachment>|null */
        public ?array $Attachment=null,
        /** @var array<Reminder>|null */
        public ?array $Reminder=null,
        /** @var bool|null */
        public ?bool $HasOCR=null,
        /** @var string|null */
        public ?string $AppDate=null,
        /** @var string|null */
        public ?string $TransactionId=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['Type'])) $this->Type = $o['Type'];
        if (isset($o['ID'])) $this->ID = $o['ID'];
        if (isset($o['Flagged'])) $this->Flagged = $o['Flagged'];
        if (isset($o['Phase'])) $this->Phase = $o['Phase'];
        if (isset($o['FirstName'])) $this->FirstName = $o['FirstName'];
        if (isset($o['LastName'])) $this->LastName = $o['LastName'];
        if (isset($o['PolicyNumber'])) $this->PolicyNumber = $o['PolicyNumber'];
        if (isset($o['AgentName'])) $this->AgentName = $o['AgentName'];
        if (isset($o['Notes'])) $this->Notes = $o['Notes'];
        if (isset($o['Deleted'])) $this->Deleted = $o['Deleted'];
        if (isset($o['ModifiedBy'])) $this->ModifiedBy = $o['ModifiedBy'];
        if (isset($o['HasChange'])) $this->HasChange = $o['HasChange'];
        if (isset($o['HasConversation'])) $this->HasConversation = $o['HasConversation'];
        if (isset($o['HasAgentMsg'])) $this->HasAgentMsg = $o['HasAgentMsg'];
        if (isset($o['HasAdminMsg'])) $this->HasAdminMsg = $o['HasAdminMsg'];
        if (isset($o['Attachment'])) $this->Attachment = JsonConverters::fromArray('Attachment', $o['Attachment']);
        if (isset($o['Reminder'])) $this->Reminder = JsonConverters::fromArray('Reminder', $o['Reminder']);
        if (isset($o['HasOCR'])) $this->HasOCR = $o['HasOCR'];
        if (isset($o['AppDate'])) $this->AppDate = $o['AppDate'];
        if (isset($o['TransactionId'])) $this->TransactionId = $o['TransactionId'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->Type)) $o['Type'] = $this->Type;
        if (isset($this->ID)) $o['ID'] = $this->ID;
        if (isset($this->Flagged)) $o['Flagged'] = $this->Flagged;
        if (isset($this->Phase)) $o['Phase'] = $this->Phase;
        if (isset($this->FirstName)) $o['FirstName'] = $this->FirstName;
        if (isset($this->LastName)) $o['LastName'] = $this->LastName;
        if (isset($this->PolicyNumber)) $o['PolicyNumber'] = $this->PolicyNumber;
        if (isset($this->AgentName)) $o['AgentName'] = $this->AgentName;
        if (isset($this->Notes)) $o['Notes'] = $this->Notes;
        if (isset($this->Deleted)) $o['Deleted'] = $this->Deleted;
        if (isset($this->ModifiedBy)) $o['ModifiedBy'] = $this->ModifiedBy;
        if (isset($this->HasChange)) $o['HasChange'] = $this->HasChange;
        if (isset($this->HasConversation)) $o['HasConversation'] = $this->HasConversation;
        if (isset($this->HasAgentMsg)) $o['HasAgentMsg'] = $this->HasAgentMsg;
        if (isset($this->HasAdminMsg)) $o['HasAdminMsg'] = $this->HasAdminMsg;
        if (isset($this->Attachment)) $o['Attachment'] = JsonConverters::toArray('Attachment', $this->Attachment);
        if (isset($this->Reminder)) $o['Reminder'] = JsonConverters::toArray('Reminder', $this->Reminder);
        if (isset($this->HasOCR)) $o['HasOCR'] = $this->HasOCR;
        if (isset($this->AppDate)) $o['AppDate'] = $this->AppDate;
        if (isset($this->TransactionId)) $o['TransactionId'] = $this->TransactionId;
        return empty($o) ? new class(){} : $o;
    }
}

class SmartsheetsResponse implements JsonSerializable
{
    public function __construct(
        /** @var ResponseStatus|null */
        public ?ResponseStatus $ResponseStatus=null,
        /** @var array<SmartsheetsLife>|null */
        public ?array $Life=null,
        /** @var array<SmartsheetsFlow>|null */
        public ?array $Flow=null,
        /** @var array<SmartsheetsTransfer>|null */
        public ?array $Transfer=null,
        /** @var array<SmartsheetsIssuedClosed>|null */
        public ?array $IssuedClosed=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['ResponseStatus'])) $this->ResponseStatus = JsonConverters::from('ResponseStatus', $o['ResponseStatus']);
        if (isset($o['Life'])) $this->Life = JsonConverters::fromArray('SmartsheetsLife', $o['Life']);
        if (isset($o['Flow'])) $this->Flow = JsonConverters::fromArray('SmartsheetsFlow', $o['Flow']);
        if (isset($o['Transfer'])) $this->Transfer = JsonConverters::fromArray('SmartsheetsTransfer', $o['Transfer']);
        if (isset($o['IssuedClosed'])) $this->IssuedClosed = JsonConverters::fromArray('SmartsheetsIssuedClosed', $o['IssuedClosed']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->ResponseStatus)) $o['ResponseStatus'] = JsonConverters::to('ResponseStatus', $this->ResponseStatus);
        if (isset($this->Life)) $o['Life'] = JsonConverters::toArray('SmartsheetsLife', $this->Life);
        if (isset($this->Flow)) $o['Flow'] = JsonConverters::toArray('SmartsheetsFlow', $this->Flow);
        if (isset($this->Transfer)) $o['Transfer'] = JsonConverters::toArray('SmartsheetsTransfer', $this->Transfer);
        if (isset($this->IssuedClosed)) $o['IssuedClosed'] = JsonConverters::toArray('SmartsheetsIssuedClosed', $this->IssuedClosed);
        return empty($o) ? new class(){} : $o;
    }
}

class SmartsheetsRequest implements JsonSerializable
{
    public function __construct(
        /** @var int */
        public int $AgentID=0,
        /** @var string|null */
        public ?string $SheetType=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['AgentID'])) $this->AgentID = $o['AgentID'];
        if (isset($o['SheetType'])) $this->SheetType = $o['SheetType'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->AgentID)) $o['AgentID'] = $this->AgentID;
        if (isset($this->SheetType)) $o['SheetType'] = $this->SheetType;
        return empty($o) ? new class(){} : $o;
    }
}

PHP SmartsheetsRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /v1/Smartsheets/{AgentID} HTTP/1.1 
Host: api.dev.dynamics.trendsic.com 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	ResponseStatus: 
	{
		ErrorCode: String,
		Message: String,
		StackTrace: String,
		Errors: 
		[
			{
				ErrorCode: String,
				FieldName: String,
				Message: String,
				Meta: 
				{
					String: String
				}
			}
		],
		Meta: 
		{
			String: String
		}
	},
	Life: 
	[
		{
			ID: 0,
			FirstName: String,
			LastName: String,
			PolicyNumber: String,
			PolicyType: String,
			CPT: String,
			AppDate: String,
			AgentName: String,
			AgentID: 0,
			Phase: String,
			Notes: String,
			TransferAmount: String,
			AccountNumber: String,
			Deleted: False,
			ModifiedBy: String,
			Flagged: False,
			TransactionId: String,
			FaceValue: String,
			HasChange: False,
			HasConversation: False,
			HasAgentMsg: False,
			HasAdminMsg: False,
			Attachment: 
			[
				{
					AttachmentId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					AttachmentName: String,
					MimeType: String,
					AttachmentData: AA==,
					FileSizeInKB: 0,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					NeedsOCR: False,
					OCRDate: 0001-01-01,
					IsSecurities: False,
					AWSKey: String,
					PresignedUrl: String
				}
			],
			Reminder: 
			[
				{
					ReminderId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					ReminderDate: 0001-01-01,
					ReminderNote: String,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					CompletedDate: 0001-01-01
				}
			],
			Agents: String,
			HasOCR: False,
			PolicyAssociateId: 00000000000000000000000000000000,
			HasRequiredDocuments: False,
			Phone: String,
			EmailAddress: String,
			ApprovedDate: String,
			ApprovedBy: String
		}
	],
	Flow: 
	[
		{
			ID: 0,
			FirstName: String,
			LastName: String,
			PolicyNumber: String,
			PolicyType: String,
			AppDate: String,
			AgentName: String,
			AgentID: 0,
			SRAStartDate: String,
			Phase: String,
			ModalPremium: String,
			Frequency: String,
			AnnualPremium: String,
			District: String,
			SS: String,
			Carrier: String,
			Notes: String,
			TPA: String,
			Flagged: False,
			Deleted: False,
			ModifiedBy: String,
			TransactionId: String,
			HasChange: False,
			HasConversation: False,
			HasAgentMsg: False,
			HasAdminMsg: False,
			Attachment: 
			[
				{
					AttachmentId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					AttachmentName: String,
					MimeType: String,
					AttachmentData: AA==,
					FileSizeInKB: 0,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					NeedsOCR: False,
					OCRDate: 0001-01-01,
					IsSecurities: False,
					AWSKey: String,
					PresignedUrl: String
				}
			],
			Reminder: 
			[
				{
					ReminderId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					ReminderDate: 0001-01-01,
					ReminderNote: String,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					CompletedDate: 0001-01-01
				}
			],
			Agents: String,
			HasOCR: False,
			PolicyAssociateId: 00000000000000000000000000000000,
			HasRequiredDocuments: False,
			Phone: String,
			EmailAddress: String,
			ApprovedDate: String,
			ApprovedBy: String
		}
	],
	Transfer: 
	[
		{
			ID: 0,
			Flagged: False,
			Phase: String,
			FirstName: String,
			LastName: String,
			PolicyNumber: String,
			PolicyType: String,
			AppDate: String,
			AgentName: String,
			AgentID: 0,
			RegionalOffice: String,
			TransferAmount: String,
			TransferringCompany: String,
			AccountNumber: String,
			SS: String,
			Notes: String,
			Deleted: False,
			ModifiedBy: String,
			TransactionId: String,
			HasChange: False,
			HasConversation: False,
			HasAgentMsg: False,
			HasAdminMsg: False,
			Attachment: 
			[
				{
					AttachmentId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					AttachmentName: String,
					MimeType: String,
					AttachmentData: AA==,
					FileSizeInKB: 0,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					NeedsOCR: False,
					OCRDate: 0001-01-01,
					IsSecurities: False,
					AWSKey: String,
					PresignedUrl: String
				}
			],
			Reminder: 
			[
				{
					ReminderId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					ReminderDate: 0001-01-01,
					ReminderNote: String,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					CompletedDate: 0001-01-01
				}
			],
			Agents: String,
			HasOCR: False,
			PolicyAssociateId: 00000000000000000000000000000000,
			HasRequiredDocuments: False,
			Phone: String,
			EmailAddress: String,
			ApprovedDate: String,
			ApprovedBy: String
		}
	],
	IssuedClosed: 
	[
		{
			Type: String,
			ID: 0,
			Flagged: False,
			Phase: String,
			FirstName: String,
			LastName: String,
			PolicyNumber: String,
			AgentName: String,
			Notes: String,
			Deleted: False,
			ModifiedBy: String,
			HasChange: False,
			HasConversation: False,
			HasAgentMsg: False,
			HasAdminMsg: False,
			Attachment: 
			[
				{
					AttachmentId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					AttachmentName: String,
					MimeType: String,
					AttachmentData: AA==,
					FileSizeInKB: 0,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					NeedsOCR: False,
					OCRDate: 0001-01-01,
					IsSecurities: False,
					AWSKey: String,
					PresignedUrl: String
				}
			],
			Reminder: 
			[
				{
					ReminderId: 00000000000000000000000000000000,
					TableName: String,
					FieldName: String,
					RecordId: 0,
					ReminderDate: 0001-01-01,
					ReminderNote: String,
					CreatedDate: 0001-01-01,
					CreatedBy: String,
					CompletedDate: 0001-01-01
				}
			],
			HasOCR: False,
			AppDate: String,
			TransactionId: String
		}
	]
}