Evo Voice

<back to all web services

AppGetHomeInformation

Requires Authentication
The following routes are available for this service:
GET/portal/home
<?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};


enum MessageDirections : string
{
    case Incoming = 'Incoming';
    case Outgoing = 'Outgoing';
}

class MessageInfo implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $id=null,
        /** @var string|null */
        public ?string $accountId=null,
        /** @var string|null */
        public ?string $customerId=null,
        /** @var string|null */
        public ?string $endpointId=null,
        /** @var string|null */
        public ?string $endpointDisplayName=null,
        /** @var string|null */
        public ?string $date=null,
        /** @var MessageDirections|null */
        public ?MessageDirections $direction=null,
        /** @var string|null */
        public ?string $otherAddress=null,
        /** @var string|null */
        public ?string $sender=null,
        /** @var string|null */
        public ?string $text=null,
        /** @var bool|null */
        public ?bool $isUnread=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['customerId'])) $this->customerId = $o['customerId'];
        if (isset($o['endpointId'])) $this->endpointId = $o['endpointId'];
        if (isset($o['endpointDisplayName'])) $this->endpointDisplayName = $o['endpointDisplayName'];
        if (isset($o['date'])) $this->date = $o['date'];
        if (isset($o['direction'])) $this->direction = JsonConverters::from('MessageDirections', $o['direction']);
        if (isset($o['otherAddress'])) $this->otherAddress = $o['otherAddress'];
        if (isset($o['sender'])) $this->sender = $o['sender'];
        if (isset($o['text'])) $this->text = $o['text'];
        if (isset($o['isUnread'])) $this->isUnread = $o['isUnread'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->customerId)) $o['customerId'] = $this->customerId;
        if (isset($this->endpointId)) $o['endpointId'] = $this->endpointId;
        if (isset($this->endpointDisplayName)) $o['endpointDisplayName'] = $this->endpointDisplayName;
        if (isset($this->date)) $o['date'] = $this->date;
        if (isset($this->direction)) $o['direction'] = JsonConverters::to('MessageDirections', $this->direction);
        if (isset($this->otherAddress)) $o['otherAddress'] = $this->otherAddress;
        if (isset($this->sender)) $o['sender'] = $this->sender;
        if (isset($this->text)) $o['text'] = $this->text;
        if (isset($this->isUnread)) $o['isUnread'] = $this->isUnread;
        return empty($o) ? new class(){} : $o;
    }
}

class ConversationInfo implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $id=null,
        /** @var string|null */
        public ?string $endpointId=null,
        /** @var string|null */
        public ?string $otherAddress=null,
        /** @var MessageInfo|null */
        public ?MessageInfo $mostRecentMessage=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['endpointId'])) $this->endpointId = $o['endpointId'];
        if (isset($o['otherAddress'])) $this->otherAddress = $o['otherAddress'];
        if (isset($o['mostRecentMessage'])) $this->mostRecentMessage = JsonConverters::from('MessageInfo', $o['mostRecentMessage']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->endpointId)) $o['endpointId'] = $this->endpointId;
        if (isset($this->otherAddress)) $o['otherAddress'] = $this->otherAddress;
        if (isset($this->mostRecentMessage)) $o['mostRecentMessage'] = JsonConverters::to('MessageInfo', $this->mostRecentMessage);
        return empty($o) ? new class(){} : $o;
    }
}

class EntityInfo implements JsonSerializable
{
    public function __construct(
        /** @description The ID of the object */
        // @ApiMember(Description="The ID of the object")
        /** @var string|null */
        public ?string $id=null,

        /** @description The date the object was created */
        // @ApiMember(Description="The date the object was created")
        /** @var string|null */
        public ?string $dateCreated=null,

        /** @description The date the object was last modified */
        // @ApiMember(Description="The date the object was last modified")
        /** @var string|null */
        public ?string $dateLastModified=null,

        /** @description The user that created this object */
        // @ApiMember(Description="The user that created this object")
        /** @var string|null */
        public ?string $createdBy=null,

        /** @description The user that last modified this object */
        // @ApiMember(Description="The user that last modified this object")
        /** @var string|null */
        public ?string $lastModifiedBy=null
    ) {
    }

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

enum SessionDialState : string
{
    case None = 'None';
    case Active = 'Active';
}

enum SessionCallState : string
{
    case Disconnected = 'Disconnected';
    case Ringing = 'Ringing';
    case Connected = 'Connected';
    case Hold = 'Hold';
    case Passive = 'Passive';
}

enum SessionQueueStates : string
{
    case None = 'None';
    case Queued = 'Queued';
    case Ringing = 'Ringing';
    case Connected = 'Connected';
    case Hold = 'Hold';
    case Disconnected = 'Disconnected';
}

class CustomerBreadcrumb implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $id=null,
        /** @var string|null */
        public ?string $name=null
    ) {
    }

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

enum FlowChannels : string
{
    case Voice = 'Voice';
    case Chat = 'Chat';
    case Fax = 'Fax';
}

enum SessionHoldReasons : string
{
    case None = 'None';
    case Transferring = 'Transferring';
}

class SessionLogInfo implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $date=null,
        /** @var string|null */
        public ?string $message=null
    ) {
    }

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

enum SessionMemberCallState : string
{
    case None = 'None';
    case Ringing = 'Ringing';
    case Connected = 'Connected';
    case Hold = 'Hold';
}

enum SessionMemberRoles : string
{
    case None = 'None';
    case Caller = 'Caller';
    case Agent = 'Agent';
    case Transfer = 'Transfer';
}

