Evo Voice

<back to all web services

GetEndpointAppConfig

Requires Authentication
Requires any of the roles:SystemAdministrator, Manager, Customer
The following routes are available for this service:
GET/endpoints/app/config
<?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 AppUserInfo implements JsonSerializable
{
    public function __construct(
        /** @description The user's first name */
        // @ApiMember(Description="The user's first name")
        /** @var string|null */
        public ?string $firstName=null,

        /** @description The user's last name */
        // @ApiMember(Description="The user's last name")
        /** @var string|null */
        public ?string $lastName=null,

        /** @description Shortcut to the user's full name */
        // @ApiMember(Description="Shortcut to the user's full name")
        /** @var string|null */
        public ?string $name=null,

        /** @description The URL to the user's avatar */
        // @ApiMember(Description="The URL to the user's avatar")
        /** @var string|null */
        public ?string $avatarUrl=null
    ) {
    }

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

enum AgentStates : string
{
    case Unknown = 'Unknown';
    case Ready = 'Ready';
    case NotReady = 'NotReady';
    case LoggedOut = 'LoggedOut';
    case WrapUp = 'WrapUp';
    case Outgoing = 'Outgoing';
    case Other = 'Other';
}

enum AgentStateReasons : string
{
    case Unknown = 'Unknown';
    case SetByUser = 'SetByUser';
    case MissedCall = 'MissedCall';
    case SetBySystem = 'SetBySystem';
}

class AppSettings implements JsonSerializable
{
    public function __construct(
        /** @var bool|null */
        public ?bool $enablePhoneNumberManagement=null,
        /** @var bool|null */
        public ?bool $enableDeviceManagement=null,
        /** @var bool|null */
        public ?bool $enableDialer=null,
        /** @var bool|null */
        public ?bool $enableCallHistory=null,
        /** @var bool|null */
        public ?bool $enableAssistants=null,
        /** @var bool|null */
        public ?bool $showFileNameInMessageCenter=null,
        /** @var string|null */
        public ?string $chakraTheme=null,
        /** @var string|null */
        public ?string $customCss=null,
        /** @var string|null */
        public ?string $pageTitle=null,
        /** @var string|null */
        public ?string $stringMappings=null,
        /** @var string|null */
        public ?string $logoutUrl=null,
        /** @var string|null */
        public ?string $portMyNumberUrl=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['enablePhoneNumberManagement'])) $this->enablePhoneNumberManagement = $o['enablePhoneNumberManagement'];
        if (isset($o['enableDeviceManagement'])) $this->enableDeviceManagement = $o['enableDeviceManagement'];
        if (isset($o['enableDialer'])) $this->enableDialer = $o['enableDialer'];
        if (isset($o['enableCallHistory'])) $this->enableCallHistory = $o['enableCallHistory'];
        if (isset($o['enableAssistants'])) $this->enableAssistants = $o['enableAssistants'];
        if (isset($o['showFileNameInMessageCenter'])) $this->showFileNameInMessageCenter = $o['showFileNameInMessageCenter'];
        if (isset($o['chakraTheme'])) $this->chakraTheme = $o['chakraTheme'];
        if (isset($o['customCss'])) $this->customCss = $o['customCss'];
        if (isset($o['pageTitle'])) $this->pageTitle = $o['pageTitle'];
        if (isset($o['stringMappings'])) $this->stringMappings = $o['stringMappings'];
        if (isset($o['logoutUrl'])) $this->logoutUrl = $o['logoutUrl'];
        if (isset($o['portMyNumberUrl'])) $this->portMyNumberUrl = $o['portMyNumberUrl'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->enablePhoneNumberManagement)) $o['enablePhoneNumberManagement'] = $this->enablePhoneNumberManagement;
        if (isset($this->enableDeviceManagement)) $o['enableDeviceManagement'] = $this->enableDeviceManagement;
        if (isset($this->enableDialer)) $o['enableDialer'] = $this->enableDialer;
        if (isset($this->enableCallHistory)) $o['enableCallHistory'] = $this->enableCallHistory;
        if (isset($this->enableAssistants)) $o['enableAssistants'] = $this->enableAssistants;
        if (isset($this->showFileNameInMessageCenter)) $o['showFileNameInMessageCenter'] = $this->showFileNameInMessageCenter;
        if (isset($this->chakraTheme)) $o['chakraTheme'] = $this->chakraTheme;
        if (isset($this->customCss)) $o['customCss'] = $this->customCss;
        if (isset($this->pageTitle)) $o['pageTitle'] = $this->pageTitle;
        if (isset($this->stringMappings)) $o['stringMappings'] = $this->stringMappings;
        if (isset($this->logoutUrl)) $o['logoutUrl'] = $this->logoutUrl;
        if (isset($this->portMyNumberUrl)) $o['portMyNumberUrl'] = $this->portMyNumberUrl;
        return empty($o) ? new class(){} : $o;
    }
}

