Required role: | SystemAdministrator |
POST | /accounts |
---|
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class EntityInfo:
# @ApiMember(Description="The ID of the object")
id: Optional[str] = None
"""
The ID of the object
"""
# @ApiMember(Description="The date the object was created")
date_created: Optional[str] = None
"""
The date the object was created
"""
# @ApiMember(Description="The date the object was last modified")
date_last_modified: Optional[str] = None
"""
The date the object was last modified
"""
# @ApiMember(Description="The user that created this object")
created_by: Optional[str] = None
"""
The user that created this object
"""
# @ApiMember(Description="The user that last modified this object")
last_modified_by: Optional[str] = None
"""
The user that last modified this object
"""
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillingItem:
base_cost: float = 0.0
raw_unit_multiplier: float = 0.0
unit_cost: float = 0.0
allowance: int = 0
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillingSettings:
base: Optional[BillingItem] = None
local_numbers: Optional[BillingItem] = None
toll_free_numbers: Optional[BillingItem] = None
inbound_voice_calls: Optional[BillingItem] = None
outbound_voice_calls: Optional[BillingItem] = None
inbound_faxes: Optional[BillingItem] = None
outbound_faxes: Optional[BillingItem] = None
inbound_sms_messages: Optional[BillingItem] = None
outbound_sms_messages: Optional[BillingItem] = None
ai_insights: Optional[BillingItem] = None
ai_live_minutes: Optional[BillingItem] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AccountInfo(EntityInfo):
# @ApiMember(Description="The name of this account")
name: Optional[str] = None
"""
The name of this account
"""
# @ApiMember(Description="The ID of this account's parent")
parent_account_id: Optional[str] = None
"""
The ID of this account's parent
"""
# @ApiMember(Description="The twilio account SID")
twilio_account_sid: Optional[str] = None
"""
The twilio account SID
"""
# @ApiMember(Description="The ancestors of this account. Useful for breadcrumbs")
ancestor_ids: Optional[List[str]] = None
"""
The ancestors of this account. Useful for breadcrumbs
"""
# @ApiMember(Description="The max number of phone numbers this account can have")
max_phone_numbers: int = 0
"""
The max number of phone numbers this account can have
"""
# @ApiMember(Description="This account is BYOA")
is_b_y_o_a: bool = False
"""
This account is BYOA
"""
# @ApiMember(Description="TrustHub Profile Sid")
trust_hub_profile_sid: Optional[str] = None
"""
TrustHub Profile Sid
"""
# @ApiMember(Description="The ID of the logo file")
logo_id: Optional[str] = None
"""
The ID of the logo file
"""
# @ApiMember(Description="The URI of the logo file")
logo_uri: Optional[str] = None
"""
The URI of the logo file
"""
# @ApiMember(Description="The billing settings for this account")
billing_settings: Optional[BillingSettings] = None
"""
The billing settings for this account
"""
# @Api(Description="Creates a new account")
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class NewAccount(IPost):
"""
Creates a new account
"""
# @ApiMember(Description="The name of the new account")
name: Optional[str] = None
"""
The name of the new account
"""
# @ApiMember(Description="The Twilio Account SID (for BYOA)")
twilio_account_sid: Optional[str] = None
"""
The Twilio Account SID (for BYOA)
"""
# @ApiMember(Description="The Twilio Auth Token (for BYOA)")
twilio_auth_token: Optional[str] = None
"""
The Twilio Auth Token (for BYOA)
"""
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /accounts HTTP/1.1
Host: team.evovoice.io
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<NewAccount xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Accounts">
<Name>String</Name>
<TwilioAccountSid>String</TwilioAccountSid>
<TwilioAuthToken>String</TwilioAuthToken>
</NewAccount>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <AccountInfo xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Voice.Api.Accounts"> <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> <AncestorIds xmlns:d2p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays"> <d2p1:string>String</d2p1:string> </AncestorIds> <BillingSettings> <AIInsights> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </AIInsights> <AILiveMinutes> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </AILiveMinutes> <Base> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </Base> <InboundFaxes> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </InboundFaxes> <InboundSmsMessages> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </InboundSmsMessages> <InboundVoiceCalls> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </InboundVoiceCalls> <LocalNumbers> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </LocalNumbers> <OutboundFaxes> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </OutboundFaxes> <OutboundSmsMessages> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </OutboundSmsMessages> <OutboundVoiceCalls> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </OutboundVoiceCalls> <TollFreeNumbers> <Allowance>0</Allowance> <BaseCost>0</BaseCost> <RawUnitMultiplier>0</RawUnitMultiplier> <UnitCost>0</UnitCost> </TollFreeNumbers> </BillingSettings> <IsBYOA>false</IsBYOA> <LogoId>String</LogoId> <LogoUri>String</LogoUri> <MaxPhoneNumbers>0</MaxPhoneNumbers> <Name>String</Name> <ParentAccountId>String</ParentAccountId> <TrustHubProfileSid>String</TrustHubProfileSid> <TwilioAccountSid>String</TwilioAccountSid> </AccountInfo>