class SessionMemberInfo implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $identity=null,
        /** @var string|null */
        public ?string $endpointId=null,
        /** @var string|null */
        public ?string $displayName=null,
        /** @var bool|null */
        public ?bool $isOriginalMember=null,
        /** @var string|null */
        public ?string $avatarUrl=null,
        /** @var array<string,string>|null */
        public ?array $applicationData=null,
        /** @var SessionMemberCallState|null */
        public ?SessionMemberCallState $callState=null,
        /** @var SessionMemberRoles|null */
        public ?SessionMemberRoles $role=null,
        /** @var string|null */
        public ?string $callSid=null,
        /** @var bool|null */
        public ?bool $muted=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['identity'])) $this->identity = $o['identity'];
        if (isset($o['endpointId'])) $this->endpointId = $o['endpointId'];
        if (isset($o['displayName'])) $this->displayName = $o['displayName'];
        if (isset($o['isOriginalMember'])) $this->isOriginalMember = $o['isOriginalMember'];
        if (isset($o['avatarUrl'])) $this->avatarUrl = $o['avatarUrl'];
        if (isset($o['applicationData'])) $this->applicationData = JsonConverters::from(JsonConverters::context('Dictionary',genericArgs:['string','string']), $o['applicationData']);
        if (isset($o['callState'])) $this->callState = JsonConverters::from('SessionMemberCallState', $o['callState']);
        if (isset($o['role'])) $this->role = JsonConverters::from('SessionMemberRoles', $o['role']);
        if (isset($o['callSid'])) $this->callSid = $o['callSid'];
        if (isset($o['muted'])) $this->muted = $o['muted'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->identity)) $o['identity'] = $this->identity;
        if (isset($this->endpointId)) $o['endpointId'] = $this->endpointId;
        if (isset($this->displayName)) $o['displayName'] = $this->displayName;
        if (isset($this->isOriginalMember)) $o['isOriginalMember'] = $this->isOriginalMember;
        if (isset($this->avatarUrl)) $o['avatarUrl'] = $this->avatarUrl;
        if (isset($this->applicationData)) $o['applicationData'] = JsonConverters::to(JsonConverters::context('Dictionary',genericArgs:['string','string']), $this->applicationData);
        if (isset($this->callState)) $o['callState'] = JsonConverters::to('SessionMemberCallState', $this->callState);
        if (isset($this->role)) $o['role'] = JsonConverters::to('SessionMemberRoles', $this->role);
        if (isset($this->callSid)) $o['callSid'] = $this->callSid;
        if (isset($this->muted)) $o['muted'] = $this->muted;
        return empty($o) ? new class(){} : $o;
    }
}

enum SessionDirections : string
{
    case Incoming = 'Incoming';
    case Outgoing = 'Outgoing';
}