enum ThirdPartyPhoneSystemTypes : string
{
    case Demo = 'Demo';
    case Sip = 'Sip';
}

enum TransportTypes : string
{
    case UDP = 'UDP';
    case TLS = 'TLS';
    case TCP = 'TCP';
    case PERS = 'PERS';
}

enum AudioCodecTypes : int
{
    case PCMU = 0;
    case GSM = 3;
    case PCMA = 8;
    case G722 = 9;
    case G729 = 18;
    case ILBC = 97;
    case AMR = 98;
    case AMRWB = 99;
    case SPEEX = 100;
    case DTMF = 101;
    case SPEEXWB = 102;
    case ISACWB = 103;
    case ISACSWB = 104;
    case OPUS = 105;
    case G7221 = 121;
    case NONE = -1;
}

enum DtmfMethods : string
{
    case RFC2833 = 'RFC2833';
    case INFO = 'INFO';
}

class ThirdPartySipAccountSettings implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $number=null,
        /** @var string|null */
        public ?string $agent=null,
        /** @var string|null */
        public ?string $authName=null,
        /** @var string|null */
        public ?string $userName=null,
        /** @var string|null */
        public ?string $displayName=null,
        /** @var string|null */
        public ?string $password=null,
        /** @var string|null */
        public ?string $userDomain=null,
        /** @var int */
        public int $registrationExpires=0,
        /** @var TransportTypes|null */
        public ?TransportTypes $transportType=null,
        /** @var string|null */
        public ?string $localIP=null,
        /** @var int */
        public int $localPort=0,
        /** @var string|null */
        public ?string $sipServer=null,
        /** @var int */
        public int $sipServerPort=0,
        /** @var string|null */
        public ?string $outboundServer=null,
        /** @var int */
        public int $outboundServerPort=0,
        /** @var string|null */
        public ?string $stunServer=null,
        /** @var int */
        public int $stunPort=0,
        /** @var string|null */
        public ?string $audioPlaybackDeviceName=null,
        /** @var string|null */
        public ?string $audioRecordingDeviceName=null,
        /** @var array<AudioCodecTypes>|null */
        public ?array $audioCodecs=null,
        /** @var DtmfMethods|null */
        public ?DtmfMethods $dtmfMethod=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['number'])) $this->number = $o['number'];
        if (isset($o['agent'])) $this->agent = $o['agent'];
        if (isset($o['authName'])) $this->authName = $o['authName'];
        if (isset($o['userName'])) $this->userName = $o['userName'];
        if (isset($o['displayName'])) $this->displayName = $o['displayName'];
        if (isset($o['password'])) $this->password = $o['password'];
        if (isset($o['userDomain'])) $this->userDomain = $o['userDomain'];
        if (isset($o['registrationExpires'])) $this->registrationExpires = $o['registrationExpires'];
        if (isset($o['transportType'])) $this->transportType = JsonConverters::from('TransportTypes', $o['transportType']);
        if (isset($o['localIP'])) $this->localIP = $o['localIP'];
        if (isset($o['localPort'])) $this->localPort = $o['localPort'];
        if (isset($o['sipServer'])) $this->sipServer = $o['sipServer'];
        if (isset($o['sipServerPort'])) $this->sipServerPort = $o['sipServerPort'];
        if (isset($o['outboundServer'])) $this->outboundServer = $o['outboundServer'];
        if (isset($o['outboundServerPort'])) $this->outboundServerPort = $o['outboundServerPort'];
        if (isset($o['stunServer'])) $this->stunServer = $o['stunServer'];
        if (isset($o['stunPort'])) $this->stunPort = $o['stunPort'];
        if (isset($o['audioPlaybackDeviceName'])) $this->audioPlaybackDeviceName = $o['audioPlaybackDeviceName'];
        if (isset($o['audioRecordingDeviceName'])) $this->audioRecordingDeviceName = $o['audioRecordingDeviceName'];
        if (isset($o['audioCodecs'])) $this->audioCodecs = JsonConverters::fromArray('AudioCodecTypes', $o['audioCodecs']);
        if (isset($o['dtmfMethod'])) $this->dtmfMethod = JsonConverters::from('DtmfMethods', $o['dtmfMethod']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->number)) $o['number'] = $this->number;
        if (isset($this->agent)) $o['agent'] = $this->agent;
        if (isset($this->authName)) $o['authName'] = $this->authName;
        if (isset($this->userName)) $o['userName'] = $this->userName;
        if (isset($this->displayName)) $o['displayName'] = $this->displayName;
        if (isset($this->password)) $o['password'] = $this->password;
        if (isset($this->userDomain)) $o['userDomain'] = $this->userDomain;
        if (isset($this->registrationExpires)) $o['registrationExpires'] = $this->registrationExpires;
        if (isset($this->transportType)) $o['transportType'] = JsonConverters::to('TransportTypes', $this->transportType);
        if (isset($this->localIP)) $o['localIP'] = $this->localIP;
        if (isset($this->localPort)) $o['localPort'] = $this->localPort;
        if (isset($this->sipServer)) $o['sipServer'] = $this->sipServer;
        if (isset($this->sipServerPort)) $o['sipServerPort'] = $this->sipServerPort;
        if (isset($this->outboundServer)) $o['outboundServer'] = $this->outboundServer;
        if (isset($this->outboundServerPort)) $o['outboundServerPort'] = $this->outboundServerPort;
        if (isset($this->stunServer)) $o['stunServer'] = $this->stunServer;
        if (isset($this->stunPort)) $o['stunPort'] = $this->stunPort;
        if (isset($this->audioPlaybackDeviceName)) $o['audioPlaybackDeviceName'] = $this->audioPlaybackDeviceName;
        if (isset($this->audioRecordingDeviceName)) $o['audioRecordingDeviceName'] = $this->audioRecordingDeviceName;
        if (isset($this->audioCodecs)) $o['audioCodecs'] = JsonConverters::toArray('AudioCodecTypes', $this->audioCodecs);
        if (isset($this->dtmfMethod)) $o['dtmfMethod'] = JsonConverters::to('DtmfMethods', $this->dtmfMethod);
        return empty($o) ? new class(){} : $o;
    }
}