class SessionInfo extends EntityInfo implements JsonSerializable
{
    /**
     * @param string|null $id
     * @param string|null $dateCreated
     * @param string|null $dateLastModified
     * @param string|null $createdBy
     * @param string|null $lastModifiedBy
     */
    public function __construct(
        ?string $id=null,
        ?string $dateCreated=null,
        ?string $dateLastModified=null,
        ?string $createdBy=null,
        ?string $lastModifiedBy=null,
        /** @description The state of the session */
        // @ApiMember(Description="The state of the session")
        /** @var SessionDialState|null */
        public ?SessionDialState $dialState=null,

        /** @description The call state of the session */
        // @ApiMember(Description="The call state of the session")
        /** @var SessionCallState|null */
        public ?SessionCallState $callState=null,

        /** @description The queue state of the session */
        // @ApiMember(Description="The queue state of the session")
        /** @var SessionQueueStates|null */
        public ?SessionQueueStates $queueState=null,

        /** @description The ID of the account associated with the flow */
        // @ApiMember(Description="The ID of the account associated with the flow")
        /** @var string|null */
        public ?string $accountId=null,

        /** @description The name of the account associated with the session */
        // @ApiMember(Description="The name of the account associated with the session")
        /** @var string|null */
        public ?string $accountName=null,

        /** @description The ID of the customer this session is associated with */
        // @ApiMember(Description="The ID of the customer this session is associated with")
        /** @var string|null */
        public ?string $customerId=null,

        /** @description The customer breadcrumb this session is associated with */
        // @ApiMember(Description="The customer breadcrumb this session is associated with")
        /** @var array<CustomerBreadcrumb>|null */
        public ?array $customerBreadcrumb=null,

        /** @description The name of the customer this session is associated with */
        // @ApiMember(Description="The name of the customer this session is associated with")
        /** @var string|null */
        public ?string $customerName=null,

        /** @description The ID of the endpoint associated with this session */
        // @ApiMember(Description="The ID of the endpoint associated with this session")
        /** @var string|null */
        public ?string $endpointId=null,

        /** @description The name of the endpoint associated with this session */
        // @ApiMember(Description="The name of the endpoint associated with this session")
        /** @var string|null */
        public ?string $endpointName=null,

        /** @description The date the call completed */
        // @ApiMember(Description="The date the call completed")
        /** @var string|null */
        public ?string $dateCompleted=null,

        /** @description The destination of the session (e.g. what was entered into the Dial box) */
        // @ApiMember(Description="The destination of the session (e.g. what was entered into the Dial box)")
        /** @var string|null */
        public ?string $destination=null,

        /** @description The to address if any */
        // @ApiMember(Description="The to address if any")
        /** @var string|null */
        public ?string $toAddress=null,

        /** @description The from address if any */
        // @ApiMember(Description="The from address if any")
        /** @var string|null */
        public ?string $fromAddress=null,

        /** @description The from name if any */
        // @ApiMember(Description="The from name if any")
        /** @var string|null */
        public ?string $fromName=null,

        /** @description Answered by name (if any) */
        // @ApiMember(Description="Answered by name (if any)")
        /** @var string|null */
        public ?string $answeredByName=null,

        /** @description The ID of the queue member assigned to this call */
        // @ApiMember(Description="The ID of the queue member assigned to this call")
        /** @var string|null */
        public ?string $queueMemberId=null,

        /** @description The flow channel */
        // @ApiMember(Description="The flow channel")
        /** @var FlowChannels|null */
        public ?FlowChannels $channel=null,

        /** @description Has the session ended */
        // @ApiMember(Description="Has the session ended")
        /** @var bool|null */
        public ?bool $ended=null,

        /** @description The outcome of the call */
        // @ApiMember(Description="The outcome of the call")
        /** @var string|null */
        public ?string $outcome=null,

        /** @description The twilio Call SID of this session */
        // @ApiMember(Description="The twilio Call SID of this session")
        /** @var string|null */
        public ?string $callSid=null,

        /** @description Any console data for this session */
        // @ApiMember(Description="Any console data for this session")
        /** @var string|null */
        public ?string $consoleData=null,

        /** @description The name of the hold queue for this call */
        // @ApiMember(Description="The name of the hold queue for this call")
        /** @var string|null */
        public ?string $holdQueueName=null,

        /** @description The user ID who put this call on hold */
        // @ApiMember(Description="The user ID who put this call on hold")
        /** @var string|null */
        public ?string $heldByUserId=null,

        /** @description The reason for the hold */
        // @ApiMember(Description="The reason for the hold")
        /** @var SessionHoldReasons|null */
        public ?SessionHoldReasons $holdReason=null,

        /** @description The SID of the conference if in a conference call */
        // @ApiMember(Description="The SID of the conference if in a conference call")
        /** @var string|null */
        public ?string $conferenceSid=null,

        /** @description The display name for this session */
        // @ApiMember(Description="The display name for this session")
        /** @var string|null */
        public ?string $displayName=null,

        /** @description The log entries for this session */
        // @ApiMember(Description="The log entries for this session")
        /** @var array<SessionLogInfo>|null */
        public ?array $log=null,

        /** @description The members of this session */
        // @ApiMember(Description="The members of this session")
        /** @var array<SessionMemberInfo>|null */
        public ?array $members=null,

        /** @description The callback number (typically used for SIP to User calls) */
        // @ApiMember(Description="The callback number (typically used for SIP to User calls)")
        /** @var string|null */
        public ?string $callbackNumber=null,

        /** @description The ID of the endpoint that answered */
        // @ApiMember(Description="The ID of the endpoint that answered")
        /** @var string|null */
        public ?string $answeredById=null,

        /** @description Is this session incoming or outgoing? */
        // @ApiMember(Description="Is this session incoming or outgoing?")
        /** @var SessionDirections|null */
        public ?SessionDirections $direction=null,

        /** @description The phone number that this session is coming from (used with SMS chats) */
        // @ApiMember(Description="The phone number that this session is coming from (used with SMS chats)")
        /** @var string|null */
        public ?string $fromPhoneNumber=null,

        /** @description The Call SID of the most recently added conference participant */
        // @ApiMember(Description="The Call SID of the most recently added conference participant")
        /** @var string|null */
        public ?string $mostRecentParticipantCallSid=null,

        /** @description Was this session missed? */
        // @ApiMember(Description="Was this session missed?")
        /** @var bool|null */
        public ?bool $wasMissed=null,

        /** @description The ring queue that the call is currently in */
        // @ApiMember(Description="The ring queue that the call is currently in")
        /** @var string|null */
        public ?string $ringQueueId=null
    ) {
        parent::__construct($id,$dateCreated,$dateLastModified,$createdBy,$lastModifiedBy);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['dialState'])) $this->dialState = JsonConverters::from('SessionDialState', $o['dialState']);
        if (isset($o['callState'])) $this->callState = JsonConverters::from('SessionCallState', $o['callState']);
        if (isset($o['queueState'])) $this->queueState = JsonConverters::from('SessionQueueStates', $o['queueState']);
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['accountName'])) $this->accountName = $o['accountName'];
        if (isset($o['customerId'])) $this->customerId = $o['customerId'];
        if (isset($o['customerBreadcrumb'])) $this->customerBreadcrumb = JsonConverters::fromArray('CustomerBreadcrumb', $o['customerBreadcrumb']);
        if (isset($o['customerName'])) $this->customerName = $o['customerName'];
        if (isset($o['endpointId'])) $this->endpointId = $o['endpointId'];
        if (isset($o['endpointName'])) $this->endpointName = $o['endpointName'];
        if (isset($o['dateCompleted'])) $this->dateCompleted = $o['dateCompleted'];
        if (isset($o['destination'])) $this->destination = $o['destination'];
        if (isset($o['toAddress'])) $this->toAddress = $o['toAddress'];
        if (isset($o['fromAddress'])) $this->fromAddress = $o['fromAddress'];
        if (isset($o['fromName'])) $this->fromName = $o['fromName'];
        if (isset($o['answeredByName'])) $this->answeredByName = $o['answeredByName'];
        if (isset($o['queueMemberId'])) $this->queueMemberId = $o['queueMemberId'];
        if (isset($o['channel'])) $this->channel = JsonConverters::from('FlowChannels', $o['channel']);
        if (isset($o['ended'])) $this->ended = $o['ended'];
        if (isset($o['outcome'])) $this->outcome = $o['outcome'];
        if (isset($o['callSid'])) $this->callSid = $o['callSid'];
        if (isset($o['consoleData'])) $this->consoleData = $o['consoleData'];
        if (isset($o['holdQueueName'])) $this->holdQueueName = $o['holdQueueName'];
        if (isset($o['heldByUserId'])) $this->heldByUserId = $o['heldByUserId'];
        if (isset($o['holdReason'])) $this->holdReason = JsonConverters::from('SessionHoldReasons', $o['holdReason']);
        if (isset($o['conferenceSid'])) $this->conferenceSid = $o['conferenceSid'];
        if (isset($o['displayName'])) $this->displayName = $o['displayName'];
        if (isset($o['log'])) $this->log = JsonConverters::fromArray('SessionLogInfo', $o['log']);
        if (isset($o['members'])) $this->members = JsonConverters::fromArray('SessionMemberInfo', $o['members']);
        if (isset($o['callbackNumber'])) $this->callbackNumber = $o['callbackNumber'];
        if (isset($o['answeredById'])) $this->answeredById = $o['answeredById'];
        if (isset($o['direction'])) $this->direction = JsonConverters::from('SessionDirections', $o['direction']);
        if (isset($o['fromPhoneNumber'])) $this->fromPhoneNumber = $o['fromPhoneNumber'];
        if (isset($o['mostRecentParticipantCallSid'])) $this->mostRecentParticipantCallSid = $o['mostRecentParticipantCallSid'];
        if (isset($o['wasMissed'])) $this->wasMissed = $o['wasMissed'];
        if (isset($o['ringQueueId'])) $this->ringQueueId = $o['ringQueueId'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->dialState)) $o['dialState'] = JsonConverters::to('SessionDialState', $this->dialState);
        if (isset($this->callState)) $o['callState'] = JsonConverters::to('SessionCallState', $this->callState);
        if (isset($this->queueState)) $o['queueState'] = JsonConverters::to('SessionQueueStates', $this->queueState);
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->accountName)) $o['accountName'] = $this->accountName;
        if (isset($this->customerId)) $o['customerId'] = $this->customerId;
        if (isset($this->customerBreadcrumb)) $o['customerBreadcrumb'] = JsonConverters::toArray('CustomerBreadcrumb', $this->customerBreadcrumb);
        if (isset($this->customerName)) $o['customerName'] = $this->customerName;
        if (isset($this->endpointId)) $o['endpointId'] = $this->endpointId;
        if (isset($this->endpointName)) $o['endpointName'] = $this->endpointName;
        if (isset($this->dateCompleted)) $o['dateCompleted'] = $this->dateCompleted;
        if (isset($this->destination)) $o['destination'] = $this->destination;
        if (isset($this->toAddress)) $o['toAddress'] = $this->toAddress;
        if (isset($this->fromAddress)) $o['fromAddress'] = $this->fromAddress;
        if (isset($this->fromName)) $o['fromName'] = $this->fromName;
        if (isset($this->answeredByName)) $o['answeredByName'] = $this->answeredByName;
        if (isset($this->queueMemberId)) $o['queueMemberId'] = $this->queueMemberId;
        if (isset($this->channel)) $o['channel'] = JsonConverters::to('FlowChannels', $this->channel);
        if (isset($this->ended)) $o['ended'] = $this->ended;
        if (isset($this->outcome)) $o['outcome'] = $this->outcome;
        if (isset($this->callSid)) $o['callSid'] = $this->callSid;
        if (isset($this->consoleData)) $o['consoleData'] = $this->consoleData;
        if (isset($this->holdQueueName)) $o['holdQueueName'] = $this->holdQueueName;
        if (isset($this->heldByUserId)) $o['heldByUserId'] = $this->heldByUserId;
        if (isset($this->holdReason)) $o['holdReason'] = JsonConverters::to('SessionHoldReasons', $this->holdReason);
        if (isset($this->conferenceSid)) $o['conferenceSid'] = $this->conferenceSid;
        if (isset($this->displayName)) $o['displayName'] = $this->displayName;
        if (isset($this->log)) $o['log'] = JsonConverters::toArray('SessionLogInfo', $this->log);
        if (isset($this->members)) $o['members'] = JsonConverters::toArray('SessionMemberInfo', $this->members);
        if (isset($this->callbackNumber)) $o['callbackNumber'] = $this->callbackNumber;
        if (isset($this->answeredById)) $o['answeredById'] = $this->answeredById;
        if (isset($this->direction)) $o['direction'] = JsonConverters::to('SessionDirections', $this->direction);
        if (isset($this->fromPhoneNumber)) $o['fromPhoneNumber'] = $this->fromPhoneNumber;
        if (isset($this->mostRecentParticipantCallSid)) $o['mostRecentParticipantCallSid'] = $this->mostRecentParticipantCallSid;
        if (isset($this->wasMissed)) $o['wasMissed'] = $this->wasMissed;
        if (isset($this->ringQueueId)) $o['ringQueueId'] = $this->ringQueueId;
        return empty($o) ? new class(){} : $o;
    }
}

class AppHomeCallMetric implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $metricKey=null,
        /** @var float */
        public float $total=0.0,
        /** @var float */
        public float $average=0.0
    ) {
    }

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

enum FileTypes : string
{
    case Upload = 'Upload';
    case VoiceMessage = 'VoiceMessage';
    case CallRecording = 'CallRecording';
    case Fax = 'Fax';
    case Attachment = 'Attachment';
    case FaxOutgoing = 'FaxOutgoing';
}

class FileInfo extends EntityInfo implements JsonSerializable
{
    /**
     * @param string|null $id
     * @param string|null $dateCreated
     * @param string|null $dateLastModified
     * @param string|null $createdBy
     * @param string|null $lastModifiedBy
     */
    public function __construct(
        ?string $id=null,
        ?string $dateCreated=null,
        ?string $dateLastModified=null,
        ?string $createdBy=null,
        ?string $lastModifiedBy=null,
        /** @description The type of file this is */
        // @ApiMember(Description="The type of file this is")
        /** @var FileTypes|null */
        public ?FileTypes $type=null,

        /** @description The account ID this file is associated with */
        // @ApiMember(Description="The account ID this file is associated with")
        /** @var string|null */
        public ?string $accountId=null,

        /** @description The name of the account this file is associated with */
        // @ApiMember(Description="The name of the account this file is associated with")
        /** @var string|null */
        public ?string $accountName=null,

        /** @description The ID of the customer this file is associated with */
        // @ApiMember(Description="The ID of the customer this file is associated with")
        /** @var string|null */
        public ?string $customerId=null,

        /** @description The name of the customer this file is associated with */
        // @ApiMember(Description="The name of the customer this file is associated with")
        /** @var string|null */
        public ?string $customerName=null,

        /** @description The breadcrumb to the customer for this file */
        // @ApiMember(Description="The breadcrumb to the customer for this file")
        /** @var array<CustomerBreadcrumb>|null */
        public ?array $customerBreadcrumb=null,

        /** @description The ID of the user this file is assocaited with */
        // @ApiMember(Description="The ID of the user this file is assocaited with")
        /** @var string|null */
        public ?string $userId=null,

        /** @description The name of the user this file is associated with */
        // @ApiMember(Description="The name of the user this file is associated with")
        /** @var string|null */
        public ?string $userName=null,

        /** @description The original file name for the file */
        // @ApiMember(Description="The original file name for the file")
        /** @var string|null */
        public ?string $fileName=null,

        /** @description The URI of the file */
        // @ApiMember(Description="The URI of the file")
        /** @var string|null */
        public ?string $uri=null,

        /** @description The Content type of the file */
        // @ApiMember(Description="The Content type of the file")
        /** @var string|null */
        public ?string $contentType=null,

        /** @description The size of the file */
        // @ApiMember(Description="The size of the file")
        /** @var int */
        public int $contentLength=0,

        /** @description The Twilio ID of the recording */
        // @ApiMember(Description="The Twilio ID of the recording")
        /** @var string|null */
        public ?string $recordingSid=null,

        /** @description The duration of the recording in seconds */
        // @ApiMember(Description="The duration of the recording in seconds")
        /** @var int */
        public int $recordingDuration=0,

        /** @description Who is the recording from? */
        // @ApiMember(Description="Who is the recording from?")
        /** @var string|null */
        public ?string $recordingFrom=null,

        /** @description Transcription (if available) */
        // @ApiMember(Description="Transcription (if available)")
        /** @var string|null */
        public ?string $transcription=null,

        /** @description From Address (e.g. caller ID) for incoming calls */
        // @ApiMember(Description="From Address (e.g. caller ID) for incoming calls")
        /** @var string|null */
        public ?string $fromAddress=null,

        /** @description To Address (e.g. dialed number) for outgoing calls */
        // @ApiMember(Description="To Address (e.g. dialed number) for outgoing calls")
        /** @var string|null */
        public ?string $toAddress=null,

        /** @description The AI transcription for this call */
        // @ApiMember(Description="The AI transcription for this call")
        /** @var string|null */
        public ?string $aiTranscription=null
    ) {
        parent::__construct($id,$dateCreated,$dateLastModified,$createdBy,$lastModifiedBy);
    }