class ThirdPartySipSettings implements JsonSerializable
{
    public function __construct(
        /** @var array<ThirdPartySipAccountSettings>|null */
        public ?array $accounts=null
    ) {
    }

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

class ThirdPartyDemoSettings implements JsonSerializable
{
    public function __construct(
        /** @var string|null */
        public ?string $extension=null
    ) {
    }

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

class ThirdPartyPhoneSystemSettings implements JsonSerializable
{
    public function __construct(
        /** @var ThirdPartyPhoneSystemTypes|null */
        public ?ThirdPartyPhoneSystemTypes $type=null,
        /** @var ThirdPartySipSettings|null */
        public ?ThirdPartySipSettings $sipSettings=null,
        /** @var ThirdPartyDemoSettings|null */
        public ?ThirdPartyDemoSettings $demoSettings=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['type'])) $this->type = JsonConverters::from('ThirdPartyPhoneSystemTypes', $o['type']);
        if (isset($o['sipSettings'])) $this->sipSettings = JsonConverters::from('ThirdPartySipSettings', $o['sipSettings']);
        if (isset($o['demoSettings'])) $this->demoSettings = JsonConverters::from('ThirdPartyDemoSettings', $o['demoSettings']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->type)) $o['type'] = JsonConverters::to('ThirdPartyPhoneSystemTypes', $this->type);
        if (isset($this->sipSettings)) $o['sipSettings'] = JsonConverters::to('ThirdPartySipSettings', $this->sipSettings);
        if (isset($this->demoSettings)) $o['demoSettings'] = JsonConverters::to('ThirdPartyDemoSettings', $this->demoSettings);
        return empty($o) ? new class(){} : $o;
    }
}