    /** @throws Exception */
    public function fromMap($o): void {
        parent::fromMap($o);
        if (isset($o['type'])) $this->type = JsonConverters::from('FileTypes', $o['type']);
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['accountName'])) $this->accountName = $o['accountName'];
        if (isset($o['customerId'])) $this->customerId = $o['customerId'];
        if (isset($o['customerName'])) $this->customerName = $o['customerName'];
        if (isset($o['customerBreadcrumb'])) $this->customerBreadcrumb = JsonConverters::fromArray('CustomerBreadcrumb', $o['customerBreadcrumb']);
        if (isset($o['userId'])) $this->userId = $o['userId'];
        if (isset($o['userName'])) $this->userName = $o['userName'];
        if (isset($o['fileName'])) $this->fileName = $o['fileName'];
        if (isset($o['uri'])) $this->uri = $o['uri'];
        if (isset($o['contentType'])) $this->contentType = $o['contentType'];
        if (isset($o['contentLength'])) $this->contentLength = $o['contentLength'];
        if (isset($o['recordingSid'])) $this->recordingSid = $o['recordingSid'];
        if (isset($o['recordingDuration'])) $this->recordingDuration = $o['recordingDuration'];
        if (isset($o['recordingFrom'])) $this->recordingFrom = $o['recordingFrom'];
        if (isset($o['transcription'])) $this->transcription = $o['transcription'];
        if (isset($o['fromAddress'])) $this->fromAddress = $o['fromAddress'];
        if (isset($o['toAddress'])) $this->toAddress = $o['toAddress'];
        if (isset($o['aiTranscription'])) $this->aiTranscription = $o['aiTranscription'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = parent::jsonSerialize();
        if (isset($this->type)) $o['type'] = JsonConverters::to('FileTypes', $this->type);
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->accountName)) $o['accountName'] = $this->accountName;
        if (isset($this->customerId)) $o['customerId'] = $this->customerId;
        if (isset($this->customerName)) $o['customerName'] = $this->customerName;
        if (isset($this->customerBreadcrumb)) $o['customerBreadcrumb'] = JsonConverters::toArray('CustomerBreadcrumb', $this->customerBreadcrumb);
        if (isset($this->userId)) $o['userId'] = $this->userId;
        if (isset($this->userName)) $o['userName'] = $this->userName;
        if (isset($this->fileName)) $o['fileName'] = $this->fileName;
        if (isset($this->uri)) $o['uri'] = $this->uri;
        if (isset($this->contentType)) $o['contentType'] = $this->contentType;
        if (isset($this->contentLength)) $o['contentLength'] = $this->contentLength;
        if (isset($this->recordingSid)) $o['recordingSid'] = $this->recordingSid;
        if (isset($this->recordingDuration)) $o['recordingDuration'] = $this->recordingDuration;
        if (isset($this->recordingFrom)) $o['recordingFrom'] = $this->recordingFrom;
        if (isset($this->transcription)) $o['transcription'] = $this->transcription;
        if (isset($this->fromAddress)) $o['fromAddress'] = $this->fromAddress;
        if (isset($this->toAddress)) $o['toAddress'] = $this->toAddress;
        if (isset($this->aiTranscription)) $o['aiTranscription'] = $this->aiTranscription;
        return empty($o) ? new class(){} : $o;
    }
}

class HostedSuiteCompletedFormField implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $name=null,
        /** @var array<string>|null */
        public ?array $values=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['values'])) $this->values = JsonConverters::fromArray('string', $o['values']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->values)) $o['values'] = JsonConverters::toArray('string', $this->values);
        return empty($o) ? new class(){} : $o;
    }
}

class HostedSuiteCompletedForm implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $id=null,
        /** @var string|null */
        public ?string $name=null,
        /** @var string|null */
        public ?string $dateCreated=null,
        /** @var string|null */
        public ?string $dateCompleted=null,
        /** @var string|null */
        public ?string $formId=null,
        /** @var string|null */
        public ?string $formName=null,
        /** @var string|null */
        public ?string $clientId=null,
        /** @var string|null */
        public ?string $clientName=null,
        /** @var string|null */
        public ?string $contactId=null,
        /** @var string|null */
        public ?string $contactName=null,
        /** @var array<string>|null */
        public ?array $contactsIds=null,
        /** @var array<string>|null */
        public ?array $contactsNames=null,
        /** @var string|null */
        public ?string $emailSubject=null,
        /** @var string|null */
        public ?string $callerNumber=null,
        /** @var array<HostedSuiteCompletedFormField>|null */
        public ?array $fields=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['id'])) $this->id = $o['id'];
        if (isset($o['name'])) $this->name = $o['name'];
        if (isset($o['dateCreated'])) $this->dateCreated = $o['dateCreated'];
        if (isset($o['dateCompleted'])) $this->dateCompleted = $o['dateCompleted'];
        if (isset($o['formId'])) $this->formId = $o['formId'];
        if (isset($o['formName'])) $this->formName = $o['formName'];
        if (isset($o['clientId'])) $this->clientId = $o['clientId'];
        if (isset($o['clientName'])) $this->clientName = $o['clientName'];
        if (isset($o['contactId'])) $this->contactId = $o['contactId'];
        if (isset($o['contactName'])) $this->contactName = $o['contactName'];
        if (isset($o['contactsIds'])) $this->contactsIds = JsonConverters::fromArray('string', $o['contactsIds']);
        if (isset($o['contactsNames'])) $this->contactsNames = JsonConverters::fromArray('string', $o['contactsNames']);
        if (isset($o['emailSubject'])) $this->emailSubject = $o['emailSubject'];
        if (isset($o['callerNumber'])) $this->callerNumber = $o['callerNumber'];
        if (isset($o['fields'])) $this->fields = JsonConverters::fromArray('HostedSuiteCompletedFormField', $o['fields']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->id)) $o['id'] = $this->id;
        if (isset($this->name)) $o['name'] = $this->name;
        if (isset($this->dateCreated)) $o['dateCreated'] = $this->dateCreated;
        if (isset($this->dateCompleted)) $o['dateCompleted'] = $this->dateCompleted;
        if (isset($this->formId)) $o['formId'] = $this->formId;
        if (isset($this->formName)) $o['formName'] = $this->formName;
        if (isset($this->clientId)) $o['clientId'] = $this->clientId;
        if (isset($this->clientName)) $o['clientName'] = $this->clientName;
        if (isset($this->contactId)) $o['contactId'] = $this->contactId;
        if (isset($this->contactName)) $o['contactName'] = $this->contactName;
        if (isset($this->contactsIds)) $o['contactsIds'] = JsonConverters::toArray('string', $this->contactsIds);
        if (isset($this->contactsNames)) $o['contactsNames'] = JsonConverters::toArray('string', $this->contactsNames);
        if (isset($this->emailSubject)) $o['emailSubject'] = $this->emailSubject;
        if (isset($this->callerNumber)) $o['callerNumber'] = $this->callerNumber;
        if (isset($this->fields)) $o['fields'] = JsonConverters::toArray('HostedSuiteCompletedFormField', $this->fields);
        return empty($o) ? new class(){} : $o;
    }
}