class AppConfig implements JsonSerializable
{
    public function __construct(
        /** @description The ID of this endpoint */
        // @ApiMember(Description="The ID of this endpoint")
        /** @var string|null */
        public ?string $endpointId=null,

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

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

        /** @description The access token for use with Twilio Voice */
        // @ApiMember(Description="The access token for use with Twilio Voice")
        /** @var string|null */
        public ?string $accessToken=null,

        /** @description The access token's identity */
        // @ApiMember(Description="The access token's identity")
        /** @var string|null */
        public ?string $identity=null,

        /** @description The email address of the user */
        // @ApiMember(Description="The email address of the user")
        /** @var string|null */
        public ?string $emailAddress=null,

        /** @description The user's information */
        // @ApiMember(Description="The user's information")
        /** @var AppUserInfo|null */
        public ?AppUserInfo $userInfo=null,

        /** @description The agent state (for call center users) */
        // @ApiMember(Description="The agent state (for call center users)")
        /** @var AgentStates|null */
        public ?AgentStates $agentState=null,

        /** @description The agent state reason */
        // @ApiMember(Description="The agent state reason")
        /** @var AgentStateReasons|null */
        public ?AgentStateReasons $agentStateReason=null,

        /** @description The tabs for the app */
        // @ApiMember(Description="The tabs for the app")
        /** @var array<Object>|null */
        public ?array $tabs=null,

        /** @description The app settings */
        // @ApiMember(Description="The app settings")
        /** @var AppSettings|null */
        public ?AppSettings $appSettings=null,

        /** @description The phone settings for third party connectivity */
        // @ApiMember(Description="The phone settings for third party connectivity")
        /** @var ThirdPartyPhoneSystemSettings|null */
        public ?ThirdPartyPhoneSystemSettings $thirdPartyPhoneSystemSettings=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['endpointId'])) $this->endpointId = $o['endpointId'];
        if (isset($o['accountId'])) $this->accountId = $o['accountId'];
        if (isset($o['customerId'])) $this->customerId = $o['customerId'];
        if (isset($o['accessToken'])) $this->accessToken = $o['accessToken'];
        if (isset($o['identity'])) $this->identity = $o['identity'];
        if (isset($o['emailAddress'])) $this->emailAddress = $o['emailAddress'];
        if (isset($o['userInfo'])) $this->userInfo = JsonConverters::from('AppUserInfo', $o['userInfo']);
        if (isset($o['agentState'])) $this->agentState = JsonConverters::from('AgentStates', $o['agentState']);
        if (isset($o['agentStateReason'])) $this->agentStateReason = JsonConverters::from('AgentStateReasons', $o['agentStateReason']);
        if (isset($o['tabs'])) $this->tabs = JsonConverters::fromArray('Object', $o['tabs']);
        if (isset($o['appSettings'])) $this->appSettings = JsonConverters::from('AppSettings', $o['appSettings']);
        if (isset($o['thirdPartyPhoneSystemSettings'])) $this->thirdPartyPhoneSystemSettings = JsonConverters::from('ThirdPartyPhoneSystemSettings', $o['thirdPartyPhoneSystemSettings']);
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->endpointId)) $o['endpointId'] = $this->endpointId;
        if (isset($this->accountId)) $o['accountId'] = $this->accountId;
        if (isset($this->customerId)) $o['customerId'] = $this->customerId;
        if (isset($this->accessToken)) $o['accessToken'] = $this->accessToken;
        if (isset($this->identity)) $o['identity'] = $this->identity;
        if (isset($this->emailAddress)) $o['emailAddress'] = $this->emailAddress;
        if (isset($this->userInfo)) $o['userInfo'] = JsonConverters::to('AppUserInfo', $this->userInfo);
        if (isset($this->agentState)) $o['agentState'] = JsonConverters::to('AgentStates', $this->agentState);
        if (isset($this->agentStateReason)) $o['agentStateReason'] = JsonConverters::to('AgentStateReasons', $this->agentStateReason);
        if (isset($this->tabs)) $o['tabs'] = JsonConverters::toArray('Object', $this->tabs);
        if (isset($this->appSettings)) $o['appSettings'] = JsonConverters::to('AppSettings', $this->appSettings);
        if (isset($this->thirdPartyPhoneSystemSettings)) $o['thirdPartyPhoneSystemSettings'] = JsonConverters::to('ThirdPartyPhoneSystemSettings', $this->thirdPartyPhoneSystemSettings);
        return empty($o) ? new class(){} : $o;
    }
}