class AppHomeInformation implements JsonSerializable
{
    public function __construct(
        /** @var bool|null */
        public ?bool $isHostedSuiteCustomer=null,
        /** @var array<ConversationInfo>|null */
        public ?array $conversations=null,
        /** @var array<SessionInfo>|null */
        public ?array $calls=null,
        /** @var array<AppHomeCallMetric>|null */
        public ?array $callMetrics=null,
        /** @var array<FileInfo>|null */
        public ?array $voicemail=null,
        /** @var array<HostedSuiteCompletedForm>|null */
        public ?array $forms=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['isHostedSuiteCustomer'])) $this->isHostedSuiteCustomer = $o['isHostedSuiteCustomer'];
        if (isset($o['conversations'])) $this->conversations = JsonConverters::fromArray('ConversationInfo', $o['conversations']);
        if (isset($o['calls'])) $this->calls = JsonConverters::fromArray('SessionInfo', $o['calls']);
        if (isset($o['callMetrics'])) $this->callMetrics = JsonConverters::fromArray('AppHomeCallMetric', $o['callMetrics']);
        if (isset($o['voicemail'])) $this->voicemail = JsonConverters::fromArray('FileInfo', $o['voicemail']);
        if (isset($o['forms'])) $this->forms = JsonConverters::fromArray('HostedSuiteCompletedForm', $o['forms']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->isHostedSuiteCustomer)) $o['isHostedSuiteCustomer'] = $this->isHostedSuiteCustomer;
        if (isset($this->conversations)) $o['conversations'] = JsonConverters::toArray('ConversationInfo', $this->conversations);
        if (isset($this->calls)) $o['calls'] = JsonConverters::toArray('SessionInfo', $this->calls);
        if (isset($this->callMetrics)) $o['callMetrics'] = JsonConverters::toArray('AppHomeCallMetric', $this->callMetrics);
        if (isset($this->voicemail)) $o['voicemail'] = JsonConverters::toArray('FileInfo', $this->voicemail);
        if (isset($this->forms)) $o['forms'] = JsonConverters::toArray('HostedSuiteCompletedForm', $this->forms);
        return empty($o) ? new class(){} : $o;
    }
}

class AppGetHomeInformation implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $accountId=null,
        /** @var string|null */
        public ?string $customerId=null,
        /** @var string|null */
        public ?string $fromDate=null
    ) {
    }

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

PHP AppGetHomeInformation DTOs

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

HTTP + XML

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

GET /portal/home HTTP/1.1 
Host: team.evovoice.io 
Accept: application/xml
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<AppHomeInformation xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Portal">
  <CallMetrics>
    <AppHomeCallMetric>
      <Average>0</Average>
      <MetricKey>String</MetricKey>
      <Total>0</Total>
    </AppHomeCallMetric>
  </CallMetrics>
  <Calls xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Sessions">
    <d2p1:SessionInfo>
      <CreatedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</CreatedBy>
      <DateCreated xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateCreated>
      <DateLastModified xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateLastModified>
      <Id xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</Id>
      <LastModifiedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</LastModifiedBy>
      <d2p1:AccountId>String</d2p1:AccountId>
      <d2p1:AccountName>String</d2p1:AccountName>
      <d2p1:AnsweredById>String</d2p1:AnsweredById>
      <d2p1:AnsweredByName>String</d2p1:AnsweredByName>
      <d2p1:CallSid>String</d2p1:CallSid>
      <d2p1:CallState>Disconnected</d2p1:CallState>
      <d2p1:CallbackNumber>String</d2p1:CallbackNumber>
      <d2p1:Channel>Voice</d2p1:Channel>
      <d2p1:ConferenceSid>String</d2p1:ConferenceSid>
      <d2p1:ConsoleData>String</d2p1:ConsoleData>
      <d2p1:CustomerBreadcrumb xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Customers">
        <d4p1:CustomerBreadcrumb>
          <d4p1:Id>String</d4p1:Id>
          <d4p1:Name>String</d4p1:Name>
        </d4p1:CustomerBreadcrumb>
      </d2p1:CustomerBreadcrumb>
      <d2p1:CustomerId>String</d2p1:CustomerId>
      <d2p1:CustomerName>String</d2p1:CustomerName>
      <d2p1:DateCompleted>String</d2p1:DateCompleted>
      <d2p1:Destination>String</d2p1:Destination>
      <d2p1:DialState>None</d2p1:DialState>
      <d2p1:Direction>Incoming</d2p1:Direction>
      <d2p1:DisplayName>String</d2p1:DisplayName>
      <d2p1:Ended>false</d2p1:Ended>
      <d2p1:EndpointId>String</d2p1:EndpointId>
      <d2p1:EndpointName>String</d2p1:EndpointName>
      <d2p1:FromAddress>String</d2p1:FromAddress>
      <d2p1:FromName>String</d2p1:FromName>
      <d2p1:FromPhoneNumber>String</d2p1:FromPhoneNumber>
      <d2p1:HeldByUserId>String</d2p1:HeldByUserId>
      <d2p1:HoldQueueName>String</d2p1:HoldQueueName>
      <d2p1:HoldReason>None</d2p1:HoldReason>
      <d2p1:Log>
        <d2p1:SessionLogInfo>
          <d2p1:Date>String</d2p1:Date>
          <d2p1:Message>String</d2p1:Message>
        </d2p1:SessionLogInfo>
      </d2p1:Log>
      <d2p1:Members>
        <d2p1:SessionMemberInfo>
          <d2p1:ApplicationData xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d6p1:KeyValueOfstringstring>
              <d6p1:Key>String</d6p1:Key>
              <d6p1:Value>String</d6p1:Value>
            </d6p1:KeyValueOfstringstring>
          </d2p1:ApplicationData>
          <d2p1:AvatarUrl>String</d2p1:AvatarUrl>
          <d2p1:CallSid>String</d2p1:CallSid>
          <d2p1:CallState>None</d2p1:CallState>
          <d2p1:DisplayName>String</d2p1:DisplayName>
          <d2p1:EndpointId>String</d2p1:EndpointId>
          <d2p1:Identity>String</d2p1:Identity>
          <d2p1:IsOriginalMember>false</d2p1:IsOriginalMember>
          <d2p1:Muted>false</d2p1:Muted>
          <d2p1:Role>None</d2p1:Role>
        </d2p1:SessionMemberInfo>
      </d2p1:Members>
      <d2p1:MostRecentParticipantCallSid>String</d2p1:MostRecentParticipantCallSid>
      <d2p1:Outcome>String</d2p1:Outcome>
      <d2p1:QueueMemberId>String</d2p1:QueueMemberId>
      <d2p1:QueueState>None</d2p1:QueueState>
      <d2p1:RingQueueId>String</d2p1:RingQueueId>
      <d2p1:ToAddress>String</d2p1:ToAddress>
      <d2p1:WasMissed>false</d2p1:WasMissed>
    </d2p1:SessionInfo>
  </Calls>
  <Conversations xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Messaging">
    <d2p1:ConversationInfo>
      <d2p1:EndpointId>String</d2p1:EndpointId>
      <d2p1:Id>String</d2p1:Id>
      <d2p1:MostRecentMessage>
        <d2p1:AccountId>String</d2p1:AccountId>
        <d2p1:CustomerId>String</d2p1:CustomerId>
        <d2p1:Date>String</d2p1:Date>
        <d2p1:Direction>Incoming</d2p1:Direction>
        <d2p1:EndpointDisplayName>String</d2p1:EndpointDisplayName>
        <d2p1:EndpointId>String</d2p1:EndpointId>
        <d2p1:Id>String</d2p1:Id>
        <d2p1:IsUnread>false</d2p1:IsUnread>
        <d2p1:OtherAddress>String</d2p1:OtherAddress>
        <d2p1:Sender>String</d2p1:Sender>
        <d2p1:Text>String</d2p1:Text>
      </d2p1:MostRecentMessage>
      <d2p1:OtherAddress>String</d2p1:OtherAddress>
    </d2p1:ConversationInfo>
  </Conversations>
  <Forms>
    <HostedSuiteCompletedForm>
      <CallerNumber>String</CallerNumber>
      <ClientId>String</ClientId>
      <ClientName>String</ClientName>
      <ContactId>String</ContactId>
      <ContactName>String</ContactName>
      <ContactsIds xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:string>String</d4p1:string>
      </ContactsIds>
      <ContactsNames xmlns:d4p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
        <d4p1:string>String</d4p1:string>
      </ContactsNames>
      <DateCompleted>String</DateCompleted>
      <DateCreated>String</DateCreated>
      <EmailSubject>String</EmailSubject>
      <Fields>
        <HostedSuiteCompletedFormField>
          <Name>String</Name>
          <Values xmlns:d6p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
            <d6p1:string>String</d6p1:string>
          </Values>
        </HostedSuiteCompletedFormField>
      </Fields>
      <FormId>String</FormId>
      <FormName>String</FormName>
      <Id>String</Id>
      <Name>String</Name>
    </HostedSuiteCompletedForm>
  </Forms>
  <IsHostedSuiteCustomer>false</IsHostedSuiteCustomer>
  <Voicemail xmlns:d2p1="http://schemas.datacontract.org/2004/07/Voice.Api.Files">
    <d2p1:FileInfo>
      <CreatedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</CreatedBy>
      <DateCreated xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateCreated>
      <DateLastModified xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</DateLastModified>
      <Id xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</Id>
      <LastModifiedBy xmlns="http://schemas.datacontract.org/2004/07/Voice.Api">String</LastModifiedBy>
      <d2p1:AITranscription>String</d2p1:AITranscription>
      <d2p1:AccountId>String</d2p1:AccountId>
      <d2p1:AccountName>String</d2p1:AccountName>
      <d2p1:ContentLength>0</d2p1:ContentLength>
      <d2p1:ContentType>String</d2p1:ContentType>
      <d2p1:CustomerBreadcrumb xmlns:d4p1="http://schemas.datacontract.org/2004/07/Voice.Api.Customers">
        <d4p1:CustomerBreadcrumb>
          <d4p1:Id>String</d4p1:Id>
          <d4p1:Name>String</d4p1:Name>
        </d4p1:CustomerBreadcrumb>
      </d2p1:CustomerBreadcrumb>
      <d2p1:CustomerId>String</d2p1:CustomerId>
      <d2p1:CustomerName>String</d2p1:CustomerName>
      <d2p1:FileName>String</d2p1:FileName>
      <d2p1:FromAddress>String</d2p1:FromAddress>
      <d2p1:RecordingDuration>0</d2p1:RecordingDuration>
      <d2p1:RecordingFrom>String</d2p1:RecordingFrom>
      <d2p1:RecordingSid>String</d2p1:RecordingSid>
      <d2p1:ToAddress>String</d2p1:ToAddress>
      <d2p1:Transcription>String</d2p1:Transcription>
      <d2p1:Type>Upload</d2p1:Type>
      <d2p1:Uri>String</d2p1:Uri>
      <d2p1:UserId>String</d2p1:UserId>
      <d2p1:UserName>String</d2p1:UserName>
    </d2p1:FileInfo>
  </Voicemail>
</AppHomeInformation>