enum DeviceTypes : string
{
    case Web = 'Web';
    case iOS = 'iOS';
    case Android = 'Android';
}

class GetEndpointAppConfig implements JsonSerializable
{
    public function __construct(
        /** @description The endpoint whose config you want to get (this must be a User) */
        // @ApiMember(Description="The endpoint whose config you want to get (this must be a User)")
        /** @var string|null */
        public ?string $endpointId=null,

        /** @description The endpoint email address whose config you want to get (this must be a User) - EndpointId takes priority over this */
        // @ApiMember(Description="The endpoint email address whose config you want to get (this must be a User) - EndpointId takes priority over this")
        /** @var string|null */
        public ?string $endpointEmailAddress=null,

        /** @description The type of device you are requesting config for */
        // @ApiMember(Description="The type of device you are requesting config for")
        /** @var DeviceTypes|null */
        public ?DeviceTypes $deviceType=null,

        /** @description Use a specific push credential SID */
        // @ApiMember(Description="Use a specific push credential SID")
        /** @var string|null */
        public ?string $pushCredentialSid=null,

        /** @description Use a specific application SID */
        // @ApiMember(Description="Use a specific application SID")
        /** @var string|null */
        public ?string $applicationSid=null,

        /** @description Is this device operating in a sandbox environment? IOS only. */
        // @ApiMember(Description="Is this device operating in a sandbox environment? IOS only.")
        /** @var bool|null */
        public ?bool $sandbox=null
    ) {
    }

    /** @throws Exception */
    public function fromMap($o): void {
        if (isset($o['endpointId'])) $this->endpointId = $o['endpointId'];
        if (isset($o['endpointEmailAddress'])) $this->endpointEmailAddress = $o['endpointEmailAddress'];
        if (isset($o['deviceType'])) $this->deviceType = JsonConverters::from('DeviceTypes', $o['deviceType']);
        if (isset($o['pushCredentialSid'])) $this->pushCredentialSid = $o['pushCredentialSid'];
        if (isset($o['applicationSid'])) $this->applicationSid = $o['applicationSid'];
        if (isset($o['sandbox'])) $this->sandbox = $o['sandbox'];
    }
    
    /** @throws Exception */
    public function jsonSerialize(): mixed
    {
        $o = [];
        if (isset($this->endpointId)) $o['endpointId'] = $this->endpointId;
        if (isset($this->endpointEmailAddress)) $o['endpointEmailAddress'] = $this->endpointEmailAddress;
        if (isset($this->deviceType)) $o['deviceType'] = JsonConverters::to('DeviceTypes', $this->deviceType);
        if (isset($this->pushCredentialSid)) $o['pushCredentialSid'] = $this->pushCredentialSid;
        if (isset($this->applicationSid)) $o['applicationSid'] = $this->applicationSid;
        if (isset($this->sandbox)) $o['sandbox'] = $this->sandbox;
        return empty($o) ? new class(){} : $o;
    }
}

PHP GetEndpointAppConfig DTOs

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

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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

GET /endpoints/app/config HTTP/1.1 
Host: team.evovoice.io 
Accept: application/json
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"endpointId":"String","accountId":"String","customerId":"String","accessToken":"String","identity":"String","emailAddress":"String","userInfo":{"firstName":"String","lastName":"String","name":"String","avatarUrl":"String"},"agentState":"Unknown","agentStateReason":"Unknown","tabs":[{}],"appSettings":{"enablePhoneNumberManagement":false,"enableDeviceManagement":false,"enableDialer":false,"enableCallHistory":false,"enableAssistants":false,"showFileNameInMessageCenter":false,"chakraTheme":"String","customCss":"String","pageTitle":"String","stringMappings":"String","logoutUrl":"String","portMyNumberUrl":"String"},"thirdPartyPhoneSystemSettings":{"type":"Demo","sipSettings":{"accounts":[{"number":"String","agent":"String","authName":"String","userName":"String","displayName":"String","password":"String","userDomain":"String","registrationExpires":0,"transportType":"UDP","localIP":"String","localPort":0,"sipServer":"String","sipServerPort":0,"outboundServer":"String","outboundServerPort":0,"stunServer":"String","stunPort":0,"audioPlaybackDeviceName":"String","audioRecordingDeviceName":"String","audioCodecs":["PCMU"],"dtmfMethod":"RFC2833"}]},"demoSettings":{"extension":"String"}}}