We use cookies to give you the best possible experience while you browse through our site. By continuing to use our website you implicitly agree to the usage of cookies on this site.

Read More
← Atlas API & Provisioning Reference

Schemas

The schemas below have been extracted from the openapi specification and formatted for easier consumption.

Schema / AddonsData

Some requests may allow specifying "addons", these are additional functions or features that are provisioned with the numbers once they have become available.

An example would be to immediately provision numbers for messaging in a NEW_NUMBERS request.

Type Object

Name Type Description
messaging messaging Desc. messaging
voip_destinations voip_destinations Desc. voip_destinations

Desc. messaging

The messaging section affects the enablement of SMS, MMS and adding DIDs to Campaigns.

Note typically these properties may be offloaded to a ADD_MESSAGING_NUMBERS request, so all rules from that request apply to this section where applicable.

Desc. voip_destinations

The VoIP Destinations Addons allows configuring the VoIP Destinations on a DID once it's considered generally available.

messaging

Name Type Description
api_key_ids Array:String(format:uuid) Desc. api_key_ids
csp_campaign_id String(format:uuid) Desc. csp_campaign_id
enabled Boolean Desc. enabled
mms_enabled Boolean Desc. mms_enabled
notes String Desc. notes
switch_id String(format:uuid) Desc. switch_id
tcr_campaign_id String Desc. tcr_campaign_id

Desc. api_key_ids

A list of API Keys that should be assigned to the DIDs.

Desc. csp_campaign_id

Tychron issued ID of a Campaign that should be assigned to the DIDs.

Desc. enabled

Whether or not this addon should be applied.

Desc. mms_enabled

Should MMS be enabled on the DIDs?

Desc. notes

Any notes about the messaging addon, this will be copied into the ADD_MESSAGING_NUMBERS requests.

Desc. switch_id

The ID of the messaging Switch that should be assigned to the DIDs.

Desc. tcr_campaign_id

TCR Campaign ID of the Campaign that should be assigned to the DIDs.

voip_destinations

Name Type Description
destinations Array:SubObject Desc. destinations
enabled Boolean Desc. enabled
switch_id String(format:uuid) Desc. switch_id

SubObject

Sub-Schema

Destination configuration parameters.

Type Object

Name Type Description
activated Boolean Desc. activated
auth_identity String The username for a BASIC auth_method
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_secret String Desc. auth_secret
destination String Desc. destination
priority Integer Desc. priority
type Enum:String Desc. type

Desc. activated

Whether or not the destination is considered for routing

Desc. auth_method

The authorization method to used for HTTP_ROUTE destinations

Desc. auth_secret

The password for a BASIC auth_method or token for BEARER auth_method

Desc. destination

Depending on the type, this field can contain different data.

  • VOIP - destination should be in the form of local@domain where local is the destination prefix and domain is the SIP capable server to handle the request
  • PSTN - destination should be a plain format number (e.g. 12003004000), can also be a comma separated list to allow multiple destinations
  • HTTP_ROUTE - destination should be an http uri which will handle the routing request
  • TTS - destination should be one of the pre-approved values (more may be added in the future):
  • DISCONNECTED
  • TEXT_ONLY
  • BUSY
  • CONGESTION
  • TTS_CUSTOM - destination should be the message to be read
  • TTS_MESSAGE_SET - destination will be set to "UNUSED" regardless of provided value, instead the tts_message_set_id MUST be set on the request

Desc. priority

Affects the ordering of destinations for calls, 1 will be first while 9 is the last

Enum Values type

Allowed values

  • VOIP
  • PSTN
  • HTTP_ROUTE
  • TTS
  • TTS_CUSTOM
  • TTS_MESSAGE_SET

Desc. type

The destination type, see destination field for more detail

Desc. destinations

A list of DID Destinations that should be assigned to the DIDs upon creation.

Desc. enabled

Whether or not the VoIP Destinations should be configured.

Desc. switch_id

The ID of the VoIP Fallback Switch that should be assigned to DIDs.

Example

{
  "messaging": {
    "api_key_ids": [
      "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    ],
    "csp_campaign_id": "string",
    "enabled": false,
    "mms_enabled": true,
    "notes": "This is for a state child support centre and will be enabled on Campaign X.\n",
    "switch_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "tcr_campaign_id": "C000000"
  },
  "voip_destinations": {
    "destinations": [
      {
        "activated": true,
        "auth_identity": "username",
        "auth_method": "BASIC",
        "auth_secret": "password",
        "destination": "http://example.com/http/route/call",
        "priority": 1,
        "type": "HTTP_ROUTE"
      }
    ],
    "enabled": true,
    "switch_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
  }
}

Schema / ApiKey

An set of authorization details for various APIs

Type Object

Name Type Description
active Boolean
id String(format:uuid) Desc. id
identity String Desc. identity
inserted_at String(format:date-time) An ISO8601 formatted timestamp
key String Token used for HTTP APIs
name String(3..255) A friendly name to identify the API Key
notes String(0..65535) Desc. notes
smpp_system_id String Desc. smpp_system_id
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

A Universally unique identifier, which identifies the resource

Desc. identity

Acts as the username in the authorization pair for MM4

Desc. notes

Any notes about the API Key, like, what it is used for, or other sharable details.

Desc. smpp_system_id

Small identifier used when authorizing an SMPP connection

Example

{
  "active": true,
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "identity": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "key": "RBAARJAXGMRJ3AOD55WDO5WKN5GEFZGSZOAGJ27DOYJ22IBRU7W77Z6QKAYXCAXI",
  "name": "My API Key",
  "notes": "This API Key is used for the west datacenter's SMS notifications.",
  "smpp_system_id": "EIIGBT24ZH242U5",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / ApiKeyResponse

Single API Key

Type Object

Name Type Description
data ApiKey
type String

Example

{
  "data": {
    "active": true,
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "identity": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "key": "RBAARJAXGMRJ3AOD55WDO5WKN5GEFZGSZOAGJ27DOYJ22IBRU7W77Z6QKAYXCAXI",
    "name": "My API Key",
    "notes": "This API Key is used for the west datacenter's SMS notifications.",
    "smpp_system_id": "EIIGBT24ZH242U5",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "api_key"
}

Schema / ApiKeysResponse

API Keys

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:ApiKeyResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "active": true,
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "identity": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "key": "RBAARJAXGMRJ3AOD55WDO5WKN5GEFZGSZOAGJ27DOYJ22IBRU7W77Z6QKAYXCAXI",
        "name": "My API Key",
        "notes": "This API Key is used for the west datacenter's SMS notifications.",
        "smpp_system_id": "EIIGBT24ZH242U5",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "api_key"
    }
  ]
}

Schema / AttachSwitchMmsEncryptionKeyData

Parameters for attaching a Secret Key to a Switch for MMS Encryption

Type Object

Name Type Description
mms_encryption_method SwitchEncryptionMethod

Example

{
  "mms_encryption_method": "NONE"
}

Schema / AttachSwitchMmsEncryptionKeyRequest

Request for attaching a Secret Key to a switch for MMS Encryption

Type Object

Name Type Description
data AttachSwitchMmsEncryptionKeyData
type String

Example

{
  "data": {
    "mms_encryption_method": "NONE"
  },
  "type": "switch"
}

Schema / AttachSwitchMmsSigningKeyData

Parameters for attaching a Secret Key to a Switch for MMS Signing

Type Object

Name Type Description
mms_signing_hash SwitchSigningHash
mms_signing_scheme SwitchSigningScheme

Example

{
  "mms_signing_hash": "NONE",
  "mms_signing_scheme": "NONE"
}

Schema / AttachSwitchMmsSigningKeyRequest

Request for attaching a Secret Key to a switch for MMS Signing

Type Object

Name Type Description
data AttachSwitchMmsSigningKeyData
type String

Example

{
  "data": {
    "mms_signing_hash": "NONE",
    "mms_signing_scheme": "NONE"
  },
  "type": "switch"
}

Schema / AttachSwitchSmsEncryptionKeyData

Parameters for attaching a Secret Key to a Switch for SMS Encryption

Type Object

Name Type Description
sms_encryption_method SwitchEncryptionMethod

Example

{
  "sms_encryption_method": "NONE"
}

Schema / AttachSwitchSmsEncryptionKeyRequest

Request for attaching a Secret Key to a switch for SMS Encryption

Type Object

Name Type Description
data AttachSwitchSmsEncryptionKeyData
type String

Example

{
  "data": {
    "sms_encryption_method": "NONE"
  },
  "type": "switch"
}

Schema / AttachSwitchSmsSigningKeyData

Parameters for attaching a Secret Key to a Switch for SMS Signing

Type Object

Name Type Description
sms_signing_hash SwitchSigningHash
sms_signing_scheme SwitchSigningScheme

Example

{
  "sms_signing_hash": "NONE",
  "sms_signing_scheme": "NONE"
}

Schema / AttachSwitchSmsSigningKeyRequest

Request for attaching a Secret Key to a switch for SMS Signing

Type Object

Name Type Description
data AttachSwitchSmsSigningKeyData
type String

Example

{
  "data": {
    "sms_signing_hash": "NONE",
    "sms_signing_scheme": "NONE"
  },
  "type": "switch"
}

Schema / BulkDipTask

A Bulk Dip Task is a long-running asynchronous request, numbers are specified in the request and will be dipped by the system internally, once completed, the result will be handled via the on_done_actions.

Note that it is possible to create a Bulk Dip Task without an on_done_action, this will effectively perform a no-op, you will still be charged for the dips, but nothing will be delivered.

Type Object

Name Type Description
done_at String(format:date-time) An ISO8601 formatted timestamp
enable_cdr_export Boolean Desc. enable_cdr_export
enhanced Boolean Desc. enhanced
error_code Enum(OK):String Desc. error_code
format Enum(CSV, MLJSON):String Desc. format
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
messaging_lookup Boolean Desc. messaging_lookup
numbers Array(0..20000):String(format:tel) Numbers to lookup
on_done_actions OnDoneActions
reference_id String(1..255) Desc. reference_id
status Enum:String Desc. status
type Enum(LRN, MCL, CNAM):String Desc. type
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. enable_cdr_export

Should CDRs generated by the bulk dip process be sent to the CDR Webhook?

By default this is disabled.

Note. This will generate CDRs while the task is processing.

Desc. enhanced

Used for LRN type, enables enhanced lookup.

Please consult the LRN documentation for additional details.

Desc. error_code

  • OK - there was no error
  • BAD_SOURCE_FILE - there was an issue with the source file

Desc. format

The intended exported format, CSV will export a CSV file as expected. MLJSON exports the cdrs as Multiline-JSON, that is each row in the file is a single record encoded as JSON.

  • CSV
  • MLJSON

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. messaging_lookup

Used for LRN type, enables messaging lookup, MCL will be added.

Please consult the LRN documentation for additional details.

Desc. reference_id

A unique client provided id for the bulk task.

There is no particular format that is enforced, a general recommendation is to avoid spaces and non-ASCII characters for best experience.

Enum Values status

Allowed values

  • NEW
  • SCHEDULED
  • PROCESSING
  • STORING
  • DELIVERING
  • COMPLETED
  • ABORTED
  • ERROR

Desc. status

Status gives a brief overview of the state of the task.

  • NEW - the export task was freshly created and has not begun processing
  • SCHEDULED - the task has been scheduled to execute at a later time (see date field for more information)
  • PROCESSING - the task has begun processing
  • STORING - the task is currently storing its results on internal storage for later access
  • DELIVERING - the task is now attempting to deliver the exported file to the given endpoints (or notifying)
  • COMPLETED - the task is completed and it is safe to delete or retrieve the exported details
  • ABORTED - the task was aborted, execution was halted
  • ERROR - the task experienced an error, error_code will have more details if any

Desc. type

The type of bulk dip that should be performed:

  • LRN - Location Routing Number lookups
  • MCL - Messaging Carrier Lookup
  • CNAM - Caller Name

Example

{
  "done_at": "2021-08-13T04:08:44.762841Z",
  "enable_cdr_export": false,
  "enhanced": false,
  "error_code": "OK",
  "format": "CSV",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "messaging_lookup": false,
  "numbers": [
    "12003004000"
  ],
  "on_done_actions": [
    {
      "archive_format": "TAR_GZ",
      "auth_identity": "upload-user",
      "auth_method": "BASIC",
      "auth_secret": "supersecretsauce",
      "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
      "error_code": "OK",
      "filename": "string",
      "protocol": "SFTP",
      "reference_id": "SFTP-export-action",
      "status": "NEW",
      "type": "SEND"
    }
  ],
  "reference_id": "lrn-bulk-LRN-2022-10-14",
  "status": "NEW",
  "type": "LRN",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / BulkDipTaskResponse

Single Bulk Dip Task

Type Object

Name Type Description
data BulkDipTask
type String

Example

{
  "data": {
    "done_at": "2021-08-13T04:08:44.762841Z",
    "enable_cdr_export": false,
    "enhanced": false,
    "error_code": "OK",
    "format": "CSV",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "messaging_lookup": false,
    "numbers": [
      "12003004000"
    ],
    "on_done_actions": [
      {
        "archive_format": "TAR_GZ",
        "auth_identity": "upload-user",
        "auth_method": "BASIC",
        "auth_secret": "supersecretsauce",
        "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
        "error_code": "OK",
        "filename": "string",
        "protocol": "SFTP",
        "reference_id": "SFTP-export-action",
        "status": "NEW",
        "type": "SEND"
      }
    ],
    "reference_id": "lrn-bulk-LRN-2022-10-14",
    "status": "NEW",
    "type": "LRN",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "bulk_dip_task"
}

Schema / BulkDipTasksResponse

Bulk Dip Tasks

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:BulkDipTaskResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "done_at": "2021-08-13T04:08:44.762841Z",
        "enable_cdr_export": false,
        "enhanced": false,
        "error_code": "OK",
        "format": "CSV",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "messaging_lookup": false,
        "numbers": [
          "12003004000"
        ],
        "on_done_actions": [
          {
            "archive_format": "TAR_GZ",
            "auth_identity": "upload-user",
            "auth_method": "BASIC",
            "auth_secret": "supersecretsauce",
            "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
            "error_code": "OK",
            "filename": "string",
            "protocol": "SFTP",
            "reference_id": "SFTP-export-action",
            "status": "NEW",
            "type": "SEND"
          }
        ],
        "reference_id": "lrn-bulk-LRN-2022-10-14",
        "status": "NEW",
        "type": "LRN",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "bulk_dip_task"
    }
  ]
}

Schema / CDR

A single call data record

Type Object

Name Type Description
fees Array:CDRFee
host_number String Desc. host_number
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
item_count Integer Desc. item_count
item_id String Desc. item_id
remote_number String Desc. remote_number
sell_rate String(format:decimal) Desc. sell_rate
status Enum:String Main status of the CDR
subtype Enum:String Desc. subtype
surcharges Array:CDRSurcharge
total String(format:decimal) Desc. total
type Enum:String Desc. type
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. host_number

Depending on the CDR type, this can be an actual phone number or some other value

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. item_count

How many items does this CDR actually represent

Desc. item_id

Depending on the CDR type, this will be the id of another record

Desc. remote_number

Depending on the CDR type, this can be an actual phone number or some other value

Desc. sell_rate

The base rate (no fees or surcharges), already includes the count

Enum Values status

Allowed values

  • UNKNOWN
  • OK
  • MISS
  • ERROR
  • REFUND
  • NO_ANSWER
  • BUSY
  • CANCELLED
  • CHANNEL_UNAVAILABLE
  • CONGESTION
  • TEMP_FAILURE

Enum Values subtype

Allowed values

  • NONE
  • LRN
  • LRNE
  • MESSAGING_CARRIER_LOOKUP
  • CNAM
  • TTS
  • OUTBOUND
  • INBOUND
  • TERMINATION
  • SIP_IAX
  • DID_RCF
  • DID_VOIP
  • CALLBACK
  • DID
  • CHARGE
  • PREPAYMENT
  • TAX
  • PAYMENT
  • ADJUSTMENT
  • DID_REGISTRY
  • DID_REGISTRY_NRC
  • DID_REGISTRY_A_MRC
  • DEDICATED_ESPID
  • DEDICATED_ESPID_NRC
  • DEDICATED_ESPID_A_MRC
  • DID_TIER
  • DID_TIER_NRC
  • DID_TIER_A_MRC
  • CSP_BRAND
  • CSP_BRAND_A_MRC
  • CSP_BRAND_VETTING
  • CSP_CAMPAIGN
  • CSP_CAMPAIGN_MRC
  • CSP_CAMPAIGN_A_MRC

Desc. subtype

Further refines the CDR type, depending on what the

Desc. total

The total amount charged (sell_rate+fees+surcharges)

Enum Values type

Allowed values

  • API
  • MMS
  • SMS
  • VOICE
  • BALANCE
  • MISC

Desc. type

The main category that the CDR belongs to.

Example

{
  "fees": [
    {
      "cost": "0.000100",
      "name": "extra_cheese"
    }
  ],
  "host_number": "12003004000",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "item_count": 1,
  "item_id": "01FCYT490ZK2NYF0BFYRFFAJZ8",
  "remote_number": "12003004001",
  "sell_rate": "0.000900",
  "status": "UNKNOWN",
  "subtype": "NONE",
  "surcharges": [
    {
      "cost": "0.000100",
      "name": "ACME Corp"
    }
  ],
  "total": "0.000900",
  "type": "API",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / CDRFee

Represents a single fee in a CDR

Type Object

Name Type Description
cost String(format:decimal)
name String

Example

{
  "cost": "0.000100",
  "name": "extra_cheese"
}

Schema / CDRLookupResultResponse

Single cdr

Type Object

Name Type Description
cdr CDRResponse
lookups Array Desc. lookups

Desc. lookups

Contains a copy of the CDR's dip result, note only API CDRs are supported

Example

{
  "cdr": {
    "associations": {
      "api_key": {
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
      }
    },
    "data": {
      "fees": [
        {
          "cost": "0.000100",
          "name": "extra_cheese"
        }
      ],
      "host_number": "12003004000",
      "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
      "inserted_at": "2021-08-13T04:08:44.762841Z",
      "item_count": 1,
      "item_id": "01FCYT490ZK2NYF0BFYRFFAJZ8",
      "remote_number": "12003004001",
      "sell_rate": "0.000900",
      "status": "UNKNOWN",
      "subtype": "NONE",
      "surcharges": [
        {
          "cost": "0.000100",
          "name": "ACME Corp"
        }
      ],
      "total": "0.000900",
      "type": "API",
      "updated_at": "2021-08-13T04:08:44.762841Z"
    },
    "type": "cdr"
  },
  "lookups": []
}

Schema / CDRResponse

Single CDR record

Type Object

Name Type Description
associations associations
data CDR
type String

associations

Name Type Description
api_key api_key

api_key

Name Type Description
id String(format:uuid) Desc. id

Desc. id

The UUID of the API Key associated with the CDR.

API Key may not be populated in some cases where an API is not readily available.

For example CDRs for INBOUND messages will typically not have their API Key populated.

Example

{
  "associations": {
    "api_key": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    }
  },
  "data": {
    "fees": [
      {
        "cost": "0.000100",
        "name": "extra_cheese"
      }
    ],
    "host_number": "12003004000",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "item_count": 1,
    "item_id": "01FCYT490ZK2NYF0BFYRFFAJZ8",
    "remote_number": "12003004001",
    "sell_rate": "0.000900",
    "status": "UNKNOWN",
    "subtype": "NONE",
    "surcharges": [
      {
        "cost": "0.000100",
        "name": "ACME Corp"
      }
    ],
    "total": "0.000900",
    "type": "API",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "cdr"
}

Schema / CDRSurcharge

Represents a single surcharge in a CDR

Type Object

Name Type Description
cost String(format:decimal)
name String

Example

{
  "cost": "0.000100",
  "name": "ACME Corp"
}

Schema / CDRsResponse

CDRs

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CDRResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "api_key": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        }
      },
      "data": {
        "fees": [
          {
            "cost": "0.000100",
            "name": "extra_cheese"
          }
        ],
        "host_number": "12003004000",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "item_count": 1,
        "item_id": "01FCYT490ZK2NYF0BFYRFFAJZ8",
        "remote_number": "12003004001",
        "sell_rate": "0.000900",
        "status": "UNKNOWN",
        "subtype": "NONE",
        "surcharges": [
          {
            "cost": "0.000100",
            "name": "ACME Corp"
          }
        ],
        "total": "0.000900",
        "type": "API",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "cdr"
    }
  ]
}

Schema / CSPCampaignOptoutItem

A record representing an opt-out for a host and remote number pair under a campaign.

Optouts may be manually added or may be triggered by the remote_number to stop receiving messages.

Type Object

Name Type Description
host_number String Desc. host_number
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
keyword String Desc. keyword
remote_number String Desc. remote_number
tcr_campaign_id String Desc. tcr_campaign_id
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. keyword

If the optout was triggered by the system, this field will be populated with the keyword used.

Will be some variant of STOP normally.

For more information about keywords and their handling, contact support.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Desc. tcr_campaign_id

The Campaign ID, as issued by TCR.

Example

{
  "host_number": "12003004000",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "keyword": "STOP",
  "remote_number": "12003004001",
  "tcr_campaign_id": "C012345",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / CSPCampaignOptoutItemResponse

Single Optout Item

Type Object

Name Type Description
associations associations
data CSPCampaignOptoutItem
type String

associations

Name Type Description
csp_campaign csp_campaign Desc. csp_campaign
host_did host_did Desc. host_did
sms sms Desc. sms

Desc. csp_campaign

A reference to the csp campaign that this optout belongs to.

Desc. host_did

A reference to the host number (did) that may have originated the optout.

Desc. sms

If the optout was triggered by an SMS, this association will be set.

Otherwise it will be null.

Note that the SMS may be removed if outside the creation month.

csp_campaign

Name Type Description
id String(format:uuid) Desc. id
tcr_campaign_id String Desc. tcr_campaign_id

Desc. id

A Universally unique identifier, which identifies the resource

Desc. tcr_campaign_id

TCR Campaign ID, of the associated campaign.

host_did

Name Type Description
id String(format:uuid) Desc. id
number String Desc. number

Desc. id

A Universally unique identifier, which identifies the resource

Desc. number

Will match the host_number from the optout item, may not be set under certain circumstances.

sms

Name Type Description
id String(format:ulid) Desc. id

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "associations": {
    "csp_campaign": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "tcr_campaign_id": "C012345"
    },
    "host_did": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "number": "12003004000"
    },
    "sms": {
      "id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
    }
  },
  "data": {
    "host_number": "12003004000",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "keyword": "STOP",
    "remote_number": "12003004001",
    "tcr_campaign_id": "C012345",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "number_optout_item"
}

Schema / CSPCampaignOptoutItemsResponse

CSP Campaign Optout Items

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CSPCampaignOptoutItemResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "csp_campaign": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "tcr_campaign_id": "C012345"
        },
        "host_did": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "number": "12003004000"
        },
        "sms": {
          "id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
        }
      },
      "data": {
        "host_number": "12003004000",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "keyword": "STOP",
        "remote_number": "12003004001",
        "tcr_campaign_id": "C012345",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "number_optout_item"
    }
  ]
}

Schema / CallDataWebhook

A Call Data Webhook is a registered endpoint where CDRs should be sent once billed by the system.

Prior to July 6, 2026, this would ONLY send SMS and MMS CDRs.

Bulk Dip Tasks can be configured to send their generated CDRs with a enable_cdr_export flag.

LRN, CNAM and MRL can similarly be enabled with the same flag: enable_cdr_export on the request.

Type Object

Name Type Description
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_name String Desc. auth_name
auth_secret String Desc. auth_secret
custom_headers Array:SubObject Desc. custom_headers
custom_query_params Array:SubObject Desc. custom_query_params
data String Desc. data
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(1..255) Desc. name
notes String(0..65535) Desc. notes
protocol Enum(NONE, HTTP, SFTP):String Desc. protocol
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. auth_identity

Acts a the username in an authorization pair, only applicable if the auth method is BASIC.

Desc. auth_method

Depending on the protocol, this will affect the authorization behaviour.

  • NONE - no authorization is provided if not required, otherwise placeholder values will be used
  • BASIC - the auth_identity acts as the username while the auth_secret acts as the password
  • With HTTP - an Authorization: Basic <BASE64-VALUE> header will be set
  • With SFTP - the session will be authenticated using the auth_identity and auth_secret
  • BEARER - the auth_identity is ignored and only the auth_secret is used verbatim
  • With HTTP - an Authorization: Bearer <VALUE> header will be set
  • with SFTP - the username will be a placeholder value and the password will be set

Desc. auth_name

Reserved for other protocols that may require additional auth information.

Desc. auth_secret

Acts as the password in an authorization pair, if using BEARER, it will be the verbatim token.

SubObject

Sub-Schema

Type Object

Name Type Description
key String
value String

Desc. custom_headers

A list of custom header values that should be sent on the HTTP request.

Headers are currently unused if the protocol is not HTTP.

SubObject

Sub-Schema

Type Object

Name Type Description
key String
value String

Desc. custom_query_params

A list of custom query parameters that should be sent on the HTTP request.

These are currently unused if the protocol is not HTTP.

Desc. data

Depending on the protocol, this will contain the url or address of the endpoint.

For HTTP, it will be an http url, as for SFTP, it will be the hostname and optionally the port.

  • HTTP - (e.g. "http://example.com/path/to/upload")
  • SFTP - (e.g. "sftp://sftp.example.com/path/to/upload")

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. name

A display name for the call data webhook, used purely for identifying it.

Desc. notes

Any notes or details about the call data webhook.

Desc. protocol

The transport protocol which should be used to send

  • NONE - Effectively a no-op.
  • HTTP - Send CDRs over HTTP.
  • SFTP - Upload CDRs over SFTP.

Example

{
  "auth_identity": "string",
  "auth_method": "NONE",
  "auth_name": "string",
  "auth_secret": "string",
  "custom_headers": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "custom_query_params": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "data": "string",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "CDR Webhook us-east",
  "notes": "string",
  "protocol": "NONE",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / CallDataWebhookResponse

Single Call Data Webhook

Type Object

Name Type Description
data CallDataWebhook
type String

Example

{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_webhook"
}

Schema / CallDataWebhooksResponse

Call Data Webhooks

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CallDataWebhookResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "auth_identity": "string",
        "auth_method": "NONE",
        "auth_name": "string",
        "auth_secret": "string",
        "custom_headers": [
          {
            "key": "x-my-header",
            "value": "Anything"
          }
        ],
        "custom_query_params": [
          {
            "key": "x-my-header",
            "value": "Anything"
          }
        ],
        "data": "string",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "CDR Webhook us-east",
        "notes": "string",
        "protocol": "NONE",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "call_data_webhook"
    }
  ]
}

Schema / Cart

An order being prepared for checkout.

Type Object

Name Type Description
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(3..255) Desc. name
notes String Desc. notes
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. name

A unique name identifying the cart, must be unique to the account

Desc. notes

Any additional information about the request, may be read by an operations personel in case of manual action

Example

{
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "My New Order",
  "notes": "string",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / CartRequest

A request being prepared in a cart

Type Object

Name Type Description
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String
notes String
type RequestType
updated_at String(format:date-time) An ISO8601 formatted timestamp
* One-Of

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

One-Of

Types

Example

{
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "string",
  "notes": "string",
  "type": "ADD_CAMPAIGN_NUMBERS",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "*": {
    "numbers": [
      "12003004000"
    ],
    "*": {
      "tcr_campaign_id": "C000000"
    }
  }
}

Schema / CartRequestAddCampaignNumbersData

Request for registering numbers under a TCR Campaign.

Campaigns must be known to Tychron before submitting this request, either: * Via sharing * Provisioned by Tychron directly

Type Object

Name Type Description
numbers Array:String Desc. numbers
* One-Of

Desc. numbers

A list of NANP 11-digit numbers to add campaigns to.

Keep in mind, campaigns are only supported on non-tollfree TenDLC numbers.

For example: 12003004000.

... tcr_campaign_id

Sub-Schema

Type Object

Name Type Description
tcr_campaign_id String Desc. tcr_campaign_id

Desc. tcr_campaign_id

The TCR issued Campaign ID, typically in the form of CNNNNNN.

  • This field will be backfilled if campaign_id is provided instead.
  • If this field AND campaign_id are provided they must resolve to the same campaign.

... campaign_id

Sub-Schema

Type Object

Name Type Description
campaign_id String(format:uuid) Desc. campaign_id

Desc. campaign_id

The internal UUID of a known campaign.

  • This field will be backfilled if tcr_campaign_id is provided instead.
  • If this field AND tcr_campaign_id are provided they must resolve to the same campaign.

One-Of

Types

Example

{
  "numbers": [
    "12003004000"
  ],
  "*": {
    "tcr_campaign_id": "C000000"
  }
}

Schema / CartRequestAddMessagingNumbersData

Request for enabling messaging on existing or new numbers; new numbers will be created as needed

Type Object

Name Type Description
api_key_ids Array:String(format:uuid) Desc. api_key_ids
message_class Enum(A2P, P2P):String Desc. message_class
mms_enabled Boolean Desc. mms_enabled
numbers Array:String(format:tel) Desc. numbers
switch_id String(format:uuid) Desc. switch_id

Desc. api_key_ids

A list of API Keys that should be bound to the numbers once enabled.

If the number is already bound to the listed keys, then nothing will change.

Note that this will add new keys and not replace the existing bindings.

Desc. message_class

The messaging class of the numbers to be provisioned, by default this will be A2P.

  • A2P - Application to Person
  • P2P - Person to Person

Desc. mms_enabled

Should the numbers be MMS enabled?

MMS can also be enabled later by simply toggling it via the DID API.

Note. If your account does not support MMS by default, then toggling this flag does nothing.

Desc. numbers

A list of NANP 11-digit numbers to enable messaging on.

Non-tollfree numbers can normally be enabled outside of some special cases.

For tollfree, additional action may be required before completion.

Desc. switch_id

The ID of the switch that should be attached to the did for messaging.

Note. This changes the DID's messaging switch, not its voice fallback one.

Leaving this field blank will not overwrite the existing switch.

Example

{
  "api_key_ids": [
    "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
  ],
  "message_class": "A2P",
  "mms_enabled": false,
  "numbers": [
    "12003004000"
  ],
  "switch_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
}

Schema / CartRequestAddVoiceNumbersData

Request for enabling voice BYOC (Bring Your Own Carrier) numbers

Type Object

Name Type Description
numbers Array:String Desc. numbers
switch_id String(format:uuid) Desc. switch_id

Desc. numbers

A list of NANP 11-digit numbers to add

Desc. switch_id

The ID of the switch that should be attached to the did for voice fallback

Example

{
  "numbers": [
    "12003004000"
  ],
  "switch_id": "9cdb55c0-6e15-4513-8430-4152fc8e07d3"
}

Schema / CartRequestNewNumbersData

Request for acquiring new numbers by search parameters.

Note. While only the quantity is mentioned as required, additional search parameters SHOULD be provided.

Those are: * state - the 2 character state code (e.g. IL, FL, WA) * rate_center - the 9 character rate center code * npa - the 3 digit Area Code (e.g. 455) * nxx - the 3 digit Exchange Code (e.g. 400)

Type Object

Name Type Description
state String

Example

{
  "state": "string"
}

Schema / CartRequestRegisterBrandData

Request for registering a new CSP Brand.

Type Object

Name Type Description
address1 String
alt_business_id String
alt_business_id_type String
brand_relationship String
business_contact_email String(format:email)
city String
company_name String
country_code String
display_name String
ein String
ein_issuing_country_code String
email String(format:email)
entity_type String
first_name String
last_name String
phone_number String
state String
stock_exchange String
stock_symbol String
vertical String
website String
zip_code String

Example

{
  "address1": "string",
  "alt_business_id": "string",
  "alt_business_id_type": "string",
  "brand_relationship": "string",
  "business_contact_email": "string",
  "city": "string",
  "company_name": "ACME Corp",
  "country_code": "string",
  "display_name": "ACME Corp Brand",
  "ein": "00000000",
  "ein_issuing_country_code": "US",
  "email": "string",
  "entity_type": "string",
  "first_name": "John",
  "last_name": "Doe",
  "phone_number": "12003004000",
  "state": "string",
  "stock_exchange": "string",
  "stock_symbol": "string",
  "vertical": "string",
  "website": "string",
  "zip_code": "string"
}

Schema / CartRequestRegisterCampaignData

Request for registering a TCR Campaign.

Please note that TCR's Terms And Conditions must be accepted via the terms_and_conditions field in order to register a campaign, the request will be rejected otherwise.

Note some fields are not marked as mandatory due to their hybrid validation requirements.

  • tcr_reseller_id - Pairs with reseller_id
  • tcr_brand_id - Pairs with brand_id

When these hybrid fields care used either the tcr_* or the base field or BOTH can be used.

That is, to specify a reseller, you may provide its TCR ID (e.g. R00000) or it's UUID (e.g. 00000000-0000-4000-0000-000000000000), or both can be provided.

In the case that both fields are specified, they MUST resolve to the same record.

Please note, brand and reseller are MANDATORY, but must be specified by one or both of its respective fields.

Type Object

Name Type Description
affiliate_marketing Boolean
age_gated Boolean
brand_id String(format:uuid) Internal UUID of CSP Brand
description String
direct_lending Boolean
embedded_link Boolean
embedded_link_sample String
embedded_phone Boolean
help_keywords String Desc. help_keywords
help_message String
message_flow String
mno_ids Array:String
number_pool Boolean
optin_keywords String Desc. optin_keywords
optin_message String
optout_keywords String Desc. optout_keywords
optout_message String
privacy_policy_link String
reseller_id String(format:uuid) Internal UUID of CSP Reseller
samples Array:String
sub_use_cases Array:String
subscriber_help Boolean
subscriber_optin Boolean
subscriber_optout Boolean
tcr_brand_id String Desc. tcr_brand_id
tcr_reseller_id String Desc. tcr_reseller_id
terms_and_conditions Boolean Desc. terms_and_conditions
terms_and_conditions_link String
use_case String

Desc. help_keywords

Must be a CSV, that is a comma separated list of keywords.

Excess spaces will be trimmed around each keyword.

Desc. optin_keywords

Must be a CSV, that is a comma separated list of keywords.

Excess spaces will be trimmed around each keyword.

Desc. optout_keywords

Must be a CSV, that is a comma separated list of keywords.

Excess spaces will be trimmed around each keyword.

Desc. tcr_brand_id

TCR issued Brand ID.

Desc. tcr_reseller_id

TCR issued Reseller ID.

Desc. terms_and_conditions

Do you accept TCR's Terms and Conditions, this flag MUST be true in order to register a campaign.

If false the campaign will not be accepted for registration.

Example

{
  "affiliate_marketing": false,
  "age_gated": false,
  "brand_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "description": "string",
  "direct_lending": false,
  "embedded_link": false,
  "embedded_link_sample": "string",
  "embedded_phone": false,
  "help_keywords": "HELP,INFO",
  "help_message": "string",
  "message_flow": "string",
  "mno_ids": [
    "string"
  ],
  "number_pool": false,
  "optin_keywords": "OPTIN,START,SUBSCRIBE",
  "optin_message": "string",
  "optout_keywords": "OPTOUT,STOP,UNSUBSCRIBE",
  "optout_message": "string",
  "privacy_policy_link": "string",
  "reseller_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "samples": [
    "string"
  ],
  "sub_use_cases": [
    "string"
  ],
  "subscriber_help": false,
  "subscriber_optin": false,
  "subscriber_optout": false,
  "tcr_brand_id": "B000000",
  "tcr_reseller_id": "R000000",
  "terms_and_conditions": false,
  "terms_and_conditions_link": "string",
  "use_case": "string"
}

Schema / CartRequestRemoveCampaignNumbersData

Request for removing numbers from an existing campaign.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to disable messaging for

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / CartRequestRemoveMessagingNumbersData

Request for disabling messaging on existing numbers.

Note that this will also remove numbers from their campaign automatically.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to disable messaging for

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / CartRequestRemoveNumbersData

Request for removing numbers and all of their components from the system.

This request should be used if you wish to completely remove a number and all of its components.

This request can be used to remove voice-only or messaging-only numbers as well, and should be preferred in those cases.

The request itself will create the respective removal requests during processing.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to remove

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / CartRequestRemoveVoiceNumbersData

Request for removing voice-only numbers.

Voice-only numbers are typically enabled using ADD_VOICE_NUMBERS.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to remove

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / CartRequestResponse

Single request

Type Object

Name Type Description
data CartRequest
type String

Example

{
  "data": {
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "string",
    "notes": "string",
    "type": "ADD_CAMPAIGN_NUMBERS",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "*": {
      "numbers": [
        "12003004000"
      ],
      "*": {
        "tcr_campaign_id": "C000000"
      }
    }
  },
  "type": "request"
}

Schema / CartRequestUnregisterBrandData

Request for unregistering a TCR Brand.

Either the brand_id (UUID) or the tcr_brand_id can be provided to lookup the brand for removal.

Type Object

Name Type Description
tcr_brand_id ~ String TCR issued Brand ID
brand_id ~ String(format:uuid) Internal UUID

Example

{
  "tcr_brand_id": "B000000"
}

Schema / CartRequestUnregisterCampaignData

Request for unregistering a TCR Campaign.

Either the campaign_id (UUID) or the tcr_campaign_id can be provided to lookup the respective campaign for removal.

Type Object

Name Type Description
tcr_campaign_id ~ String TCR issued ID
campaign_id ~ String(format:uuid) Internal UUID

Example

{
  "tcr_campaign_id": "B000000"
}

Schema / CartRequestVetBrandData

Request for vetting a TCR Brand.

Either the brand_id (UUID) or the tcr_brand_id can be provided to lookup the brand for removal.

Type Object

Name Type Description
tcr_evp_id String Desc. tcr_evp_id
vetting_class String Desc. vetting_class
tcr_brand_id ~ String TCR issued Brand ID
brand_id ~ String(format:uuid) Internal UUID

Desc. tcr_evp_id

The External Vetting Provider that should perform the brand's vetting.

Desc. vetting_class

Depending on the selected vetting provider, the available vetting classes may change.

Example

{
  "tcr_evp_id": "AEGIS",
  "vetting_class": "STANDARD",
  "tcr_brand_id": "B000000"
}

Schema / CartRequestsResponse

Requests

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CartRequestResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "string",
        "notes": "string",
        "type": "ADD_CAMPAIGN_NUMBERS",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "*": {
          "numbers": [
            "12003004000"
          ],
          "*": {
            "tcr_campaign_id": "C000000"
          }
        }
      },
      "type": "request"
    }
  ]
}

Schema / CartResponse

Single cart

Type Object

Name Type Description
data Cart
type String

Example

{
  "data": {
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "My New Order",
    "notes": "string",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "cart"
}

Schema / CartsResponse

Carts

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CartResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "My New Order",
        "notes": "string",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "cart"
    }
  ]
}

Schema / CreateApiKeyData

Parameters for updating an api key

Type Object

Name Type Description
active Boolean Whether the API Key is active for use
name String A display name for the API Key
notes String Any notes on the API Key

Example

{
  "active": false,
  "name": "string",
  "notes": "string"
}

Schema / CreateApiKeyRequest

Request for update an existing API Key

Type Object

Name Type Description
data CreateApiKeyData
type String

Example

{
  "data": {
    "active": false,
    "name": "string",
    "notes": "string"
  },
  "type": "api_key"
}

Schema / CreateApiKeyResponse

Newly created API Key

Type Object

Name Type Description
data CreatedApiKey
type String

Example

{
  "data": {
    "active": true,
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "identity": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "key": "RBAARJAXGMRJ3AOD55WDO5WKN5GEFZGSZOAGJ27DOYJ22IBRU7W77Z6QKAYXCAXI",
    "name": "My API Key",
    "notes": "This API Key is used for the west datacenter's SMS notifications.",
    "secret": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
    "smpp_secert": "FDJX6MO4",
    "smpp_system_id": "EIIGBT24ZH242U5",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "api_key"
}

Schema / CreateBulkDipTaskData

Parameters for creating a new export task.

Type Object

Name Type Description
enhanced Boolean Desc. enhanced
format Enum(CSV, MLJSON):String Desc. format
messaging_lookup Boolean Desc. messaging_lookup
numbers Array(0..20000):String(format:tel) Numbers to lookup
on_done_actions CreateOnDoneActions
reference_id String(1..255) Desc. reference_id
type Enum(LRN, MCL, CNAM):String Desc. type

Desc. enhanced

Used for LRN type, enables enhanced lookup.

Please consult the LRN documentation for additional details.

Desc. format

The intended exported format, CSV will export a CSV file as expected. MLJSON exports the cdrs as Multiline-JSON, that is each row in the file is a single record encoded as JSON.

  • CSV
  • MLJSON

Desc. messaging_lookup

Used for LRN type, enables messaging lookup, MCL will be added.

Please consult the LRN documentation for additional details.

Desc. reference_id

A unique client provided id for the bulk task.

There is no particular format that is enforced, a general recommendation is to avoid spaces and non-ASCII characters for best experience.

Desc. type

The type of bulk dip that should be performed:

  • LRN - Location Routing Number lookups
  • MCL - Messaging Carrier Lookup
  • CNAM - Caller Name

Example

{
  "enhanced": false,
  "format": "CSV",
  "messaging_lookup": false,
  "numbers": [
    "12003004000"
  ],
  "on_done_actions": [
    {
      "archive_format": "TAR_GZ",
      "auth_identity": "upload-user",
      "auth_method": "BASIC",
      "auth_secret": "supersecretsauce",
      "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
      "filename": "string",
      "protocol": "SFTP",
      "reference_id": "SFTP-export-action",
      "type": "SEND"
    }
  ],
  "reference_id": "lrn-bulk-LRN-2022-10-14",
  "type": "LRN"
}

Schema / CreateBulkDipTaskRequest

Request for creating a new Bulk Dip Task

Type Object

Name Type Description
data CreateBulkDipTaskData
type String

Example

{
  "data": {
    "enhanced": false,
    "format": "CSV",
    "messaging_lookup": false,
    "numbers": [
      "12003004000"
    ],
    "on_done_actions": [
      {
        "archive_format": "TAR_GZ",
        "auth_identity": "upload-user",
        "auth_method": "BASIC",
        "auth_secret": "supersecretsauce",
        "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
        "filename": "string",
        "protocol": "SFTP",
        "reference_id": "SFTP-export-action",
        "type": "SEND"
      }
    ],
    "reference_id": "lrn-bulk-LRN-2022-10-14",
    "type": "LRN"
  },
  "type": "bulk_dip_task"
}

Schema / CreateCallDataWebhookData

Parameters for creating a new Call Data Webhook.

Type Object

Name Type Description
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_name String Desc. auth_name
auth_secret String Desc. auth_secret
custom_headers Array:SubObject Desc. custom_headers
custom_query_params Array:SubObject Desc. custom_query_params
data String Desc. data
name String(1..255) Desc. name
notes String(0..65535) Desc. notes
protocol Enum(NONE, HTTP, SFTP):String Desc. protocol

Desc. auth_identity

Acts a the username in an authorization pair, only applicable if the auth method is BASIC.

Desc. auth_method

Depending on the protocol, this will affect the authorization behaviour.

  • NONE - no authorization is provided if not required, otherwise placeholder values will be used
  • BASIC - the auth_identity acts as the username while the auth_secret acts as the password
  • With HTTP - an Authorization: Basic <BASE64-VALUE> header will be set
  • With SFTP - the session will be authenticated using the auth_identity and auth_secret
  • BEARER - the auth_identity is ignored and only the auth_secret is used verbatim
  • With HTTP - an Authorization: Bearer <VALUE> header will be set
  • with SFTP - the username will be a placeholder value and the password will be set

Desc. auth_name

Reserved for other protocols that may require additional auth information.

Desc. auth_secret

Acts as the password in an authorization pair, if using BEARER, it will be the verbatim token.

SubObject

Sub-Schema

Type Object

Name Type Description
key String
value String

Desc. custom_headers

A list of custom header values that should be sent on the HTTP request.

Headers are currently unused if the protocol is not HTTP.

SubObject

Sub-Schema

Type Object

Name Type Description
key String
value String

Desc. custom_query_params

A list of custom query parameters that should be sent on the HTTP request.

These are currently unused if the protocol is not HTTP.

Desc. data

Depending on the protocol, this will contain the url or address of the endpoint.

For HTTP, it will be an http url, as for SFTP, it will be the hostname and optionally the port.

  • HTTP - (e.g. "http://example.com/path/to/upload")
  • SFTP - (e.g. "sftp://sftp.example.com/path/to/upload")

Desc. name

A display name for the call data webhook, used purely for identifying it.

Desc. notes

Any notes or details about the call data webhook.

Desc. protocol

The transport protocol which should be used to send

  • NONE - Effectively a no-op.
  • HTTP - Send CDRs over HTTP.
  • SFTP - Upload CDRs over SFTP.

Example

{
  "auth_identity": "string",
  "auth_method": "NONE",
  "auth_name": "string",
  "auth_secret": "string",
  "custom_headers": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "custom_query_params": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "data": "string",
  "name": "CDR Webhook us-east",
  "notes": "string",
  "protocol": "NONE"
}

Schema / CreateCallDataWebhookRequest

Request for creating a new Call Data Webhook

Type Object

Name Type Description
data CreateCallDataWebhookData
type String

Example

{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}

Schema / CreateCartData

Request for creating a new cart

Type Object

Name Type Description
name String A unique name identifying the cart
notes String Desc. notes

Desc. notes

Optional information about the cart, or order.

Example

{
  "name": "string",
  "notes": "string"
}

Schema / CreateCartRequest

Request for creating a new cart

Type Object

Name Type Description
data CreateCartData
type String

Example

{
  "data": {
    "name": "string",
    "notes": "string"
  },
  "type": "cart"
}

Schema / CreateCartRequestData

Request for creating a new cart request

Type Object

Name Type Description
name String
notes String
type RequestType
* One-Of

One-Of

Types

Example

{
  "name": "Add Messaging to 1200xxx numbers",
  "notes": "Some note about this request",
  "type": "ADD_CAMPAIGN_NUMBERS",
  "*": {
    "numbers": [
      "12003004000"
    ],
    "*": {
      "tcr_campaign_id": "C000000"
    }
  }
}

Schema / CreateCartRequestRequest

Request for creating a new cart

Type Object

Name Type Description
data CreateCartRequestData
type String

Example

{
  "data": {
    "name": "Add Messaging to 1200xxx numbers",
    "notes": "Some note about this request",
    "type": "ADD_CAMPAIGN_NUMBERS",
    "*": {
      "numbers": [
        "12003004000"
      ],
      "*": {
        "tcr_campaign_id": "C000000"
      }
    }
  },
  "type": "request"
}

Schema / CreateDestinationRequest

Request for creating a new Number Destination

Type Object

Name Type Description
data UpsertDestinationData
type String

Example

{
  "data": {
    "activated": true,
    "auth_identity": "username",
    "auth_method": "BASIC",
    "auth_secret": "password",
    "destination": "http://example.com/http/route/call",
    "priority": 1,
    "tts_message_set_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "type": "HTTP_ROUTE"
  },
  "type": "number_destination"
}

Schema / CreateExportTaskData

Parameters for creating a new export task.

Type Object

Name Type Description
date String(format:date) Desc. date
format Enum(CSV, MLJSON):String Desc. format
on_done_actions CreateOnDoneActions
reference_id String(1..255) Desc. reference_id
type Enum:String Desc. type

Desc. date

An ISO8601 formatted date. Determines which day's cdrs will be exported.

Note that if a current or future date is provided, the task will be deferred to the day AFTER the given date.

Desc. format

The intended exported format, CSV will export a CSV file as expected. MLJSON exports the cdrs as Multiline-JSON, that is each row in the file is a single CDR record encoded as JSON.

Desc. reference_id

A unique client provided id for the export task.

There is no particular format that is enforced, a general recommendation is to avoid spaces and non-ASCII characters for best experience.

Enum Values type

Allowed values

  • API
  • MMS
  • SMS
  • VOICE
  • BALANCE
  • MISC

Desc. type

The main type of CDR that should be exported

  • API - contain any LRN, LRNE, CNAM related calls
  • MMS - contain the billed details for MMS records
  • SMS - contain the billed details for SMS records
  • VOICE - contain any voice related calls (TERMINATION, DID*)
  • BALANCE - any balance related changes, including payments, adjustments etc...
  • MISC - contains various registry related feees

Example

{
  "date": "string",
  "format": "CSV",
  "on_done_actions": [
    {
      "archive_format": "TAR_GZ",
      "auth_identity": "upload-user",
      "auth_method": "BASIC",
      "auth_secret": "supersecretsauce",
      "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
      "filename": "string",
      "protocol": "SFTP",
      "reference_id": "SFTP-export-action",
      "type": "SEND"
    }
  ],
  "reference_id": "cdr-export-API-2022-03-14",
  "type": "API"
}

Schema / CreateExportTaskRequest

Request for creating a new CDR Export Task

Type Object

Name Type Description
data CreateExportTaskData
type String

Example

{
  "data": {
    "date": "string",
    "format": "CSV",
    "on_done_actions": [
      {
        "archive_format": "TAR_GZ",
        "auth_identity": "upload-user",
        "auth_method": "BASIC",
        "auth_secret": "supersecretsauce",
        "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
        "filename": "string",
        "protocol": "SFTP",
        "reference_id": "SFTP-export-action",
        "type": "SEND"
      }
    ],
    "reference_id": "cdr-export-API-2022-03-14",
    "type": "API"
  },
  "type": "call_data_export_task"
}

Schema / CreateMessageRequest

Request for creating a new tts message

Type Object

Name Type Description
data UpsertMessageData
type String

Example

{
  "data": {
    "body": "Pre-answer Greeter",
    "priority": 1
  },
  "type": "tts_message"
}

Schema / CreateMessageSetRequest

Request for creating a new tts message set

Type Object

Name Type Description
data UpsertMessageSetData
type String

Example

{
  "data": {
    "name": "Pre-answer Greeter"
  },
  "type": "tts_message_set"
}

Schema / CreateOnDoneAction

Type Object

Name Type Description
archive_format Enum(NONE, TAR, TAR_GZ, ZIP):String Desc. archive_format
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_secret String Desc. auth_secret
data String Desc. data
filename String Desc. filename
protocol Enum(NONE, HTTP, SFTP):String Desc. protocol
reference_id String(0..255) Desc. reference_id
type Enum(NONE, NOTIFY, SEND):String Desc. type

Desc. archive_format

Sometimes it is desirable to send the exported file in some kind of archive or compressed format.

This field can be set to configure that.

Otherwise the file will be returned in its raw form.

  • NONE - no archive format, returns the file as-is (default)
  • TAR - send the exported file in a tarball
  • TAR_GZ - send the exported file in a gzipped tarball
  • ZIP - send the exported file in a zipfile

Desc. auth_identity

See auth_method for details

Desc. auth_method

Working with the auth_identity and auth_secret fields, this forms the authorization details for the HTTP and SFTP uploaders.

  • NONE - no authorization required HTTP protocol will not send an Authorization header SFTP protocol will default to username "tychron", and password "tychron" for its details
  • BASIC - use "Basic" authorization, or a username + password pairing auth_identity will be the username auth_secret will be the password
  • BEARER - use a "Bearer" authorization, that is, just the secret HTTP protocol will send a Authorization: Bearer <auth_secret> header SFTP will default its username to "tychron" and set the password as the auth_secret

Desc. auth_secret

See auth_method for details

Desc. data

Depending on the protocol used, this can be a url, or mailing address.

  • NONE - empty
  • HTTP - Must be a valid HTTP url, query parameters will be passed in as is
  • SFTP - Must be of form:

sftp://hostname:port/subpath

Example 1:

Using default ssh port 22 and write the exported file under the given subpath. NOTE. the subpath MUST be created for the upload to complete no attempts will be made to create any new directories by sftp uploader.

sftp://example.com/sub/path/to/store/exported_file/in

Example 2:

Use the explictly set port 22 and write the exported file to wherever the client logged in.

sftp://example.com:22

Desc. filename

Optional override for SFTP filename.

Note. you are responsible for the extensions as well for any archive format it may have.

Desc. protocol

The specific transport protocol to use to delivery notifications or the exported file.

  • NONE - use nothing
  • HTTP - send notifications or files over HTTP
  • SFTP - send exported files over SFTP

Desc. reference_id

Optional client provided id to identify the action.

Desc. type

What kind of action will this be?

  • NONE - do nothing
  • NOTIFY - notify the specified endpoint that the export has completed (only works with HTTP currently)
  • SEND - send the exported file to the specified endpoint (HTTP or SFTP)

Example

{
  "archive_format": "TAR_GZ",
  "auth_identity": "upload-user",
  "auth_method": "BASIC",
  "auth_secret": "supersecretsauce",
  "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
  "filename": "string",
  "protocol": "SFTP",
  "reference_id": "SFTP-export-action",
  "type": "SEND"
}

Schema / CreateOnDoneActions

A list of sub-tasks that should be executed during the DELIVERING status of the task.

These can include: * Notifying a specified endpoint about the completion of the task * Delivering the exported file to a specified endpoint * Doing nothing at all

Type Array

Name Type Description
[n] CreateOnDoneAction

Example

[
  {
    "archive_format": "TAR_GZ",
    "auth_identity": "upload-user",
    "auth_method": "BASIC",
    "auth_secret": "supersecretsauce",
    "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
    "filename": "string",
    "protocol": "SFTP",
    "reference_id": "SFTP-export-action",
    "type": "SEND"
  }
]

Schema / CreateOptoutItemData

Parameters for creating a Number Optout Item

Type Object

Name Type Description
host_number String Desc. host_number
remote_number String Desc. remote_number

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Example

{
  "host_number": "12003004000",
  "remote_number": "12003004001"
}

Schema / CreateOptoutItemRequest

Request for creating a new Number Optout Item

Type Object

Name Type Description
data CreateOptoutItemData
type String

Example

{
  "data": {
    "host_number": "12003004000",
    "remote_number": "12003004001"
  },
  "type": "number_optout_item"
}

Schema / CreateRequestDocumentRequest

Type Object

Name Type Description
file String(format:binary) Desc. file
file_hint Enum(DEFAULT, MMS, LOA):String Desc. file_hint
filename String Desc. filename
name String Desc. name
notes String Desc. notes

Desc. file

Any file is allowed, please note, files may be subject to scanning.

Do not be malicious.

Desc. file_hint

Depending on the request type, there may be a need for different document types.

  • DEFAULT is the default, and means the uploaded file will be used for any "default" purposes
  • MMS mms hints that the file is related to or to be used for mms purposes
  • LOA the document is an loa

To clear things up, REGISTER_CAMPAIGN uses both types for different purposes: DEFAULT is used for all campaign supporting documents while MMS is used for its MMS sample content.

Desc. filename

Override for the uploaded file's filename.

This is optional, otherwise it uses the file's given filename instead.

Desc. name

A display name for the document.

Desc. notes

Any additional information about the document.

Example

{
  "file": "string",
  "file_hint": "DEFAULT",
  "filename": "abc.pdf",
  "name": "LOA",
  "notes": "LOA from client on 2026-05-20."
}

Schema / CreateRoleData

Request Data when creating a new role.

Type Object

Name Type Description
default_scope Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. default_scope
name String Desc. name
notes String Desc. notes
rank Integer(>= 0) Desc. rank
resources Array:SubObject Desc. resources

Desc. default_scope

Role's default_scope, this is the scope applied when resources specify IGNORE for their own scope.

  • IGNORE - When used as the default_scope, effectively disables all resources that use IGNORE as their scope.
  • USER - Resources are scoped to the user, or their nearest account where applicable.
  • ACCOUNT - Resources are scoped against the user's account.
  • SYSTEM - Cannot be set by the API, but provided for reference, this is the system-wide scope.

Desc. name

Role's display name.

Desc. notes

Any notes about the role.

Desc. rank

Levels dictate the access, scopes filter resources, and ranks allow differentiating the same level of access within the account.

Ranks allow organizing roles within the account by importance.

0 is most relevant sometimes referred to as the highest rank. 1+ are ranks lower.

Ranks primarily affect the modification of: * Users - See Roles for information, as a user's Role dictates their permissions. * Roles - Roles of the same rank can modify themselves and those of lower rank, ranks of a higher rank cannot be modified by those of a lower rank.

SubObject

Sub-Schema

Type Object

Name Type Description
actions Array:SubObject
resource_id String
scope Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. scope

SubObject

Sub-Schema

Type Object

Name Type Description
name Enum:String Desc. name
value Enum(true, false):String Desc. value

Enum Values name

Allowed values

  • sell_rates
  • buy_rates
  • count
  • full_index
  • index
  • assoc
  • show
  • charge
  • reset
  • create
  • update
  • delete
  • purge
  • move
  • import
  • export
  • review
  • protect
  • share
  • unshare
  • impersonate
  • checkout
  • lookup_result
  • process
  • cancel
  • download
  • upload
  • summarize

Desc. name

The name of the action.

Desc. value

Whether or not the action is enabled.

NOTE. This is not a Boolean.

The field is an enum that happens to use the values true and false as strings.

Desc. scope

See Role's default_scope for more details on the enum.

IGNORE acts as a fallback to the default_scope.

Desc. resources

Role's job title, or position

Example

{
  "default_scope": "ACCOUNT",
  "name": "Ordering Role",
  "notes": "This role governs the Ordering System Access",
  "rank": 0,
  "resources": [
    {
      "actions": [
        {
          "name": "sell_rates",
          "value": "true"
        }
      ],
      "resource_id": "string",
      "scope": "IGNORE"
    }
  ]
}

Schema / CreateRoleRequest

Request for creating a new Role.

Type Object

Name Type Description
data CreateRoleData
type String

Example

{
  "data": {
    "default_scope": "ACCOUNT",
    "name": "Ordering Role",
    "notes": "This role governs the Ordering System Access",
    "rank": 0,
    "resources": [
      {
        "actions": [
          {
            "name": "sell_rates",
            "value": "true"
          }
        ],
        "resource_id": "string",
        "scope": "IGNORE"
      }
    ]
  },
  "type": "role"
}

Schema / CreateSecretKeyData

Parameters for updating a Secret Key

Type Object

Name Type Description
name String(3..255) Desc. name
notes String(0..65535) Desc. notes
size Enum(16, 24, 32, 48, 64):Number Desc. size
usage Enum(NONE, SIGNING, ENCRYPTION):String Desc. usage

Desc. name

A friendly name to identify the Secret Key

Desc. notes

Any notes about the Secret Key, like, what it is used for, or other sharable details.

Desc. size

The size of the key that should be created in bytes, or the size of the key in the system.

Different use cases or methods will require different length keys.

Desc. usage

What is the intended usage of the Secret Key, this will bar it from being used for other cases.

NONE is placeholder or temporary disablement state reserved for internal usage.

Only SIGNING and ENCRYPTION can be used otherwise.

Example

{
  "name": "My Secret Key",
  "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
  "size": 32,
  "usage": "SIGNING"
}

Schema / CreateSecretKeyRequest

Request for update an existing Secret Key

Type Object

Name Type Description
data CreateSecretKeyData
type String

Example

{
  "data": {
    "name": "My Secret Key",
    "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
    "size": 32,
    "usage": "SIGNING"
  },
  "type": "secret_key"
}

Schema / CreateSecretKeyResponse

Newly created Secret Key

Type Object

Name Type Description
data CreatedSecretKey
type String

Example

{
  "data": {
    "data": "string",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "My Secret Key",
    "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
    "size": 32,
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "usage": "SIGNING"
  },
  "type": "secret_key"
}

Schema / CreateSwitchRequest

Request for creating a new Switch

Type Object

Name Type Description
data UpsertSwitchData
type String

Example

{
  "data": {
    "mms_auth_method": "NONE",
    "mms_data": "mm4://example.com:2525",
    "mms_enabled": true,
    "mms_identity": "johndoe",
    "mms_message_format": "OXY_JSON_1_0",
    "mms_name": "John Doe",
    "mms_options": {
      "dlr_on_sent": false,
      "forward_dlr": true,
      "pad_shortcodes": false
    },
    "mms_protocol": "NONE",
    "mms_secret": "super$ecret",
    "name": "Primary Messaging Switch",
    "notes": "CA Switch for Data-Center #3, do not DELETE AGAIN.",
    "sms_auth_method": "NONE",
    "sms_data": "https://example.com",
    "sms_enabled": true,
    "sms_identity": "johndoe",
    "sms_message_format": "TRINITY_JSON_1_0",
    "sms_name": "John Doe",
    "sms_options": {
      "dlr_on_sent": false,
      "forward_dlr": true,
      "pad_shortcodes": false
    },
    "sms_protocol": "NONE",
    "sms_secret": "super$ecret",
    "voice_auth_method": "NONE",
    "voice_data": "[email protected]",
    "voice_enabled": false,
    "voice_identity": "johndoe",
    "voice_name": "John Doe",
    "voice_protocol": "NONE",
    "voice_secret": "super$ecret"
  },
  "type": "switch"
}

Schema / CreateUserData

Request Data when create a new user.

The password is optional if the user is not intended to be used for login.

This is recommended for impersonated users who will only be used for API Key based access.

Type Object

Name Type Description
address address Desc. address
email String(format:email) Desc. email
first_name String Desc. first_name
last_name String Desc. last_name
password String Desc. password
password_confirmation String Desc. password_confirmation
title String Desc. title

Desc. address

User Address details, may differ from top-level details

Desc. email

User's email

Desc. first_name

User's first name

Desc. last_name

User's last name

Desc. password

User's login password

Desc. password_confirmation

User's login password (for confirmation)

Desc. title

User's job title, or position

address

Name Type Description
address1 String
address2 String
business_name String
city String
country String
email String
fax_number String
first_name String
house_number String
last_name String
notes String
phone_number String
state String
zip_code String

Example

{
  "address": {
    "address1": "string",
    "address2": "string",
    "business_name": "string",
    "city": "string",
    "country": "string",
    "email": "string",
    "fax_number": "string",
    "first_name": "string",
    "house_number": "string",
    "last_name": "string",
    "notes": "string",
    "phone_number": "string",
    "state": "string",
    "zip_code": "string"
  },
  "email": "[email protected]",
  "first_name": "John",
  "last_name": "Doe",
  "password": "string",
  "password_confirmation": "string",
  "title": "Operator"
}

Schema / CreateUserRequest

Request for creating a new User

Type Object

Name Type Description
data CreateUserData
type String

Example

{
  "data": {
    "address": {
      "address1": "string",
      "address2": "string",
      "business_name": "string",
      "city": "string",
      "country": "string",
      "email": "string",
      "fax_number": "string",
      "first_name": "string",
      "house_number": "string",
      "last_name": "string",
      "notes": "string",
      "phone_number": "string",
      "state": "string",
      "zip_code": "string"
    },
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Doe",
    "password": "string",
    "password_confirmation": "string",
    "title": "Operator"
  },
  "type": "user"
}

Schema / CreatedApiKey

An API key that was newly created

Type Object

Name Type Description
active Boolean
id String(format:uuid) Desc. id
identity String Desc. identity
inserted_at String(format:date-time) An ISO8601 formatted timestamp
key String Token used for HTTP APIs
name String(3..255) A friendly name to identify the API Key
notes String(0..65535) Desc. notes
secret String Acts as the password used for Basic auth
smpp_secert String Desc. smpp_secert
smpp_system_id String Desc. smpp_system_id
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

A Universally unique identifier, which identifies the resource

Desc. identity

Acts as the username in the authorization pair for MM4

Desc. notes

Any notes about the API Key, like, what it is used for, or other sharable details.

Desc. smpp_secert

Used as the password for SMPP connections

Desc. smpp_system_id

Small identifier used when authorizing an SMPP connection

Example

{
  "active": true,
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "identity": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "key": "RBAARJAXGMRJ3AOD55WDO5WKN5GEFZGSZOAGJ27DOYJ22IBRU7W77Z6QKAYXCAXI",
  "name": "My API Key",
  "notes": "This API Key is used for the west datacenter's SMS notifications.",
  "secret": "Z46IWURJGLH5SF3BKKZPXW53TAON6NBX",
  "smpp_secert": "FDJX6MO4",
  "smpp_system_id": "EIIGBT24ZH242U5",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / CreatedSecretKey

An Secret Key that was newly created

Type Object

Name Type Description
data String Desc. data
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(3..255) Desc. name
notes String(0..65535) Desc. notes
size Enum(16, 24, 32, 48, 64):Number Desc. size
updated_at String(format:date-time) An ISO8601 formatted timestamp
usage Enum(NONE, SIGNING, ENCRYPTION):String Desc. usage

Desc. data

Base64 Encoded secret key, only available on creation.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. name

A friendly name to identify the Secret Key

Desc. notes

Any notes about the Secret Key, like, what it is used for, or other sharable details.

Desc. size

The size of the key that should be created in bytes, or the size of the key in the system.

Different use cases or methods will require different length keys.

Desc. usage

What is the intended usage of the Secret Key, this will bar it from being used for other cases.

NONE is placeholder or temporary disablement state reserved for internal usage.

Only SIGNING and ENCRYPTION can be used otherwise.

Example

{
  "data": "string",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "My Secret Key",
  "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
  "size": 32,
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "usage": "SIGNING"
}

Schema / CspAltBusinessIdTypeResponse

CSP Alt Business ID Types

Type Array

Name Type Description
[n] String

Example

[
  "NONE"
]

Schema / CspBrand

A TCR brand associated with the account

Type Object

Name Type Description
address1 String
alt_business_id String
alt_business_id_type String
brand_relationship String
city String
company_name String
country_code String
display_name String
ein String
ein_issuing_country_code String
email String
first_name String
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
last_name String
name String A display name to identify the brand
notes String Any notes about the brand
phone_number String
shared Enum(NO, OWNED, PARTNER):String Desc. shared
state String
stock_exchange String
stock_symbol String
tcr_brand_id String The TCR issued ID of the brand
tcr_csp_id String The owning campaign service provider ID
universal_ein String
updated_at String(format:date-time) An ISO8601 formatted timestamp
vertical String
website String(format:url)
zip_code String

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. shared

Was this brand created directly or was a brand from a partner campaign.

Some fields may contain "UNKNOWN" if a brand is from a partner campaign.

  • NO - Should be treated the same as OWNED
  • OWNED - The brand was created on site and belongs to this system
  • PARTNER - The brand originates from outside of the system

Example

{
  "address1": "string",
  "alt_business_id": "string",
  "alt_business_id_type": "string",
  "brand_relationship": "string",
  "city": "string",
  "company_name": "string",
  "country_code": "string",
  "display_name": "string",
  "ein": "string",
  "ein_issuing_country_code": "string",
  "email": "string",
  "first_name": "string",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "last_name": "string",
  "name": "string",
  "notes": "string",
  "phone_number": "string",
  "shared": "NO",
  "state": "string",
  "stock_exchange": "string",
  "stock_symbol": "string",
  "tcr_brand_id": "B000000",
  "tcr_csp_id": "S000000",
  "universal_ein": "string",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "vertical": "string",
  "website": "string",
  "zip_code": "string"
}

Schema / CspBrandRelationshipsResponse

CSP Brand Relationships

Type Array

Name Type Description
[n] String

Example

[
  "BASIC_ACCOUNT"
]

Schema / CspBrandResponse

Single brand

Type Object

Name Type Description
data CspBrand
type String

Example

{
  "data": {
    "address1": "string",
    "alt_business_id": "string",
    "alt_business_id_type": "string",
    "brand_relationship": "string",
    "city": "string",
    "company_name": "string",
    "country_code": "string",
    "display_name": "string",
    "ein": "string",
    "ein_issuing_country_code": "string",
    "email": "string",
    "first_name": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "last_name": "string",
    "name": "string",
    "notes": "string",
    "phone_number": "string",
    "shared": "NO",
    "state": "string",
    "stock_exchange": "string",
    "stock_symbol": "string",
    "tcr_brand_id": "B000000",
    "tcr_csp_id": "S000000",
    "universal_ein": "string",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "vertical": "string",
    "website": "string",
    "zip_code": "string"
  },
  "type": "csp_brand"
}

Schema / CspBrandsResponse

Brands

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CspBrandResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "address1": "string",
        "alt_business_id": "string",
        "alt_business_id_type": "string",
        "brand_relationship": "string",
        "city": "string",
        "company_name": "string",
        "country_code": "string",
        "display_name": "string",
        "ein": "string",
        "ein_issuing_country_code": "string",
        "email": "string",
        "first_name": "string",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "last_name": "string",
        "name": "string",
        "notes": "string",
        "phone_number": "string",
        "shared": "NO",
        "state": "string",
        "stock_exchange": "string",
        "stock_symbol": "string",
        "tcr_brand_id": "B000000",
        "tcr_csp_id": "S000000",
        "universal_ein": "string",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "vertical": "string",
        "website": "string",
        "zip_code": "string"
      },
      "type": "csp_brand"
    }
  ]
}

Schema / CspCampaign

A TCR campaign

Type Object

Name Type Description
attributes attributes
dca_approved Boolean Desc. dca_approved
description String Description of the campaign
embedded_link_sample String
help_keywords String
help_message String
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
message_flow String
name String(1..255) Desc. name
notes String Desc. notes
optin_keywords String
optin_message String
optout_keywords String
optout_message String
privacy_policy_link String
sample_messages Array(0..5):String Desc. sample_messages
shared Enum(NO, OWNED, PARTNER):String Desc. shared
sub_use_case Array:String Additional usecases for a campaign
tcr_brand_id String The brand the campaign is attached to
tcr_campaign_id String The TCR issued campaign ID
tcr_csp_id String The owning campaign service provider ID
tcr_reseller_id String TCR Issued Reseller ID
tcr_status String TCR Activation Status
terms_and_conditions_link String
updated_at String(format:date-time) An ISO8601 formatted timestamp
use_case String Desc. use_case

Desc. dca_approved

Whether or not the campaign has been approved by the DCA

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. name

A display name to identify the campaign.

In the case of SHARED campaigns, the name is typically taken from the description and truncated to fit the length requirements.

Desc. notes

Any notes about the campaign.

In the case of SHARED campaigns the notes may always be empty.

Desc. sample_messages

The overall format or example of messages that the campaign will send.

Note that different usecases may require more samples.

Desc. shared

Was this campaign created directly or is a partner campaign.

  • NO - Should be treated the same as OWNED
  • OWNED - The campaign was created on site and belongs to this system
  • PARTNER - The campaign originates from outside of the system

Desc. use_case

Campaign Usecase, see CSP Enums for possible values

attributes

Name Type Description
has_affiliate_marketing Boolean
has_age_gated_content Boolean
has_direct_lending Boolean
has_embedded_link Boolean
has_embedded_phone_number Boolean
has_number_pooling Boolean
has_subscriber_help Boolean
has_subscriber_opt_in Boolean
has_subscriber_opt_out Boolean
has_terms_and_conditions Boolean

Example

{
  "attributes": {
    "has_affiliate_marketing": true,
    "has_age_gated_content": true,
    "has_direct_lending": true,
    "has_embedded_link": true,
    "has_embedded_phone_number": true,
    "has_number_pooling": true,
    "has_subscriber_help": true,
    "has_subscriber_opt_in": true,
    "has_subscriber_opt_out": true,
    "has_terms_and_conditions": true
  },
  "dca_approved": true,
  "description": "The original description provided to TCR.\n",
  "embedded_link_sample": "https://example.com/something",
  "help_keywords": "HELP",
  "help_message": "string",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "message_flow": "string",
  "name": "Receive 2FA Codes over SMS",
  "notes": "string",
  "optin_keywords": "START,SUBSCRIBE",
  "optin_message": "string",
  "optout_keywords": "STOP,UNSUBSCRIBE",
  "optout_message": "string",
  "privacy_policy_link": "https://example.com/privacy",
  "sample_messages": [
    "string"
  ],
  "shared": "NO",
  "sub_use_case": [
    "2FA"
  ],
  "tcr_brand_id": "B000000",
  "tcr_campaign_id": "C000000",
  "tcr_csp_id": "S000000",
  "tcr_reseller_id": "R000000",
  "tcr_status": "ACTIVE",
  "terms_and_conditions_link": "https://example.com/terms_and_conditions",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "use_case": "MIXED"
}

Schema / CspCampaignResponse

Single campaign

Type Object

Name Type Description
associations associations
data CspCampaign
type String

associations

Name Type Description
brand brand The parent CSP Brand of the campaign
shared_resource_group shared_resource_group Desc. shared_resource_group

Desc. shared_resource_group

The Shared Resource Group on the campaign, if any

brand

Name Type Description
id String(format:uuid) Desc. id
tcr_brand_id String(format:tcr_brand_id)

Desc. id

A Universally unique identifier, which identifies the resource

shared_resource_group

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "associations": {
    "brand": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "tcr_brand_id": "B000000"
    },
    "shared_resource_group": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    }
  },
  "data": {
    "attributes": {
      "has_affiliate_marketing": true,
      "has_age_gated_content": true,
      "has_direct_lending": true,
      "has_embedded_link": true,
      "has_embedded_phone_number": true,
      "has_number_pooling": true,
      "has_subscriber_help": true,
      "has_subscriber_opt_in": true,
      "has_subscriber_opt_out": true,
      "has_terms_and_conditions": true
    },
    "dca_approved": true,
    "description": "The original description provided to TCR.\n",
    "embedded_link_sample": "https://example.com/something",
    "help_keywords": "HELP",
    "help_message": "string",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "message_flow": "string",
    "name": "Receive 2FA Codes over SMS",
    "notes": "string",
    "optin_keywords": "START,SUBSCRIBE",
    "optin_message": "string",
    "optout_keywords": "STOP,UNSUBSCRIBE",
    "optout_message": "string",
    "privacy_policy_link": "https://example.com/privacy",
    "sample_messages": [
      "string"
    ],
    "shared": "NO",
    "sub_use_case": [
      "2FA"
    ],
    "tcr_brand_id": "B000000",
    "tcr_campaign_id": "C000000",
    "tcr_csp_id": "S000000",
    "tcr_reseller_id": "R000000",
    "tcr_status": "ACTIVE",
    "terms_and_conditions_link": "https://example.com/terms_and_conditions",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "use_case": "MIXED"
  },
  "type": "csp_campaign"
}

Schema / CspCampaignSharingConflictErrorsObject

An object representing a single sharing conflict error.

Sharing conflicts take place when a request attempts to replace the shared resource group for a campaign.

Type Object

Name Type Description
code Enum:String Desc. code
detail String Desc. detail
params params Desc. params
sub_code String Desc. sub_code
title String Desc. title

Enum Values code

Allowed values

  • conflict.changing_shared_resource_group

Desc. code

Contains static error code representing the error

Desc. detail

Contains dynamic description of the error

Desc. params

Contains additional parameters based on the permission error

Desc. sub_code

Some codes may have sub codes that further describe an error.

Desc. title

A user friendly title for the error.

params

Name Type Description

Example

{
  "code": "conflict.changing_shared_resource_group",
  "detail": "Cannot change shared resource group",
  "params": {},
  "sub_code": "none",
  "title": "Conflict"
}

Schema / CspCampaignSharingConflictErrorsResponse

Errors Response when a sharing conflict is present

Type Object

Name Type Description
errors Array:CspCampaignSharingConflictErrorsObject A list of errors from the request

Example

{
  "errors": [
    {
      "code": "conflict.changing_shared_resource_group",
      "detail": "Cannot change shared resource group",
      "params": {},
      "sub_code": "none",
      "title": "Conflict"
    }
  ]
}

Schema / CspCampaignStatusesResponse

CSP Campaign Statuses

Type Array

Name Type Description
[n] String

Example

[
  "ACTIVE"
]

Schema / CspCampaignUnsharingConflictErrorsObject

An object representing a single unsharing conflict error.

These conflicts may happen if a campaign is to be removed from a shared resource group, but is already associated with one or more numbers.

Type Object

Name Type Description
code Enum(conflict.remove_shared_resource_group):String Desc. code
detail String Desc. detail
params params Desc. params
sub_code String Desc. sub_code
title String Desc. title

Desc. code

Contains static error code representing the error

Desc. detail

Contains dynamic description of the error

Desc. params

Contains additional parameters based on the permission error

Desc. sub_code

Some codes may have sub codes that further describe an error.

Desc. title

A user friendly title for the error.

params

Name Type Description

Example

{
  "code": "conflict.remove_shared_resource_group",
  "detail": "Cannot remove shared resource group, may still be associated with numbers",
  "params": {},
  "sub_code": "none",
  "title": "Conflict"
}

Schema / CspCampaignUnsharingConflictErrorsResponse

Errors Response when a sharing conflict is present

Type Object

Name Type Description
errors Array:CspCampaignUnsharingConflictErrorsObject A list of errors from the request

Example

{
  "errors": [
    {
      "code": "conflict.remove_shared_resource_group",
      "detail": "Cannot remove shared resource group, may still be associated with numbers",
      "params": {},
      "sub_code": "none",
      "title": "Conflict"
    }
  ]
}

Schema / CspCampaignsResponse

Campaigns

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:CspCampaignResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "brand": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "tcr_brand_id": "B000000"
        },
        "shared_resource_group": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        }
      },
      "data": {
        "attributes": {
          "has_affiliate_marketing": true,
          "has_age_gated_content": true,
          "has_direct_lending": true,
          "has_embedded_link": true,
          "has_embedded_phone_number": true,
          "has_number_pooling": true,
          "has_subscriber_help": true,
          "has_subscriber_opt_in": true,
          "has_subscriber_opt_out": true,
          "has_terms_and_conditions": true
        },
        "dca_approved": true,
        "description": "The original description provided to TCR.\n",
        "embedded_link_sample": "https://example.com/something",
        "help_keywords": "HELP",
        "help_message": "string",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "message_flow": "string",
        "name": "Receive 2FA Codes over SMS",
        "notes": "string",
        "optin_keywords": "START,SUBSCRIBE",
        "optin_message": "string",
        "optout_keywords": "STOP,UNSUBSCRIBE",
        "optout_message": "string",
        "privacy_policy_link": "https://example.com/privacy",
        "sample_messages": [
          "string"
        ],
        "shared": "NO",
        "sub_use_case": [
          "2FA"
        ],
        "tcr_brand_id": "B000000",
        "tcr_campaign_id": "C000000",
        "tcr_csp_id": "S000000",
        "tcr_reseller_id": "R000000",
        "tcr_status": "ACTIVE",
        "terms_and_conditions_link": "https://example.com/terms_and_conditions",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "use_case": "MIXED"
      },
      "type": "csp_campaign"
    }
  ]
}

Schema / CspCnpsResponse

CSP Event Categories

Type Object

Name Type Description
* String

Example

{
  "*": "string"
}

Schema / CspDcasResponse

CSP DCAs

Type Array

Name Type Description
[n] SubObject DCA

Example

[
  {
    "displayName": "string",
    "id": "string"
  }
]

SubObject

Sub-Schema

DCA

Type Object

Name Type Description
displayName String
id String

Schema / CspEntityTypesResponse

CSP Entity Types

Type Array

Name Type Description
[n] String

Example

[
  "PRIVATE_PROFIT"
]

Schema / CspErrorCodesResponse

CSP Error Codes

Type Object

Name Type Description
* String

Example

{
  "*": "string"
}

Schema / CspEventCategoriesResponse

CSP Event Categories

Type Array

Name Type Description
[n] String

Example

[
  "string"
]

Schema / CspMnoOperationStatusesResponse

CSP MNO Operation Statuses

Type Array

Name Type Description
[n] String

Example

[
  "REVIEW"
]

Schema / CspMnosResponse

CSP MNOs

Type Array

Name Type Description
[n] SubObject MNO

Example

[
  {
    "displayName": "string",
    "networkId": 0.0,
    "osrBitmaskindex": 0.0
  }
]

SubObject

Sub-Schema

MNO

Type Object

Name Type Description
displayName String
networkId Number
osrBitmaskindex Number

Schema / CspStockExchangesResponse

CSP Stock Exchanges

Type Array

Name Type Description
[n] String

Example

[
  "AMEX"
]

Schema / CspUsecase

CSP Usecases

Type Object

Name Type Description
classification String
description String
displayName String
maxSubUsecases Number
minSubUsecases Number
validSubUsecase Boolean

Example

{
  "classification": "string",
  "description": "string",
  "displayName": "string",
  "maxSubUsecases": 5,
  "minSubUsecases": 1,
  "validSubUsecase": true
}

Schema / CspUsecasesResponse

CSP Usecases

Type Object

Name Type Description
* CspUsecase

Example

{
  "*": {
    "classification": "string",
    "description": "string",
    "displayName": "string",
    "maxSubUsecases": 5,
    "minSubUsecases": 1,
    "validSubUsecase": true
  }
}

Schema / CspVertical

CSP Vertical

Type Object

Name Type Description
description String
displayName String
industryId String

Example

{
  "description": "Information technology and information services.",
  "displayName": "Information Technology Services",
  "industryId": "information-technology-services"
}

Schema / CspVerticalsResponse

CSP Verticals

Type Object

Name Type Description
* CspVertical

Example

{
  "*": {
    "description": "Information technology and information services.",
    "displayName": "Information Technology Services",
    "industryId": "information-technology-services"
  }
}

Schema / CspVettingClass

CSP Vetting Class

Type Object

Name Type Description
description String
displayName String
enabled Boolean
id String
validatyMonths Number

Example

{
  "description": "string",
  "displayName": "string",
  "enabled": true,
  "id": "string",
  "validatyMonths": 0.0
}

Schema / CspVettingClassesResponse

CSP Vetting Classes

Type Array

Name Type Description
[n] CspVettingClass

Example

[
  {
    "description": "string",
    "displayName": "string",
    "enabled": true,
    "id": "string",
    "validatyMonths": 0.0
  }
]

Schema / CspVettingFeedbackCode

CSP Vetting Feedback Code

Type Object

Name Type Description
code String
name String

Example

{
  "code": "string",
  "name": "string"
}

Schema / CspVettingFeedbackCodesResponse

CSP Vetting Feedback Codes

Type Array

Name Type Description
[n] CspVettingFeedbackCode

Example

[
  {
    "code": "string",
    "name": "string"
  }
]

Schema / CspVettingProvider

CSP Vetting Provider

Type Object

Name Type Description
displayName String
evpId String
tcrBillable Boolean
vettingClasses Array:String
vettingInstruction String(format:json)

Example

{
  "displayName": "Demo Vetting Provider",
  "evpId": "DEMO_EVP",
  "tcrBillable": true,
  "vettingClasses": [
    "STANDARD"
  ],
  "vettingInstruction": "string"
}

Schema / CspVettingProvidersResponse

CSP Vetting Providers

Type Array

Name Type Description
[n] CspVettingProvider

Example

[
  {
    "displayName": "Demo Vetting Provider",
    "evpId": "DEMO_EVP",
    "tcrBillable": true,
    "vettingClasses": [
      "STANDARD"
    ],
    "vettingInstruction": "string"
  }
]

Schema / Destination

A did's voice destination

Type Object

Name Type Description
activated Boolean Desc. activated
auth_identity String The username for a BASIC auth_method
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_secret String Desc. auth_secret
destination String Desc. destination
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
priority Integer Desc. priority
type Enum:String Desc. type
updated_at String(format:date-time) An ISO8601 formatted timestamp
wait_time Integer Desc. wait_time

Desc. activated

Whether or not the destination is considered for routing

Desc. auth_method

The authorization method to used for HTTP_ROUTE destinations

Desc. auth_secret

The password for a BASIC auth_method or token for BEARER auth_method

Desc. destination

Depending on the type, this field can contain different data.

  • VOIP - destination should be in the form of local@domain where local is the destination prefix and domain is the SIP capable server to handle the request
  • PSTN - destination should be a plain format number (e.g. 12003004000), can also be a comma separated list to allow multiple destinations
  • HTTP_ROUTE - destination should be an http uri which will handle the routing request
  • TTS - destination should be one of the pre-approved values (more may be added in the future):
  • DISCONNECTED
  • TEXT_ONLY
  • BUSY
  • CONGESTION
  • TTS_CUSTOM - destination should be the message to be read
  • TTS_MESSAGE_SET - destination will be set to "UNUSED" regardless of provided value, instead the tts_message_set_id MUST be set on the request

Desc. id

A Universally unique identifier, which identifies the resource

Desc. priority

Affects the ordering of destinations for calls, 1 will be first while 9 is the last

Enum Values type

Allowed values

  • VOIP
  • PSTN
  • HTTP_ROUTE
  • TTS
  • TTS_CUSTOM
  • TTS_MESSAGE_SET

Desc. type

The destination type, see destination field for more detail

Desc. wait_time

How long will calls wait for the destination to connect.

Example

{
  "activated": true,
  "auth_identity": "username",
  "auth_method": "BASIC",
  "auth_secret": "password",
  "destination": "http://example.com/http/route/call",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "priority": 1,
  "type": "HTTP_ROUTE",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "wait_time": 120
}

Schema / DestinationResponse

Single Number Destination

Type Object

Name Type Description
associations associations
data Destination
type String

associations

Name Type Description
did did
tts_message_set tts_message_set

did

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

tts_message_set

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "associations": {
    "did": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    },
    "tts_message_set": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    }
  },
  "data": {
    "activated": true,
    "auth_identity": "username",
    "auth_method": "BASIC",
    "auth_secret": "password",
    "destination": "http://example.com/http/route/call",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "priority": 1,
    "type": "HTTP_ROUTE",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "wait_time": 120
  },
  "type": "number_destination"
}

Schema / DestinationsResponse

Number Destinations

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:DestinationResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "did": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        },
        "tts_message_set": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        }
      },
      "data": {
        "activated": true,
        "auth_identity": "username",
        "auth_method": "BASIC",
        "auth_secret": "password",
        "destination": "http://example.com/http/route/call",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "priority": 1,
        "type": "HTTP_ROUTE",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "wait_time": 120
      },
      "type": "number_destination"
    }
  ]
}

Schema / ErrorObject

An object representing a single error, may contain a source if the error was from a field.

Type Object

Name Type Description
code String Desc. code
detail String Desc. detail
source source
sub_code String Desc. sub_code
title String Desc. title

Desc. code

Contains static error code representing the error

Desc. detail

Contains dynamic description of the error

Desc. sub_code

Some codes may have additional sub codes for identifying a problem.

Primarily used by requests

Desc. title

A user friendly title for the error, will usually reflect the http error code

source

Name Type Description
pointer String JSON Pointer

Example

{
  "code": "invalid_parameter",
  "detail": "The specified resource could not be found",
  "source": {
    "pointer": "/data/type"
  },
  "sub_code": "none",
  "title": "Not Found"
}

Schema / ErrorsResponse

Common errors response

Type Object

Name Type Description
errors Array:ErrorObject A list of errors from the request

Example

{
  "errors": [
    {
      "code": "invalid_parameter",
      "detail": "The specified resource could not be found",
      "source": {
        "pointer": "/data/type"
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}

Schema / EventSubscription

Event Subscription

Type Object

Name Type Description
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_name String Desc. auth_name
auth_secret String Desc. auth_secret
custom_headers Array:SubObject Desc. custom_headers
custom_query_params Array:SubObject
data String Desc. data
enabled Boolean Desc. enabled
expired_at String(format:date-time) An ISO8601 formatted timestamp
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(..255) Desc. name
notes String(..65535) Desc. notes
protocol Enum(NONE, HTTP, SMTP, SFTP, EMAIL):String Desc. protocol
recipient String Desc. recipient
started_at String(format:date-time) An ISO8601 formatted timestamp
topics Array:Enum:String Desc. topics
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. auth_identity

Acts as the username for an auth pair.

Desc. auth_method

Depending on the protocol this will affect the authorization or authentication that will be performed.

This applies to HTTP, SMTP and SFTP.

  • NONE - no auth is required the event will be sent as is
  • BASIC - The auth_identity and auth_secret will form the auth pair
  • BEARER - Only the auth_secret will be used where applicable, for protocols that require both a username and password, the username will have a placeholder value.

Desc. auth_name

Currently unused, but kept for future use.

Desc. auth_secret

Acts as the password for an auth pair or just the general secret.

SubObject

Sub-Schema

A single header entry, while multiple items can be provided with the same key, the behaviour may not be consistent between destination servers.

When in doubt, only use unique keys.

Type Object

Name Type Description
key String
value String

Desc. custom_headers

A list of additional headers that should be provided during the HTTP request.

SubObject

Sub-Schema

A single query parameter pair.

Type Object

Name Type Description
key String
value String

Desc. data

Depending on the protocol specified this may be an http endpoint (HTTP), a hostname (SMTP or SFTP) or an email address (EMAIL).

Protocol: * NONE - nothing, this field is unused * HTTP - the http server endpoint (e.g. "http://events.example.com:7654/events/v1/ordering") * SFTP - the sftp server address (e.g. "sftp://sftp.example.com:2231/path/to/upload") * SMTP - the relay server address (e.g. "smtp://smtp.example.com:2554") * EMAIL - the recipient email address (e.g. "[email protected]")

A keen eye may notice there was no mention of the recipient address for SMTP, that is covered in recipient.

Desc. enabled

Is the subscription enabled to handle events?

Subscriptions can be toggled on or off as needed.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. name

The friendly given name for this subscription

Desc. notes

Any additional information about this subscription that otherwise could not fit into the name.

This can be useful to another user or agent that is reviewing the subscription.

Desc. protocol

When the subscription receives an event for handling, it wil be processed and sent using the specified protocol.

Available: * NONE - effectively a no-op. * HTTP - sends the event over HTTP to a specified endpoint data. * SFTP - uploads the event to a specified SFTP server

Planned (currently unavailable, but may become available later): * SMTP - sends the event over SMTP (not email compatible) * EMAIL - emails the event to specified address in data

Desc. recipient

Only applicable when the protocol is SMTP, this will be the recipient address (e.g. "[email protected]")

Enum Values topics

Allowed values

  • NONE
  • DID
  • CSP_BRAND
  • CSP_CAMPAIGN
  • ORDER
  • REQUEST
  • OSR

Desc. topics

An event subscription must be list topics it wishes to receive events for.

Example

{
  "auth_identity": "my-username",
  "auth_method": "NONE",
  "auth_name": "something",
  "auth_secret": "my-secret-password",
  "custom_headers": [
    {
      "key": "x-my-header",
      "value": "My Header Value"
    }
  ],
  "custom_query_params": [
    {
      "key": "my_param",
      "value": "ParamValue"
    }
  ],
  "data": "",
  "enabled": true,
  "expired_at": "2021-08-13T04:08:44.762841Z",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "CSP Events",
  "notes": "string",
  "protocol": "NONE",
  "recipient": "[email protected]",
  "started_at": "2021-08-13T04:08:44.762841Z",
  "topics": [
    "NONE"
  ],
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / EventSubscriptionResponse

Single event subscription record

Type Object

Name Type Description
data EventSubscription
type String

Example

{
  "data": {
    "auth_identity": "my-username",
    "auth_method": "NONE",
    "auth_name": "something",
    "auth_secret": "my-secret-password",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "My Header Value"
      }
    ],
    "custom_query_params": [
      {
        "key": "my_param",
        "value": "ParamValue"
      }
    ],
    "data": "",
    "enabled": true,
    "expired_at": "2021-08-13T04:08:44.762841Z",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "CSP Events",
    "notes": "string",
    "protocol": "NONE",
    "recipient": "[email protected]",
    "started_at": "2021-08-13T04:08:44.762841Z",
    "topics": [
      "NONE"
    ],
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "event_subscription"
}

Schema / EventSubscriptionsResponse

Event Subscriptions

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:EventSubscriptionResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "auth_identity": "my-username",
        "auth_method": "NONE",
        "auth_name": "something",
        "auth_secret": "my-secret-password",
        "custom_headers": [
          {
            "key": "x-my-header",
            "value": "My Header Value"
          }
        ],
        "custom_query_params": [
          {
            "key": "my_param",
            "value": "ParamValue"
          }
        ],
        "data": "",
        "enabled": true,
        "expired_at": "2021-08-13T04:08:44.762841Z",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "CSP Events",
        "notes": "string",
        "protocol": "NONE",
        "recipient": "[email protected]",
        "started_at": "2021-08-13T04:08:44.762841Z",
        "topics": [
          "NONE"
        ],
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "event_subscription"
    }
  ]
}

Schema / ExportTask

A CDR Export Task is a long running request to dump cdrs from a certain date into a file.

Type Object

Name Type Description
date String(format:date) Desc. date
error_code Enum(OK):String Desc. error_code
format Enum(CSV, MLJSON):String Desc. format
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
on_done_actions OnDoneActions
reference_id String(1..255) Desc. reference_id
status Enum:String Desc. status
type Enum:String Desc. type
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. date

An ISO8601 formatted date. Determines which day's cdrs will be exported.

Note that if a current or future date is provided, the task will be deferred to the day AFTER the given date.

Desc. error_code

  • OK - there was no error

Desc. format

The intended exported format, CSV will export a CSV file as expected. MLJSON exports the cdrs as Multiline-JSON, that is each row in the file is a single CDR record encoded as JSON.

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. reference_id

A unique client provided id for the export task.

There is no particular format that is enforced, a general recommendation is to avoid spaces and non-ASCII characters for best experience.

Enum Values status

Allowed values

  • NEW
  • SCHEDULED
  • PROCESSING
  • STORING
  • DELIVERING
  • COMPLETED
  • ABORTED
  • ERROR

Desc. status

Status gives a brief overview of the state of the task.

  • NEW - the export task was freshly created and has not begun processing
  • SCHEDULED - the task has been scheduled to execute at a later time (see date field for more information)
  • PROCESSING - the task has begun processing
  • STORING - the task is currently storing its results on internal storage for later access
  • DELIVERING - the task is now attempting to deliver the exported file to the given endpoints (or notifying)
  • COMPLETED - the task is completed and it is safe to delete or retrieve the exported details
  • ABORTED - the task was aborted, execution was halted
  • ERROR - the task experienced an error, error_code will have more details if any

Enum Values type

Allowed values

  • API
  • MMS
  • SMS
  • VOICE
  • BALANCE
  • MISC

Desc. type

The main type of CDR that should be exported

  • API - contain any LRN, LRNE, CNAM related calls
  • MMS - contain the billed details for MMS records
  • SMS - contain the billed details for SMS records
  • VOICE - contain any voice related calls (TERMINATION, DID*)
  • BALANCE - any balance related changes, including payments, adjustments etc...
  • MISC - contains various registry related feees

Example

{
  "date": "string",
  "error_code": "OK",
  "format": "CSV",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "on_done_actions": [
    {
      "archive_format": "TAR_GZ",
      "auth_identity": "upload-user",
      "auth_method": "BASIC",
      "auth_secret": "supersecretsauce",
      "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
      "error_code": "OK",
      "filename": "string",
      "protocol": "SFTP",
      "reference_id": "SFTP-export-action",
      "status": "NEW",
      "type": "SEND"
    }
  ],
  "reference_id": "cdr-export-API-2022-03-14",
  "status": "NEW",
  "type": "API",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / ExportTaskResponse

Single CDR Export Task

Type Object

Name Type Description
data ExportTask
type String

Example

{
  "data": {
    "date": "string",
    "error_code": "OK",
    "format": "CSV",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "on_done_actions": [
      {
        "archive_format": "TAR_GZ",
        "auth_identity": "upload-user",
        "auth_method": "BASIC",
        "auth_secret": "supersecretsauce",
        "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
        "error_code": "OK",
        "filename": "string",
        "protocol": "SFTP",
        "reference_id": "SFTP-export-action",
        "status": "NEW",
        "type": "SEND"
      }
    ],
    "reference_id": "cdr-export-API-2022-03-14",
    "status": "NEW",
    "type": "API",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "call_data_export_task"
}

Schema / ExportTasksResponse

CDR Export Tasks

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:ExportTaskResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "date": "string",
        "error_code": "OK",
        "format": "CSV",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "on_done_actions": [
          {
            "archive_format": "TAR_GZ",
            "auth_identity": "upload-user",
            "auth_method": "BASIC",
            "auth_secret": "supersecretsauce",
            "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
            "error_code": "OK",
            "filename": "string",
            "protocol": "SFTP",
            "reference_id": "SFTP-export-action",
            "status": "NEW",
            "type": "SEND"
          }
        ],
        "reference_id": "cdr-export-API-2022-03-14",
        "status": "NEW",
        "type": "API",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "call_data_export_task"
    }
  ]
}

Schema / FileResponse

Any general binary blob from a file response call.

Depending on the API in, this response may have its content-type header appropriately set, or defaults to application/octet-stream.

Type String

Example

"string"

Schema / Message

A TTS Message contains the text 'body' and is associated with a TTS Voice.

Type Object

Name Type Description
body String(1..4096) The text that should be read
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
priority Integer Desc. priority
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

A Universally unique identifier, which identifies the resource

Desc. priority

The order in which messages should be played back, messages with the same priority will be randomized

Example

{
  "body": "Hello, World!",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "priority": 1,
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / MessageResponse

Single message

Type Object

Name Type Description
data Message
type String

Example

{
  "data": {
    "body": "Hello, World!",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "priority": 1,
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "tts_message"
}

Schema / MessageSet

A TTS Message Set contains multiple messages which can be recited to the caller based on their priority.

Type Object

Name Type Description
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(1..255) Name of the Message Set
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "Pre-answer Greeter",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / MessageSetResponse

Single message set

Type Object

Name Type Description
data MessageSet
type String

Example

{
  "data": {
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "Pre-answer Greeter",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "tts_message_set"
}

Schema / MessageSetsResponse

Message Sets

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:MessageSetResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "Pre-answer Greeter",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "tts_message_set"
    }
  ]
}

Schema / MessagesResponse

Messages

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:MessageResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "body": "Hello, World!",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "priority": 1,
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "tts_message"
    }
  ]
}

Schema / MessagingAutoResponse

Messaging Auto Response

Type Object

Name Type Description
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
keywords Array:SubObject Desc. keywords
name String Display name of the Auto Response
notes String Any notes about the auto response
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

A Universally unique identifier, which identifies the resource

SubObject

Sub-Schema

Type Object

Name Type Description
intercept Boolean Desc. intercept
is_wildcard Boolean Desc. is_wildcard
keyword String Desc. keyword
message String Desc. message
message2 String Desc. message2

Desc. intercept

Should the messaging system intercept (i.e. not forward to switch) the message?

This can be useful for cases where the keyword is to be handled by the messaging system, but the destination switch can't or does not wish to handle the message.

Desc. is_wildcard

Should this keyword be treated as a wildcard or fallback?

Only one wildcard can exist in a auto response, and will be returned for ALL messages that do not match any existing keywords.

Once is_wildcard is set, the keyword in question is also set to WILDCARD.

NOTE: To update an existing WILDCARD, the keyword must also be passed (i.e. WILDCARD).

Desc. keyword

The word to trigger this specific keyword.

Note that when is_wildcard is true, keyword will always be WILDCARD.

Desc. message

The primary message that should be sent as the reply.

In most scenarios this is the only message that needs to be set, however under the condition that a keyword is shared with the account's existing Keyword Plan (ask support for more information), the message may override it.

Desc. message2

A secondary message which may be selected under certain circumstances.

If a keyword plan is active on the parent account, and the keyword has an OPTOUT or OPTIN behaviour, this message may be used.

In the case of an OPTIN action, this message will be used as the redundant action message (e.g. the subscriber has already opted in or already opted out of the messaging platform).

Desc. keywords

A list of keywords that the auto response has, keywords are stored in uppercase, but are case insensitive upon usage.

Example

{
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "keywords": [
    {
      "intercept": false,
      "is_wildcard": false,
      "keyword": "START",
      "message": "You have been opted in to receive messages from ACME Corp.\n",
      "message2": "You have already been opted-in to receive messages from ACME Corp, if you wish to unsubscribed please send STOP instead.\n"
    }
  ],
  "name": "My Auto Responder",
  "notes": "This auto responder is used to notify messagers that the number is not available for SMS.\n",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / MessagingAutoResponseResponse

Single Messaging Auto Response

Type Object

Name Type Description
data MessagingAutoResponse
type String

Example

{
  "data": {
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "keywords": [
      {
        "intercept": false,
        "is_wildcard": false,
        "keyword": "START",
        "message": "You have been opted in to receive messages from ACME Corp.\n",
        "message2": "You have already been opted-in to receive messages from ACME Corp, if you wish to unsubscribed please send STOP instead.\n"
      }
    ],
    "name": "My Auto Responder",
    "notes": "This auto responder is used to notify messagers that the number is not available for SMS.\n",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "messaging_auto_response"
}

Schema / MessagingAutoResponsesResponse

Messaging Auto Responses

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:MessagingAutoResponseResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "keywords": [
          {
            "intercept": false,
            "is_wildcard": false,
            "keyword": "START",
            "message": "You have been opted in to receive messages from ACME Corp.\n",
            "message2": "You have already been opted-in to receive messages from ACME Corp, if you wish to unsubscribed please send STOP instead.\n"
          }
        ],
        "name": "My Auto Responder",
        "notes": "This auto responder is used to notify messagers that the number is not available for SMS.\n",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "messaging_auto_response"
    }
  ]
}

Schema / Number

A provisioned did

Type Object

Name Type Description
activated Boolean Desc. activated
brand_name String(0..255) Desc. brand_name
description String Desc. description
forward_number String Desc. forward_number
help_message String(0..255) Desc. help_message
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
message_class Enum(NONE, A2P, P2P):String
mms_enabled Boolean Desc. mms_enabled
number String Desc. number
rate_center String
segment_overrides Array:SubObject Desc. segment_overrides
segment_threshold Integer Desc. segment_threshold
sms_enabled Boolean Desc. sms_enabled
state String
tier Enum:String Desc. tier
updated_at String(format:date-time) An ISO8601 formatted timestamp
upgrade_asset_handling Enum:String The asset handling flag for SMS Upgrades
voice_enabled Boolean Desc. voice_enabled

Desc. activated

Is the DID active for use?

Desc. brand_name

Custom Brand Name when the number is not actively apart of TCR's Campaign setup, this field will be used in place of the brand name.

Added on 2026-05-04.

Desc. description

Any notes to attach to the number.

Desc. forward_number

When this DID receives an inbound message, the message will be routed to the specified forward_number.

Note. using forward_number or its switch equivalent will charge the account for 2 messages, instead of 1: * Once for the inbound (to the host number) * Again for the outbound (from the host number to the forward number)

If this field is nil, or blank the sms_switch will be used for routing instead

Desc. help_message

Custom HELP Message that should be sent when an inbound message matching "HELP" is received.

For help messages longer than 255 characters, they must handled by the receiver.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. mms_enabled

Whether or not the number is MMS capable, does not affect SMS or SMS to MMS upgrades.

Desc. number

The 3 to 15 digit code of the number.

SubObject

Sub-Schema

Type Object

Name Type Description
encoding Integer Desc. encoding
id String(format:uuid) Desc. id
segment_threshold Integer Desc. segment_threshold
target_reference_id String Desc. target_reference_id

Desc. encoding

The SMS encoding that this override should trigger on.

Desc. id

The UUID of the specific segment override, required when changing an existing override.

Desc. segment_threshold

See number's segment_threshold for more information.

Desc. target_reference_id

Internal reference_id for a carrier, contact support for details or if a required carrier is not available.

Reference ids tend to have the form:

<country_code>_<name>

Example:

us_tmobile
ca_rogers
dm_digicel

Desc. segment_overrides

While the segment_threshold can be used to apply to all outgoing sms messages, sometimes its required to tailor fit an upgrade to a particular carrier.

Note, when updating the segment_overrides, all overrides must be provided for the did, any unspecified overrides will be removed.

Desc. segment_threshold

How many segments should a outgoing message have before it triggers an MMS upgrade.

Contact support to learn more about MMS upgrades.

0 will disable upgrades, any value greater than 1 will trigger an upgrade when that many sms segments would have been sent.

Upgrades only apply to HTTP originated traffic, customers using SMPP will not for outbound are not subject to upgrades.

Desc. sms_enabled

Whether or not a number is messaging capable.

Note that this flag also affects mms availability.

Enum Values tier

Allowed values

  • L0
  • L1
  • T1
  • T2
  • T3
  • AK
  • HI
  • CAN
  • PR
  • TF
  • SHORTCODE
  • M0
  • M1
  • BYON

Desc. tier

The billing tier associated with the number:

  • L0 - Tychron OCN Tier 0
  • L1 - Tychron OCN Tier 1
  • T1 - Partner Tier 0
  • T2 - Partner Tier 1
  • T3 - Partner Tier 3
  • AK - Alaska
  • HI - Hawaii
  • CAN - Canada
  • PR - Puerto Rico
  • TF - Tollfree
  • SHORTCODE - General Shortcode
  • M0 - Mobile Tier 0
  • M1 - Mobile Tier 1
  • BYON - Bring-Your-Own-Number

Enum Values upgrade_asset_handling

Allowed values

  • FALLBACK
  • OFF
  • ALWAYS_UPGRADE
  • SEGMENT_UPGRADE

Desc. voice_enabled

Whether or not the specified number is voice-capable (only affects outgoing)

Example

{
  "activated": true,
  "brand_name": "ACME Corp.",
  "description": "Test number used for XYZ.Corp\n",
  "forward_number": "12003004000",
  "help_message": "Available Keywords are: HELP, SUBSCRIBED, UNSUBSCRIBE.",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "message_class": "A2P",
  "mms_enabled": true,
  "number": "12003004000",
  "rate_center": "KISSIMEE",
  "segment_overrides": [
    {
      "encoding": 0,
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "segment_threshold": 0,
      "target_reference_id": "us_tmobile"
    }
  ],
  "segment_threshold": 1,
  "sms_enabled": true,
  "state": "FL",
  "tier": "T1",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "upgrade_asset_handling": "FALLBACK",
  "voice_enabled": true
}

Schema / NumberClientSuspension

A record representing a client issued number suspension.

Messages are still charged even if a suspension is in place.

New message requests while a client suspension is in place will reject

Type Object

Name Type Description
block_direction Enum(NONE, INBOUND, OUTBOUND, BOTH):String Desc. block_direction
block_messaging Enum(NONE, SMS, MMS, ALL):String Desc. block_messaging
block_voip Enum:String Desc. block_voip
host_number String Desc. host_number
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
notes String Desc. notes
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. block_direction

What direction messages should be blocked to this number, suspensions may apply to inbound or outbound.

On INBOUND, messages will NOT be sent to the endpoint but will be charged. On OUTBOUND, inflight messages will NOT be sent to their destinations (note they would have already been charged). New OUTBOUND messages will be rejected at the their edge (API, SMPP or other methods).

BOTH applies all rules.

Desc. block_messaging

What type of messaging should be blocked by this suspension?

Enum Values block_voip

Allowed values

  • NONE
  • ORIGINATION
  • TERMINATION
  • ALL

Desc. block_voip

Calls originating or terminating to the host number may not be terminated to the configured destinations while blocks are in place.

The system MAY choose to answer calls to remain compliant even if a suspension is present.

Desc. host_number

A reference to the host did's number.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. notes

Any notes on the suspension.

Example

{
  "block_direction": "NONE",
  "block_messaging": "NONE",
  "block_voip": "NONE",
  "host_number": "12003004000",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "notes": "Suspended due to carrier complaint.",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / NumberClientSuspensionResponse

Single Number Client Suspension

Type Object

Name Type Description
associations associations
data NumberClientSuspension
type String

associations

Name Type Description
host_did host_did Desc. host_did

Desc. host_did

A reference to the host number (did) that this client suspension belongs to.

host_did

Name Type Description
id String(format:uuid) Desc. id
number String Desc. number

Desc. id

A Universally unique identifier, which identifies the resource

Desc. number

Will match the host_number from the client suspension, may not be set under certain circumstances.

Example

{
  "associations": {
    "host_did": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "number": "12003004000"
    }
  },
  "data": {
    "block_direction": "NONE",
    "block_messaging": "NONE",
    "block_voip": "NONE",
    "host_number": "12003004000",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "notes": "Suspended due to carrier complaint.",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "number_client_suspension"
}

Schema / NumberClientSuspensionsResponse

Number Client Suspensions

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:NumberClientSuspensionResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "host_did": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "number": "12003004000"
        }
      },
      "data": {
        "block_direction": "NONE",
        "block_messaging": "NONE",
        "block_voip": "NONE",
        "host_number": "12003004000",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "notes": "Suspended due to carrier complaint.",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "number_client_suspension"
    }
  ]
}

Schema / NumberInventoryCoverage

Number Inventory Coverage.

Coverage reports a "count" of all potential numbers or codes available.

It simply reports how many are available, and no specific codes.

Type Object

Name Type Description
count Integer Desc. count
items Array:SubObject
search_params search_params Desc. search_params

Desc. count

The total entries in items.

SubObject

Sub-Schema

Type Object

Name Type Description
block String(format:nanp-block)
count Integer Desc. count
lata String
npa String(format:npa) Desc. npa
nxx String(format:nxx) Desc. nxx
rate_center String
state String
type Enum(TENDLC, TOLLFREE):String Desc. type

Desc. count

How numbers are available based on the parameters in this entry?

Desc. npa

The Area Code of the numbers in this entry.

Desc. nxx

The Exchange Code of the numbers in this entry.

Desc. type

The type of number, primarily TENDLC.

Desc. search_params

The search parameters that were used to generate the response.

Note it may differ slightly from input due to defaults, or different enum casings.

search_params

Name Type Description
count_by Enum:String
npa String
nxx String
rate_center String
state String

Enum Values count_by

Allowed values

  • state
  • rate_center
  • npa_nxx
  • block

Example

{
  "count": 10,
  "items": [
    {
      "block": "9",
      "count": 101,
      "lata": "236",
      "npa": "202",
      "nxx": "201",
      "rate_center": "WSHNGTNZN1",
      "state": "DC",
      "type": "TENDLC"
    }
  ],
  "search_params": {
    "count_by": "npa_nxx",
    "npa": "202",
    "nxx": "201",
    "rate_center": "WSHNGTNZN1",
    "state": "DC"
  }
}

Schema / NumberInventoryCoverageResponse

The response body for an number inventory coverage request.

This reports only the count, or number of available codes or numbers based on the search parameters, broken down by the count_by.

Type Object

Name Type Description
data NumberInventoryCoverage
type String

Example

{
  "data": {
    "count": 10,
    "items": [
      {
        "block": "9",
        "count": 101,
        "lata": "236",
        "npa": "202",
        "nxx": "201",
        "rate_center": "WSHNGTNZN1",
        "state": "DC",
        "type": "TENDLC"
      }
    ],
    "search_params": {
      "count_by": "npa_nxx",
      "npa": "202",
      "nxx": "201",
      "rate_center": "WSHNGTNZN1",
      "state": "DC"
    }
  },
  "type": "number_inventory"
}

Schema / NumberResponse

Single number

Type Object

Name Type Description
associations associations
data Number
type String

associations

Name Type Description
campaign campaign
messaging_switch messaging_switch
voice_switch voice_switch

campaign

Name Type Description
id String(format:ulid) Desc. id
tcr_brand_id String The brand the campaign is attached to
tcr_campaign_id String The TCR issued campaign ID

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

messaging_switch

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

voice_switch

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "associations": {
    "campaign": {
      "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
      "tcr_brand_id": "B000000",
      "tcr_campaign_id": "C000000"
    },
    "messaging_switch": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    },
    "voice_switch": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    }
  },
  "data": {
    "activated": true,
    "brand_name": "ACME Corp.",
    "description": "Test number used for XYZ.Corp\n",
    "forward_number": "12003004000",
    "help_message": "Available Keywords are: HELP, SUBSCRIBED, UNSUBSCRIBE.",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "message_class": "A2P",
    "mms_enabled": true,
    "number": "12003004000",
    "rate_center": "KISSIMEE",
    "segment_overrides": [
      {
        "encoding": 0,
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "segment_threshold": 0,
        "target_reference_id": "us_tmobile"
      }
    ],
    "segment_threshold": 1,
    "sms_enabled": true,
    "state": "FL",
    "tier": "T1",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "upgrade_asset_handling": "FALLBACK",
    "voice_enabled": true
  },
  "type": "number"
}

Schema / NumbersResponse

Numbers

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:NumberResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "campaign": {
          "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
          "tcr_brand_id": "B000000",
          "tcr_campaign_id": "C000000"
        },
        "messaging_switch": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        },
        "voice_switch": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        }
      },
      "data": {
        "activated": true,
        "brand_name": "ACME Corp.",
        "description": "Test number used for XYZ.Corp\n",
        "forward_number": "12003004000",
        "help_message": "Available Keywords are: HELP, SUBSCRIBED, UNSUBSCRIBE.",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "message_class": "A2P",
        "mms_enabled": true,
        "number": "12003004000",
        "rate_center": "KISSIMEE",
        "segment_overrides": [
          {
            "encoding": 0,
            "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
            "segment_threshold": 0,
            "target_reference_id": "us_tmobile"
          }
        ],
        "segment_threshold": 1,
        "sms_enabled": true,
        "state": "FL",
        "tier": "T1",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "upgrade_asset_handling": "FALLBACK",
        "voice_enabled": true
      },
      "type": "number"
    }
  ]
}

Schema / OnDoneAction

Type Object

Name Type Description
archive_format Enum(NONE, TAR, TAR_GZ, ZIP):String Desc. archive_format
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_secret String Desc. auth_secret
data String Desc. data
error_code Enum(OK):String Desc. error_code
filename String Desc. filename
protocol Enum(NONE, HTTP, SFTP):String Desc. protocol
reference_id String(0..255) Desc. reference_id
status Enum(NEW, COMPLETED, ERROR, REJECTED):String Desc. status
type Enum(NONE, NOTIFY, SEND):String Desc. type

Desc. archive_format

Sometimes it is desirable to send the exported file in some kind of archive or compressed format.

This field can be set to configure that.

Otherwise the file will be returned in its raw form.

  • NONE - no archive format, returns the file as-is (default)
  • TAR - send the exported file in a tarball
  • TAR_GZ - send the exported file in a gzipped tarball
  • ZIP - send the exported file in a zipfile

Desc. auth_identity

See auth_method for details

Desc. auth_method

Working with the auth_identity and auth_secret fields, this forms the authorization details for the HTTP and SFTP uploaders.

  • NONE - no authorization required HTTP protocol will not send an Authorization header SFTP protocol will default to username "tychron", and password "tychron" for its details
  • BASIC - use "Basic" authorization, or a username + password pairing auth_identity will be the username auth_secret will be the password
  • BEARER - use a "Bearer" authorization, that is, just the secret HTTP protocol will send a Authorization: Bearer <auth_secret> header SFTP will default its username to "tychron" and set the password as the auth_secret

Desc. auth_secret

See auth_method for details

Desc. data

Depending on the protocol used, this can be a url, or mailing address.

  • NONE - empty
  • HTTP - Must be a valid HTTP url, query parameters will be passed in as is
  • SFTP - Must be of form:

sftp://hostname:port/subpath

Example 1:

Using default ssh port 22 and write the exported file under the given subpath. NOTE. the subpath MUST be created for the upload to complete no attempts will be made to create any new directories by sftp uploader.

sftp://example.com/sub/path/to/store/exported_file/in

Example 2:

Use the explictly set port 22 and write the exported file to wherever the client logged in.

sftp://example.com:22

Desc. error_code

Further description of a status.

  • OK - no error, all is well

Desc. filename

Optional override for SFTP filename.

Note. you are responsible for the extensions as well for any archive format it may have.

Desc. protocol

The specific transport protocol to use to delivery notifications or the exported file.

  • NONE - use nothing
  • HTTP - send notifications or files over HTTP
  • SFTP - send exported files over SFTP

Desc. reference_id

Optional client provided id to identify the action.

Desc. status

The general status of the action.

  • NEW - the task has not been executed yet
  • COMPLETED - the task has been executed and was completed successfully
  • ERROR - the task has experienced an error, and will retry at a later time A task will not be considered completed until ALL actions are completed successfully
  • REJECTED - the action has been rejected possibly due to an error in the task

Desc. type

What kind of action will this be?

  • NONE - do nothing
  • NOTIFY - notify the specified endpoint that the export has completed (only works with HTTP currently)
  • SEND - send the exported file to the specified endpoint (HTTP or SFTP)

Example

{
  "archive_format": "TAR_GZ",
  "auth_identity": "upload-user",
  "auth_method": "BASIC",
  "auth_secret": "supersecretsauce",
  "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
  "error_code": "OK",
  "filename": "string",
  "protocol": "SFTP",
  "reference_id": "SFTP-export-action",
  "status": "NEW",
  "type": "SEND"
}

Schema / OnDoneActions

A list of sub-tasks that should be executed during the DELIVERING status of the task.

These can include: * Notifying a specified endpoint about the completion of the task * Delivering the exported file to a specified endpoint * Doing nothing at all

Type Array

Name Type Description
[n] OnDoneAction

Example

[
  {
    "archive_format": "TAR_GZ",
    "auth_identity": "upload-user",
    "auth_method": "BASIC",
    "auth_secret": "supersecretsauce",
    "data": "sftp://example.com:22/sub/path/to/store/exported_file/in",
    "error_code": "OK",
    "filename": "string",
    "protocol": "SFTP",
    "reference_id": "SFTP-export-action",
    "status": "NEW",
    "type": "SEND"
  }
]

Schema / OptoutItem

A record representing an opt-out for a host and remote number pair.

Optouts may be manually added or may be triggered by the remote_number to stop receiving messages.

Type Object

Name Type Description
host_number String Desc. host_number
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
keyword String Desc. keyword
remote_number String Desc. remote_number
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. keyword

If the optout was triggered by the system, this field will be populated with the keyword used.

Will be some variant of STOP normally.

For more information about keywords and their handling, contact support.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Example

{
  "host_number": "12003004000",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "keyword": "STOP",
  "remote_number": "12003004001",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / OptoutItemResponse

Single Optout Item

Type Object

Name Type Description
associations associations
data OptoutItem
type String

associations

Name Type Description
host_did host_did Desc. host_did
sms sms Desc. sms

Desc. host_did

A reference to the host number (did) that this optout belongs to.

Desc. sms

If the optout was triggered by an SMS, this association will be set.

Otherwise it will be null.

Note that the SMS may be removed if outside the creation month.

host_did

Name Type Description
id String(format:uuid) Desc. id
number String Desc. number

Desc. id

A Universally unique identifier, which identifies the resource

Desc. number

Will match the host_number from the optout item, may not be set under certain circumstances.

sms

Name Type Description
id String(format:ulid) Desc. id

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "associations": {
    "host_did": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "number": "12003004000"
    },
    "sms": {
      "id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
    }
  },
  "data": {
    "host_number": "12003004000",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "keyword": "STOP",
    "remote_number": "12003004001",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "number_optout_item"
}

Schema / OptoutItemsResponse

Number Optout Items

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:OptoutItemResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "host_did": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "number": "12003004000"
        },
        "sms": {
          "id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
        }
      },
      "data": {
        "host_number": "12003004000",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "keyword": "STOP",
        "remote_number": "12003004001",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "number_optout_item"
    }
  ]
}

Schema / Order

An order that has been placed.

Orders are a collection record for requests, a means by which requests are grouped together.

Orders themselves do nothing after their checkout.

Type Object

Name Type Description
error_code OrderErrorCode
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(3..255) Desc. name
notes String(0..65535) Desc. notes
status OrderStatus
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. name

Display name for Order.

Desc. notes

Any additional text about the order, useful for informing someone about the order's purpose.

Example

{
  "error_code": "OK",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "Add Messaging to 10 Numbers",
  "notes": "Order for Client XYZ\n",
  "status": "NEW",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / OrderErrorCode

An error code further describes what issues an order or request may have had.

  • OK - there were no issues, this is the most common error code.
  • NOT_IMPLEMENTED - unlikely to happen, but in the case of requests that have not been implemented, this will be set.
  • RETRIES_EXHAUSTED - the order or request has attempted to complete processing enough times to exhaust all of its retries.
  • RECORD_CONFLICT - there was a conflict with another order or request and the request could not completed as a result.
  • OWNERSHIP_MISMATCH - an order or request was created which would modify the resource of another account, and has refused to process.
  • MESSAGING_UNAVAILABLE - the request required the target resource have messaging enabled, but it was not.
  • INVALID_EMAIL_ADDRESS - the request required an email address for operation but found it to be invalid, either due to secondary validations or upstream.
  • INVALID_PHONE_NUMBER - the request required a phone number (typically for addressing purposes), but it was found to be invalid.
  • INVALID_ADDRESS - the request required a valid address but it was found to be invalid.
  • LOA_REQUIRED - the request requires an loa to release the number from its original provider, or may be known to require additional action
  • DID_NOT_FOUND - the did or number specified was not found and the request cannot be completed.
  • ASSOCIATED_WITH_DIDS - the resource is still associated with a did or number and cannot be modified (typically a removal).
  • BRAND_NOT_FOUND - the CSP Brand specified was not found and the request cannot be completed.
  • UPSTREAM_ERROR - an unspecified upstream error has prevented the request from being completed, this will typically be resolved by support personel.
  • UPSTREAM_INTERNAL_ERROR - the upstream has an internal error, this typically gets resolved by itself, but if it persists please contact support.
  • UPSTREAM_TEMPORARY_ERROR - the upstream has a temporary, this can happen for a myriad of reasons but will typically be resolved with some time.
  • UPSTREAM_PARAMETER_ERROR - similar to an UPSTREAM_ERROR, but the issue is known to be with the upstream request itself, will typically be fixed within twenty-four hours.
  • UPSTREAM_RECORD_NOT_OWNED - the upstream resource in question has changed ownership since last known, typically happens when a number has been ported without triggering a eco-system event.
  • UPSTREAM_RECORD_NOT_FOUND - the upstream resource does not exist, or it used to but was removed without warning.
  • UPSTREAM_REJECTED - the upstream has rejected the request.

Type Enum:String

  • OK
  • NOT_IMPLEMENTED
  • RETRIES_EXHAUSTED
  • RECORD_CONFLICT
  • OWNERSHIP_MISMATCH
  • MESSAGING_UNAVAILABLE
  • INVALID_EMAIL_ADDRESS
  • INVALID_PHONE_NUMBER
  • INVALID_ADDRESS
  • LOA_REQUIRED
  • DID_NOT_FOUND
  • ASSOCIATED_WITH_DIDS
  • BRAND_NOT_FOUND
  • UPSTREAM_ERROR
  • UPSTREAM_INTERNAL_ERROR
  • UPSTREAM_TEMPORARY_ERROR
  • UPSTREAM_PARAMETER_ERROR
  • UPSTREAM_RECORD_NOT_OWNED
  • UPSTREAM_RECORD_NOT_FOUND
  • UPSTREAM_REJECTED

Example

"OK"

Schema / OrderResponse

Single order

Type Object

Name Type Description
data Order
type String

Example

{
  "data": {
    "error_code": "OK",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "Add Messaging to 10 Numbers",
    "notes": "Order for Client XYZ\n",
    "status": "NEW",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "order"
}

Schema / OrderStatus

An overall status of a respective order or request.

The status will be a summary of an order's requests, or just the status of the request itself.

  • NEW - the order has not yet been accepted by the ordering system for processing.
  • MANUAL - the order requires manual intervention, typically from a support personel.
  • AUTHOR_MANUAL - the order requires manual intervention, specifically from the author.
  • COMPLETED - the order has been completed without errors (i.e. all requests are COMPLETED).
  • COMPLETED_WITH_ERRORS - the order has been completed, but some requests may have errors.
  • PROCESSING - the order is being processed.
  • PENDING - similar to processing, but only applies when an order is delayed.
  • ERROR - the order has completely failed and all requests have failed.
  • REJECTED - the order was rejected and was not processed.
  • CANCELLED - the order has been cancelled, typically by a support personel.
  • EXPIRED - the order or its requests have all expired.
  • CRON - the order has been scheduled to process at a later time.
  • CART - the order is a cart.
  • REVIEW - the order or cart is pending review from an operations personel.

Type Enum:String

  • NEW
  • MANUAL
  • AUTHOR_MANUAL
  • COMPLETED
  • COMPLETED_WITH_ERRORS
  • PROCESSING
  • PENDING
  • ERROR
  • REJECTED
  • CANCELLED
  • EXPIRED
  • CRON
  • CART
  • REVIEW

Example

"NEW"

Schema / OrdersResponse

Orders

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:OrderResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "error_code": "OK",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "Add Messaging to 10 Numbers",
        "notes": "Order for Client XYZ\n",
        "status": "NEW",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "order"
    }
  ]
}

Schema / OverwriteRequest

A request created whenever a request to delete or overwrite an sms enabled numbers

Type Object

Name Type Description
activation String(format:date-time) An ISO8601 formatted timestamp
error_code Enum(OK):String Further explanation of an error status
expires_at String(format:date-time) An ISO8601 formatted timestamp
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
is_stale Boolean
review_status Enum:String Desc. review_status
status Enum:String Desc. status
tn String
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Enum Values review_status

Allowed values

  • NONE
  • APPROVED
  • REJECTED
  • AUTO_APPROVED
  • AUTO_REJECTED
  • FORCE_DELETED

Desc. review_status

The review status of the request, defaults to NONE.

Enum Values status

Allowed values

  • NEW
  • REVIEWED
  • APPROVED
  • REJECTED
  • ERROR
  • STALE
  • DELETED

Desc. status

The current processing status of the request

Example

{
  "activation": "2021-08-13T04:08:44.762841Z",
  "error_code": "OK",
  "expires_at": "2021-08-13T04:08:44.762841Z",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "is_stale": true,
  "review_status": "NONE",
  "status": "NEW",
  "tn": "12003004000",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / OverwriteRequestResponse

Single Overwrite Request

Type Object

Name Type Description
associations associations
data OverwriteRequest
type String

associations

Name Type Description
did did Desc. did
new_nnid_entry new_nnid_entry
reviewed_user reviewed_user Desc. reviewed_user

Desc. did

The DID associated with this overwrite, note that the number may not be present if the DID was removed.

As a rule of thumb, if a request has been approved, the ID should not be trusted.

Desc. reviewed_user

A limited scope of who reviewed the request (approved/rejected).

Note that an administrator can also approve requests.

did

Name Type Description
id String(format:uuid) Desc. id
number String

Desc. id

A Universally unique identifier, which identifies the resource

new_nnid_entry

Name Type Description
service_provider String Name of the new service provider

reviewed_user

Name Type Description
first_name String
id String(format:uuid) Desc. id
last_name String

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "associations": {
    "did": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "number": "12003004000"
    },
    "new_nnid_entry": {
      "service_provider": "ACME Corp"
    },
    "reviewed_user": {
      "first_name": "John",
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "last_name": "Doe"
    }
  },
  "data": {
    "activation": "2021-08-13T04:08:44.762841Z",
    "error_code": "OK",
    "expires_at": "2021-08-13T04:08:44.762841Z",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "is_stale": true,
    "review_status": "NONE",
    "status": "NEW",
    "tn": "12003004000",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "osr_overwrite_request"
}

Schema / OverwriteRequestsResponse

Overwrite Requests

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:OverwriteRequestResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "did": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "number": "12003004000"
        },
        "new_nnid_entry": {
          "service_provider": "ACME Corp"
        },
        "reviewed_user": {
          "first_name": "John",
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
          "last_name": "Doe"
        }
      },
      "data": {
        "activation": "2021-08-13T04:08:44.762841Z",
        "error_code": "OK",
        "expires_at": "2021-08-13T04:08:44.762841Z",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "is_stale": true,
        "review_status": "NONE",
        "status": "NEW",
        "tn": "12003004000",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "osr_overwrite_request"
    }
  ]
}

Schema / PageInfo

Contains pagination cursor information

Type Object

Name Type Description
first String
has_next_page Boolean
has_previous_page Boolean
last String

Example

{
  "first": "string",
  "has_next_page": true,
  "has_previous_page": true,
  "last": "string"
}

Schema / PermissionErrorObject

An object representing a single permission error, may contain a source if the error was from a field.

Type Object

Name Type Description
code Enum:String Desc. code
detail String Desc. detail
params params Desc. params
sub_code String Desc. sub_code
title String Desc. title

Enum Values code

Allowed values

  • access_denied.no_scope
  • access_denied.insufficient_level
  • access_denied.resource_unavailable
  • access_denied.action_disabled
  • access_denied.action_unavailable

Desc. code

Contains static error code representing the error

Desc. detail

Contains dynamic description of the error

Desc. params

Contains additional parameters based on the permission error

Desc. sub_code

Some codes may have sub codes that further describe an error.

Desc. title

A user friendly title for the error.

params

Name Type Description
action String
level Enum(guest, client, admin):String
resource String

Example

{
  "code": "access_denied.no_scope",
  "detail": "No scope available to user role",
  "params": {
    "action": "index",
    "level": "guest",
    "resource": "resource"
  },
  "sub_code": "none",
  "title": "Access Denied, no scope available"
}

Schema / PermissionErrorsResponse

Common errors response

Type Object

Name Type Description
errors Array:PermissionErrorObject A list of errors from the request

Example

{
  "errors": [
    {
      "code": "access_denied.no_scope",
      "detail": "No scope available to user role",
      "params": {
        "action": "index",
        "level": "guest",
        "resource": "resource"
      },
      "sub_code": "none",
      "title": "Access Denied, no scope available"
    }
  ]
}

Schema / Request

Specific action or operation that should take place

Type Object

Name Type Description
error_code OrderErrorCode
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(1..255)
notes String
status OrderStatus
type RequestType
updated_at String(format:date-time) An ISO8601 formatted timestamp
* One-Of

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

One-Of

Types

Example

{
  "error_code": "OK",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "SMS Tollfree Numbers 2021-08-12",
  "notes": "SMS Enablements",
  "status": "NEW",
  "type": "ADD_CAMPAIGN_NUMBERS",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "*": {
    "campaign_id": "5b502159-a3f4-48bd-87e7-205b7f0d6c7f",
    "numbers": [
      "12003004000"
    ],
    "tcr_campaign_id": "C000000",
    "tmobile_enabled": true
  }
}

Schema / RequestAddCampaignNumbersData

Request for register numbers under campaign

Type Object

Name Type Description
campaign_id String(format:uuid) Desc. campaign_id
numbers Array:String Desc. numbers
tcr_campaign_id String Desc. tcr_campaign_id
tmobile_enabled Boolean Desc. tmobile_enabled

Desc. campaign_id

The internal UUID of a known campaign.

  • This field will be backfilled if tcr_campaign_id is provided instead.
  • If this field AND tcr_campaign_id are provided they must resolve to the same campaign.

Desc. numbers

A list of NANP 11-digit numbers to add campaigns to.

Keep in mind, campaigns are only supported on non-tollfree TenDLC numbers.

For example: 12003004000.

Desc. tcr_campaign_id

The TCR issued Campaign ID, typically in the form of CNNNNNN.

  • This field will be backfilled if campaign_id is provided instead.
  • If this field AND campaign_id are provided they must resolve to the same campaign.

Desc. tmobile_enabled

Whether or not this request is subject to additional T-Mobile enablement, this will be auto-populated during request processing.

Note that this is based on a campaign's supported MNOs.

Example

{
  "campaign_id": "5b502159-a3f4-48bd-87e7-205b7f0d6c7f",
  "numbers": [
    "12003004000"
  ],
  "tcr_campaign_id": "C000000",
  "tmobile_enabled": true
}

Schema / RequestAddMessagingNumbersData

Request for enabling numbers for messaging.

Note that this request handles two different kinds of enablements:

  • BYON (Bring Your Own Number) type enablements, wheree a number will be registered for messaging only.
  • Enabling messaging on an existing number.

Type Object

Name Type Description
api_key_ids Array:String(format:uuid) Desc. api_key_ids
message_class Enum(A2P, P2P):String Desc. message_class
mms_enabled Boolean Desc. mms_enabled
numbers Array:String(format:tel) Desc. numbers
switch_id String(format:uuid) Desc. switch_id

Desc. api_key_ids

A list of API Keys that should be bound to the numbers once enabled.

If the number is already bound to the listed keys, then nothing will change.

Note that this will add new keys and not replace the existing bindings.

Desc. message_class

The messaging class of the numbers to be provisioned, by default this will be A2P.

  • A2P - Application to Person
  • P2P - Person to Person

Desc. mms_enabled

Should the numbers be MMS enabled?

MMS can also be enabled later by simply toggling it via the DID API.

Note. If your account does not support MMS by default, then toggling this flag does nothing.

Desc. numbers

A list of NANP 11-digit numbers to enable messaging on.

Non-tollfree numbers can normally be enabled outside of some special cases.

For tollfree, additional action may be required before completion.

Desc. switch_id

The ID of the switch that should be attached to the did for messaging.

Note. This changes the DID's messaging switch, not its voice fallback one.

Leaving this field blank will not overwrite the existing switch.

Example

{
  "api_key_ids": [
    "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
  ],
  "message_class": "A2P",
  "mms_enabled": false,
  "numbers": [
    "12003004000"
  ],
  "switch_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
}

Schema / RequestAddVoiceNumbersData

Request for Voice BYOC (Bring Your Own Carrier) Numbers

Type Object

Name Type Description
numbers Array:String Desc. numbers
switch_id String(format:uuid) Desc. switch_id

Desc. numbers

A list of NANP 11-digit numbers to add

Desc. switch_id

The ID of the switch that should be attached to the did for voice fallback

Example

{
  "numbers": [
    "12003004000"
  ],
  "switch_id": "9cdb55c0-6e15-4513-8430-4152fc8e07d3"
}

Schema / RequestDocument

Type Object

Name Type Description
content_type String Desc. content_type
expires_at String(format:date-time) Desc. expires_at
filename String Desc. filename
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(1..128) Desc. name
notes String Desc. notes
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. content_type

The mime type of the document, this will be returned as the content-type header when downloading the asset.

Desc. expires_at

An ISO8601 timestamp denoting when the document will be considered expired, note you may still be able to retrieve the associated file, but once over the timestamp, it will not be guaranteed.

Desc. filename

The filename of the document.

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. name

A unique name identifying the document, must be unique to the request

Desc. notes

Any additional information about the request, may be read by an operations personel in case of manual action

Example

{
  "content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
  "expires_at": "2021-08-13T04:08:44.762841Z",
  "filename": "acme_corp-lrn-2025-03-03.docx",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "LOA",
  "notes": "string",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / RequestDocumentResponse

Request Document

Type Object

Name Type Description
data RequestDocument
type String

Example

{
  "data": {
    "content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
    "expires_at": "2021-08-13T04:08:44.762841Z",
    "filename": "acme_corp-lrn-2025-03-03.docx",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "LOA",
    "notes": "string",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "request_document"
}

Schema / RequestDocumentsResponse

Request Documents

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:RequestDocumentResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "content_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
        "expires_at": "2021-08-13T04:08:44.762841Z",
        "filename": "acme_corp-lrn-2025-03-03.docx",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "LOA",
        "notes": "string",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "request_document"
    }
  ]
}

Schema / RequestNewNumbersData

Request for acquiring new numbers.

Type Object

Name Type Description
addons AddonsData
city String
min_quantity String Desc. min_quantity
npa String Desc. npa
number_type Enum(NONE, TENDLC, TOLLFREE):String Desc. number_type
numbers Array:String(format:tel) Desc. numbers
nxx String Desc. nxx
quantity String Desc. quantity
rate_center String Desc. rate_center
state String Desc. state

Desc. min_quantity

Sometimes there are legitimately not enough numbers to fill the order.

The min_quantity or minimum quantity informs the system if you are willing to tolerate a smaller quantity.

Desc. npa

The 3 digit Area Code.

Desc. number_type

The wanted number type either TENDLC or TOLLFREE.

NONE is effectively a no-op or null.

Desc. numbers

If the numbers that should be provisioned are known ahead of time, they can be provided in this field, however normally you'll want to avoid using this due to reservations.

Desc. nxx

The 3 digit Exchange Code.

Desc. quantity

The maximum numbers that should be requested based on the search critierias.

This pairs with min_quantity to form a range.

Desc. rate_center

The rate center code.

Desc. state

The 2 character state code, such as FL for Florida.

Example

{
  "addons": {
    "messaging": {
      "api_key_ids": [
        "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
      ],
      "csp_campaign_id": "string",
      "enabled": false,
      "mms_enabled": true,
      "notes": "This is for a state child support centre and will be enabled on Campaign X.\n",
      "switch_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "tcr_campaign_id": "C000000"
    },
    "voip_destinations": {
      "destinations": [
        {
          "activated": true,
          "auth_identity": "username",
          "auth_method": "BASIC",
          "auth_secret": "password",
          "destination": "http://example.com/http/route/call",
          "priority": 1,
          "type": "HTTP_ROUTE"
        }
      ],
      "enabled": true,
      "switch_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    }
  },
  "city": "string",
  "min_quantity": 10,
  "npa": "202",
  "number_type": "NONE",
  "numbers": [
    "12004005000"
  ],
  "nxx": "203",
  "quantity": 10,
  "rate_center": "NPLSFLGF3MD",
  "state": "FL"
}

Schema / RequestProvisionRecord

A Request's Provision Record represents a single number or unit of work that a request will process.

Provision records will reflect the status of a single number in that request.

Provision records may be replaced if a request is reset by a operational personnel to diagnose issues or to resolve an error.

Type Object

Name Type Description
error_code RequestProvisionRecordErrorCode
id String(format:ulid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
number String
status RequestProvisionRecordStatus
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "error_code": "OK",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "number": "12003004000",
  "status": "NONE",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / RequestProvisionRecordErrorCode

Error codes further explain an ERROR or error-like status or other authoritative action.

If additional information is required about a PVR's error state, please contact support.

  • OK - there was no error
  • MANUAL - the PVR requires manual attention or action from an operational personnel
  • UNKNOWN - something went wrong, and its unclear what happened, this should never happen normally
  • PROTECTED - the number or associated resource is currently protected from modification.
  • SUBMISSION_TEMPORARY_ERROR - while submitting the number to a registry, it encountered a temporary problem, this may resolve on its own with time
  • TIMEOUT - the PVR took too long to complete and has timed out while processing
  • MESSAGING_UNAVAILABLE - the number was required to have messaging components but failed secondary sanity checks
  • OWNERSHIP_MISMATCH - the number once belonged to a different account but changed during processing (very unlikely to happen normally)
  • NOT_FOUND - the number was expected to exist, but did not
  • FEATURE_NOT_FOUND - the number required a specific feature to be enabled, but did not meet the criteria
  • REQUIRED_RECORD_NOT_FOUND - the request required a resource or record for the processing of the number, but it could not be located or was lost before processing
  • CONFLICT - the request has noticed that the number or resource has already met its condition and will not try again
  • REJECTED - the request has failed one or more sanity checks and is deemed un-processable
  • OVERWRITE_REJECTED - the request attempted to overwrite an item in a registry but received a rejection for attempting so
  • WIRELESS_NUMBER_NOT_SUPPORTED - the PVR's number was determined to be a WIRELESS and is not supported for enablement
  • SUBMISSION_CHECKED_FAILED - the PVR had undergone some initial checks which have failed to determine if it could have been completed
  • SUBMISSION_FAILED - the number has failed submission, contact support for more details
  • PORTABILITY_CHECK_FAILED - similar to SUBMISSION_CHECKED_FAILED used for cases where the checks themselves could not be completed
  • UNPORTABLE - similar to SUBMISSION_CHECKED_FAILED used for cases where checks had completed but the number ultimately could not be completed
  • CANCELLED - the PVR has been marked CANCELLED and will be skipped by the ordering system until a reset takes place
  • NOT_IMPLEMENTED - the request attempted to process a feature that was not implemented, or is no longer implemented
  • INVALID_NUMBER - the number associated with the provision record is invalid
  • INVALID_NNID - the number was to be associated with a specific NNID but the ID was invalid, if this happens please contact support immediately.
  • LOA_REQUIRED - the number requires an LOA to complete its request
  • DID_NOT_FOUND - the number required that an existing DID exist, but it was not found

Upstream Errors

The following error codes pertain to Tychron and its partners, but are provided as apart of the error codes for convenience.

Clients are not required to act upon these codes and seeing one or more over the course of a request's lifetime is normal while problems are addressed for special cases.

The following errors codes will normally be addressed by an automatic retry or manual intervention.

  • UPSTREAM_ERROR - an external error has occurred, this will be addressed normally by an operational personnel
  • UPSTREAM_LIMIT_EXCEEDED - an external registry has imposed a limit which was exceeded by this number's actions
  • UPSTREAM_TIME_LIMIT_EXCEEDED - an external registry has imposed a time limit which was exceeded by this number's actions
  • UPSTREAM_RESOURCE_LIMIT_EXCEEDED - an external registry has imposed a limit on a specific resource related to the number which has been exceeded (e.g. a number pool)
  • UPSTREAM_RESOURCE_UNAVAILABLE - an external registry has reported a necessary resource for the number as being unavailable, it may or may not return if retried later
  • UPSTREAM_CANCELLED - an external registry has cancelled a request that may have been made earlier
  • UPSTREAM_TOO_MANY_REQUESTS - too many requests within a timespan, this will normally be addressed by an automatic retry
  • UPSTREAM_NOT_ALLOWED_TO_PROVISION - an external registry has prevented the provisioning of the specified number or resource
  • UPSTREAM_NOT_AUTHORIZED_TO_PROVISION - an external registry requires additional permission to provision the specified resource or number
  • UPSTREAM_UNAUTHORIZED - a generic authorization error, this will be addressed by a operational personnel
  • UPSTREAM_RECORD_NOT_OWNED - an external registry has deemed that the resource does not belong to the entity making the change
  • UPSTREAM_RECORD_NOT_FOUND - an external registry could not locate or find the specified number or resource
  • UPSTREAM_RECORD_IS_DUPLICATE - an external registry has determined that the resource is or may be a duplicate of another resource and has rejected the request
  • UPSTREAM_PARAMETER_ERROR - a malformed request was sent to the external registry (this can occur during emergency changes to upstream processes)
  • UPSTREAM_NUMBER_UNUSABLE - an external registry has deemed the number unusable for the specified action, it is unlikely that this number will change from this status
  • UPSTREAM_TEMPORARY_UNAVAILABLE - the upstream registry could not be contacted for processing at the time, it may become available later
  • UPSTREAM_PROVISIONING_UNAVAILABLE - an external registry has disabled, rejected or denied provisioning of the specific resource at this time
  • UPSTREAM_UNEXPECTED_RESPONSE - the registry returned or responded to a request with something unexpected by the ordering system
  • UPSTREAM_REQUEST_ERROR - either a very specific error has occurred or something unusual has happened, contact support for more details

System Errors

System errors are critical failures within host processing systems, if these errors do surface please contact support.

  • SYSTEM_ERROR - a generic system error
  • SYSTEM_REQUEST_ERROR - may be used in place of UPSTREAM_REQUEST_ERROR if the error was unexpected

Manual Errors or Flags

These are special case error code, typically used for manual action.

  • REMOVE_FROM_UPSTREAM - the PVR has been marked for removal from the upstream registry
  • PURGE - the PVR should be purged and removed from the request itself if possible

Type Enum:String

  • OK
  • MANUAL
  • UNKNOWN
  • PROTECTED
  • SUBMISSION_TEMPORARY_ERROR
  • MESSAGING_UNAVAILABLE
  • OWNERSHIP_MISMATCH
  • NOT_FOUND
  • FEATURE_NOT_FOUND
  • REQUIRED_RECORD_NOT_FOUND
  • CONFLICT
  • REJECTED
  • OVERWRITE_REJECTED
  • WIRELESS_NUMBER_NOT_SUPPORTED
  • SUBMISSION_CHECKED_FAILED
  • SUBMISSION_FAILED
  • PORTABILITY_CHECK_FAILED
  • UNPORTABLE
  • CANCELLED
  • NOT_IMPLEMENTED
  • INVALID_NUMBER
  • INVALID_NNID
  • LOA_REQUIRED
  • DID_NOT_FOUND
  • UPSTREAM_ERROR
  • UPSTREAM_LIMIT_EXCEEDED
  • UPSTREAM_TIME_LIMIT_EXCEEDED
  • UPSTREAM_RESOURCE_LIMIT_EXCEEDED
  • UPSTREAM_RESOURCE_UNAVAILABLE
  • UPSTREAM_CANCELLED
  • UPSTREAM_TOO_MANY_REQUESTS
  • UPSTREAM_NOT_ALLOWED_TO_PROVISION
  • UPSTREAM_NOT_AUTHORIZED_TO_PROVISION
  • UPSTREAM_UNAUTHORIZED
  • UPSTREAM_RECORD_NOT_OWNED
  • UPSTREAM_RECORD_NOT_FOUND
  • UPSTREAM_RECORD_IS_DUPLICATE
  • UPSTREAM_PARAMETER_ERROR
  • UPSTREAM_NUMBER_UNUSABLE
  • UPSTREAM_TEMPORARY_UNAVAILABLE
  • UPSTREAM_PROVISIONING_UNAVAILABLE
  • UPSTREAM_UNEXPECTED_RESPONSE
  • UPSTREAM_REQUEST_ERROR
  • SYSTEM_ERROR
  • SYSTEM_REQUEST_ERROR
  • REMOVE_FROM_UPSTREAM
  • PURGE

Example

"OK"

Schema / RequestProvisionRecordResponse

A single Provision Record Response.

Type Object

Name Type Description
data RequestProvisionRecord
type String

Example

{
  "data": {
    "error_code": "OK",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "number": "12003004000",
    "status": "NONE",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "request_provision_record"
}

Schema / RequestProvisionRecordStatus

Provision Record(s) (henceforth PVR(s)) have very different status codes from those of orders and requests.

A PVR represents a single unit (e.g. a number, a campaign etc...) and its progress within a Request.

Its status can therefore be its stage (what step of the process it is currently in).

  • NONE - the PVR was freshly created and has not been used yet
  • MANUAL - the PVR is currently requires manual or admin action
  • SUBMITTED_TO_REGISTRY* - for requests that may undergo multiple submissions to a registry, these statuses represent that action.
  • CONFIRMED_IN_REGISTRY* - for requests that were awaiting an upstream notification, they can be confirmed (i.e. accepted) once that notification is received.
  • PENDING_IN_REGISTRY* - for requests that enter a pending state (i.e. waiting on a notification)
  • REMOVED_FROM_REGISTRY* - can be seen as the reverse of CONFIRMED_IN_REGISTRY* specifically when removals are done, not that some requests may do a removal even if it was an ADD due to registry requirements for certain conditions.
  • COMPLETED - the PVR has completed processing
  • ERROR - the PVR has a permanent error (see error_code field for more details)
  • TEMPORARY_ERROR - the PVR has encountered a temporary error and may be resolved later with or by an operations personnel
  • EXPIRED - the request has given up on processing the PVR due to a timeout or other long period condition
  • CANCELLED - the request or an operational personnel has marked the PVR for cancellation possibly as it could not be completed due to an abnormal condition
  • REJECTED - the request has deemed that the PVR cannot or should not be processed, (see error_code field for more details)
  • PURGE - an operational personnel has marked the PVR for PERMANENT removal from the request, possibly as it could not be completed or the item is no longer required/eligible

Type Enum:String

  • NONE
  • MANUAL
  • SUBMITTED_TO_REGISTRY
  • SUBMITTED_TO_REGISTRY1
  • SUBMITTED_TO_REGISTRY2
  • SUBMITTED_TO_REGISTRY3
  • CONFIRMED_IN_REGISTRY
  • CONFIRMED_IN_REGISTRY1
  • CONFIRMED_IN_REGISTRY2
  • CONFIRMED_IN_REGISTRY3
  • PENDING_IN_REGISTRY
  • PENDING_IN_REGISTRY1
  • PENDING_IN_REGISTRY2
  • PENDING_IN_REGISTRY3
  • REMOVED_FROM_REGISTRY
  • REMOVED_FROM_REGISTRY1
  • REMOVED_FROM_REGISTRY2
  • REMOVED_FROM_REGISTRY3
  • COMPLETED
  • ERROR
  • TEMPORARY_ERROR
  • EXPIRED
  • CANCELLED
  • REJECTED
  • PURGE

Example

"NONE"

Schema / RequestProvisionRecordsResponse

Request Provision Records

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:RequestProvisionRecordResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "error_code": "OK",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "number": "12003004000",
        "status": "NONE",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "request_provision_record"
    }
  ]
}

Schema / RequestRegisterBrandData

Request for registering a TCR Brand.

Type Object

Name Type Description
address1 String
alt_business_id String
alt_business_id_type String
brand_id String(format:uuid) Desc. brand_id
brand_relationship String
business_contact_email String(format:email)
cdr_id String(format:uuid) Desc. cdr_id
city String
company_name String
country_code String
display_name String
ein String
ein_issuing_country_code String
email String(format:email)
entity_type String
first_name String
last_name String
phone_number String
state String
stock_exchange String
stock_symbol String
tcr_brand_id String
tcr_csp_id String
vertical String
website String
zip_code String

Desc. brand_id

A Universally unique identifier, which identifies the resource

Desc. cdr_id

A Universally unique identifier, which identifies the resource

Example

{
  "address1": "string",
  "alt_business_id": "string",
  "alt_business_id_type": "string",
  "brand_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "brand_relationship": "string",
  "business_contact_email": "string",
  "cdr_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "city": "string",
  "company_name": "ACME Corp",
  "country_code": "string",
  "display_name": "ACME Corp Brand",
  "ein": "00000000",
  "ein_issuing_country_code": "US",
  "email": "string",
  "entity_type": "string",
  "first_name": "John",
  "last_name": "Doe",
  "phone_number": "12003004000",
  "state": "string",
  "stock_exchange": "string",
  "stock_symbol": "string",
  "tcr_brand_id": "B000000",
  "tcr_csp_id": "S000000",
  "vertical": "string",
  "website": "string",
  "zip_code": "string"
}

Schema / RequestRegisterCampaignData

Request Data for registering TCR Campaigns.

Please note: the completion of the Request does not signify that the Campaign is ready to accept numbers, please check for the dca_approved flag on the campaign itself, or listen for the CSP_CAMPAIGN_REGISTERED event via Subscription Events.

Type Object

Name Type Description
message_flow String
tcr_campaign_id String Desc. tcr_campaign_id
help_message String
embedded_phone Boolean
tcr_brand_id String Desc. tcr_brand_id
embedded_link Boolean
tcr_reseller_id String Desc. tcr_reseller_id
age_gated Boolean
vertical String
optout_message String
description String
auto_renewal Boolean
embedded_link_sample String
optout_keywords String Desc. optout_keywords
terms_and_conditions_link String
direct_lending Boolean
sub_use_cases Array:String
optin_message String
mno_ids Array:String
reseller_id String(format:uuid) Internal UUID of CSP Reseller
subscriber_optout Boolean
brand_id String(format:uuid) Internal UUID of CSP Brand
use_case String
tcr_csp_id String Desc. tcr_csp_id
subscriber_optin Boolean
help_keywords String Desc. help_keywords
expedite_tier Enum(NONE, PRIORITY):String Desc. expedite_tier
affiliate_marketing Boolean
subscriber_help Boolean
samples Array:String
optin_keywords String Desc. optin_keywords
privacy_policy_link String
number_pool Boolean
terms_and_conditions Boolean Desc. terms_and_conditions

Desc. tcr_campaign_id

TCR issued Campaign ID.

Desc. tcr_brand_id

TCR issued Brand ID.

Desc. tcr_reseller_id

TCR issued Reseller ID.

Desc. optout_keywords

Must be a CSV, that is a comma separated list of keywords.

Excess spaces will be trimmed around each keyword.

Desc. tcr_csp_id

The Campaign Service Provider ID.

Typically in the form of SNNNNNN.

Desc. help_keywords

Must be a CSV, that is a comma separated list of keywords.

Excess spaces will be trimmed around each keyword.

Desc. expedite_tier

Request that the campaign's provisioning be expedited with upstream.

  • NONE - the default, no expedite, campaign will be processed at its normal rate

Desc. optin_keywords

Must be a CSV, that is a comma separated list of keywords.

Excess spaces will be trimmed around each keyword.

Desc. terms_and_conditions

Do you accept TCR's Terms and Conditions, this flag MUST be true in order to register a campaign.

If false the campaign will not be accepted for registration.

Example

{
  "message_flow": "string",
  "tcr_campaign_id": "C000000",
  "help_message": "string",
  "embedded_phone": false,
  "tcr_brand_id": "B000000",
  "embedded_link": false,
  "tcr_reseller_id": "R000000",
  "age_gated": false,
  "vertical": "TECHNOLOGY",
  "optout_message": "string",
  "description": "string",
  "auto_renewal": true,
  "embedded_link_sample": "string",
  "optout_keywords": "OPTOUT,STOP,UNSUBSCRIBE",
  "terms_and_conditions_link": "string",
  "direct_lending": false,
  "sub_use_cases": [
    "string"
  ],
  "optin_message": "string",
  "mno_ids": [
    "string"
  ],
  "reseller_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "subscriber_optout": false,
  "brand_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "use_case": "string",
  "tcr_csp_id": "S000000",
  "subscriber_optin": false,
  "help_keywords": "HELP,INFO",
  "expedite_tier": "NONE",
  "affiliate_marketing": false,
  "subscriber_help": false,
  "samples": [
    "string"
  ],
  "optin_keywords": "OPTIN,START,SUBSCRIBE",
  "privacy_policy_link": "string",
  "number_pool": false,
  "terms_and_conditions": false
}

Schema / RequestRemoveCampaignNumbersData

Request for detaching numbers from their known campaign.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to disable messaging for

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / RequestRemoveMessagingNumbersData

Request for disabling messaging on existing numbers.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to disable messaging for

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / RequestRemoveNumbersData

Request data for removing existing numbers regardless of components.

This request can handle the removal of all components safely.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to remove

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / RequestRemoveVoiceNumbersData

Request for removing voice BYOC (Bring Your Own Carrier) numbers.

Type Object

Name Type Description
numbers Array:String Desc. numbers

Desc. numbers

A list of NANP 11-digit numbers to remove

Example

{
  "numbers": [
    "12003004000"
  ]
}

Schema / RequestResponse

Single request

Type Object

Name Type Description
data Request
type String

Example

{
  "data": {
    "error_code": "OK",
    "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "SMS Tollfree Numbers 2021-08-12",
    "notes": "SMS Enablements",
    "status": "NEW",
    "type": "ADD_CAMPAIGN_NUMBERS",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "*": {
      "campaign_id": "5b502159-a3f4-48bd-87e7-205b7f0d6c7f",
      "numbers": [
        "12003004000"
      ],
      "tcr_campaign_id": "C000000",
      "tmobile_enabled": true
    }
  },
  "type": "request"
}

Schema / RequestType

The type of the request denotes what its intention and parameters will be.

Type Enum:String

  • ADD_CAMPAIGN_NUMBERS
  • ADD_DIRECTORY_LISTING_NUMBERS
  • ADD_E911_NUMBERS
  • ADD_GOOGLE_VERIFIED_SMS_NUMBERS
  • ADD_GOOGLE_VERIFIED_VOICE_NUMBERS
  • ADD_MESSAGING_NUMBERS
  • ADD_OUTBOUND_CNAME_NUMBERS
  • ADD_VOICE_NUMBERS
  • NEW_NUMBERS
  • NONE
  • PORT_NUMBERS
  • PUBLISH_MESSAGING_NUMBERS
  • REGISTER_BRAND
  • REGISTER_CAMPAIGN
  • REGISTER_GOOGLE_VERIFIED_SMS_AGENT
  • REGISTER_GOOGLE_VERIFIED_SMS_BRAND
  • REGISTER_GOOGLE_VERIFIED_VOICE_AGENT
  • REGISTER_GOOGLE_VERIFIED_VOICE_BRAND
  • REGISTER_RESELLER
  • REMOVE_CAMPAIGN_NUMBERS
  • REMOVE_DIRECTORY_LISTING_NUMBERS
  • REMOVE_E911_NUMBERS
  • REMOVE_GOOGLE_VERIFIED_SMS_NUMBERS
  • REMOVE_GOOGLE_VERIFIED_VOICE_NUMBERS
  • REMOVE_MESSAGING_NUMBERS
  • REMOVE_NUMBERS
  • REMOVE_OUTBOUND_CNAME_NUMBERS
  • REMOVE_VOICE_NUMBERS
  • RESUBMIT_CAMPAIGN
  • UNREGISTER_BRAND
  • UNREGISTER_CAMPAIGN
  • UNREGISTER_GOOGLE_VERIFIED_SMS_AGENT
  • UNREGISTER_GOOGLE_VERIFIED_SMS_BRAND
  • UNREGISTER_GOOGLE_VERIFIED_VOICE_AGENT
  • UNREGISTER_GOOGLE_VERIFIED_VOICE_BRAND
  • UNREGISTER_RESELLER
  • VET_BRAND

Example

"ADD_CAMPAIGN_NUMBERS"

Schema / RequestUnregisterBrandData

Request for unregistering a TCR Brand.

Type Object

Name Type Description
brand_id String(format:uuid) Internal UUID
tcr_brand_id String TCR issued Brand ID

Example

{
  "brand_id": "89900e23-aafc-4b03-954d-0b11d3948042",
  "tcr_brand_id": "B000000"
}

Schema / RequestUnregisterCampaignData

Request for unregistering a TCR Campaign.

Type Object

Name Type Description
campaign_id String(format:uuid) Internal UUID
tcr_campaign_id String TCR issued ID

Example

{
  "campaign_id": "89900e23-aafc-4b03-954d-0b11d3948042",
  "tcr_campaign_id": "B000000"
}

Schema / RequestVetBrandData

Request for vetting a TCR Brand.

Type Object

Name Type Description
brand_id String(format:uuid) Internal UUID
tcr_brand_id String TCR issued Brand ID
tcr_evp_id String Desc. tcr_evp_id
vetting_class String Desc. vetting_class

Desc. tcr_evp_id

The External Vetting Provider that should perform the brand's vetting.

Desc. vetting_class

Depending on the selected vetting provider, the available vetting classes may change.

Example

{
  "brand_id": "89900e23-aafc-4b03-954d-0b11d3948042",
  "tcr_brand_id": "B000000",
  "tcr_evp_id": "AEGIS",
  "vetting_class": "STANDARD"
}

Schema / RequestsResponse

Requests

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:RequestResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "error_code": "OK",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "SMS Tollfree Numbers 2021-08-12",
        "notes": "SMS Enablements",
        "status": "NEW",
        "type": "ADD_CAMPAIGN_NUMBERS",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "*": {
          "campaign_id": "5b502159-a3f4-48bd-87e7-205b7f0d6c7f",
          "numbers": [
            "12003004000"
          ],
          "tcr_campaign_id": "C000000",
          "tmobile_enabled": true
        }
      },
      "type": "request"
    }
  ]
}

Schema / ResourceNotFoundErrorObject

An object representing a single not-found error.

Type Object

Name Type Description
code Enum(not_found):String Desc. code
detail String Desc. detail
params params Desc. params
sub_code String Desc. sub_code
title String Desc. title

Desc. code

Contains static error code representing the error

Desc. detail

Contains dynamic description of the error

Desc. params

Contains additional parameters based on the permission error

Desc. sub_code

Some codes may have sub codes that further describe an error.

Desc. title

A user friendly title for the error, will usually reflect the http error code

params

Name Type Description
resource resource

resource

Name Type Description
id String Desc. id
type String Name of the resource

Desc. id

The identifier used to lookup the resource, some resources may allow different ids for lookup of the same resource.

Example

{
  "code": "not_found",
  "detail": "The specified resource could not be found",
  "params": {
    "resource": {
      "id": "3fbb573a-6049-44a0-a12c-d3a1ffae0b69",
      "type": "user"
    }
  },
  "sub_code": "none",
  "title": "Not Found"
}

Schema / ResourceNotFoundErrorsResponse

Error Response when a resource cannot be found.

Type Object

Name Type Description
errors Array:ResourceNotFoundErrorObject A list of errors from the request

Example

{
  "errors": [
    {
      "code": "not_found",
      "detail": "The specified resource could not be found",
      "params": {
        "resource": {
          "id": "3fbb573a-6049-44a0-a12c-d3a1ffae0b69",
          "type": "user"
        }
      },
      "sub_code": "none",
      "title": "Not Found"
    }
  ]
}

Schema / ReviewOverwriteRequestData

Request data for reviewing an Overwrite Request

Type Object

Name Type Description
review_status Enum:String Desc. review_status

Enum Values review_status

Allowed values

  • NONE
  • APPROVED
  • REJECTED
  • AUTO_APPROVED
  • AUTO_REJECTED
  • FORCE_DELETED

Desc. review_status

The review status of the request, defaults to NONE.

Example

{
  "review_status": "NONE"
}

Schema / ReviewOverwriteRequestRequest

Request for reviewing an Overwrite Request

Type Object

Name Type Description
data ReviewOverwriteRequestData
type String

Example

{
  "data": {
    "review_status": "NONE"
  },
  "type": "osr_overwrite_request"
}

Schema / Role

A role controls the access to resources and their actions within the API.

Type Object

Name Type Description
default_scope Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. default_scope
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
level Enum(GUEST, CLIENT, ADMIN):String Desc. level
name String Desc. name
notes String Desc. notes
rank Integer(>= 0) Desc. rank
resources Array:SubObject Desc. resources
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. default_scope

Role's default_scope, this is the scope applied when resources specify IGNORE for their own scope.

  • IGNORE - When used as the default_scope, effectively disables all resources that use IGNORE as their scope.
  • USER - Resources are scoped to the user, or their nearest account where applicable.
  • ACCOUNT - Resources are scoped against the user's account.
  • SYSTEM - Cannot be set by the API, but provided for reference, this is the system-wide scope.

Desc. id

A Universally unique identifier, which identifies the resource

Desc. level

The role's level dictates the overall access the associated user will have.

  • GUEST - Unprivileged user
  • CLIENT - This is the default level for Roles created from the API.
  • ADMIN - System administrators, cannot be set via the API, provided for reference.

Desc. name

Role's display name.

Desc. notes

Any notes about the role.

Desc. rank

Levels dictate the access, scopes filter resources, and ranks allow differentiating the same level of access within the account.

Ranks allow organizing roles within the account by importance.

0 is most relevant sometimes referred to as the highest rank. 1+ are ranks lower.

Ranks primarily affect the modification of: * Users - See Roles for information, as a user's Role dictates their permissions. * Roles - Roles of the same rank can modify themselves and those of lower rank, ranks of a higher rank cannot be modified by those of a lower rank.

SubObject

Sub-Schema

Type Object

Name Type Description
actions Array:SubObject
resource_id String
scope Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. scope

SubObject

Sub-Schema

Type Object

Name Type Description
name Enum:String Desc. name
value Enum(true, false):String Desc. value

Enum Values name

Allowed values

  • sell_rates
  • buy_rates
  • count
  • full_index
  • index
  • assoc
  • show
  • charge
  • reset
  • create
  • update
  • delete
  • purge
  • move
  • import
  • export
  • review
  • protect
  • share
  • unshare
  • impersonate
  • checkout
  • lookup_result
  • process
  • cancel
  • download
  • upload
  • summarize

Desc. name

The name of the action.

Desc. value

Whether or not the action is enabled.

NOTE. This is not a Boolean.

The field is an enum that happens to use the values true and false as strings.

Desc. scope

See Role's default_scope for more details on the enum.

IGNORE acts as a fallback to the default_scope.

Desc. resources

Role's job title, or position

Example

{
  "default_scope": "ACCOUNT",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "level": "CLIENT",
  "name": "Ordering Role",
  "notes": "This role governs the Ordering System Access",
  "rank": 0,
  "resources": [
    {
      "actions": [
        {
          "name": "sell_rates",
          "value": "true"
        }
      ],
      "resource_id": "string",
      "scope": "IGNORE"
    }
  ],
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / RolePoliciesResponse

Role Policies

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:RolePolicyResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "actions": [
          "sell_rates"
        ],
        "allowed_levels": [
          "GUEST"
        ],
        "allowed_scopes": [
          "ACCOUNT"
        ],
        "hint": "string",
        "label": "Roles",
        "resource_id": "string",
        "topics": [
          "string"
        ]
      },
      "type": "role_policy"
    }
  ]
}

Schema / RolePolicy

A role controls the access to resources and their actions within the API.

Type Object

Name Type Description
actions Array:Enum:String Desc. actions
allowed_levels Array:Enum(GUEST, CLIENT, ADMIN):String Desc. allowed_levels
allowed_scopes Array:Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. allowed_scopes
hint String Desc. hint
label String Desc. label
resource_id String
topics Array:String Desc. topics

Enum Values actions

Allowed values

  • sell_rates
  • buy_rates
  • count
  • full_index
  • index
  • assoc
  • show
  • charge
  • reset
  • create
  • update
  • delete
  • purge
  • move
  • import
  • export
  • review
  • protect
  • share
  • unshare
  • impersonate
  • checkout
  • lookup_result
  • process
  • cancel
  • download
  • upload
  • summarize

Desc. actions

A list of actions the resource has.

Desc. allowed_levels

A list of levels that are allowed to use this resource.

Desc. allowed_scopes

A list of scopes that are allowed to be paired with this resource.

Desc. hint

Effectively the description of the role from the backend.

Desc. label

Resource's primary label.

Desc. topics

A list of topics or related groupings the resource belongs to.

Example

{
  "actions": [
    "sell_rates"
  ],
  "allowed_levels": [
    "GUEST"
  ],
  "allowed_scopes": [
    "ACCOUNT"
  ],
  "hint": "string",
  "label": "Roles",
  "resource_id": "string",
  "topics": [
    "string"
  ]
}

Schema / RolePolicyResponse

Response when retrieving role policy information.

Type Object

Name Type Description
data RolePolicy
type String

Example

{
  "data": {
    "actions": [
      "sell_rates"
    ],
    "allowed_levels": [
      "GUEST"
    ],
    "allowed_scopes": [
      "ACCOUNT"
    ],
    "hint": "string",
    "label": "Roles",
    "resource_id": "string",
    "topics": [
      "string"
    ]
  },
  "type": "role_policy"
}

Schema / RoleResponse

Response when retrieving role information.

Type Object

Name Type Description
data Role
type String

Example

{
  "data": {
    "default_scope": "ACCOUNT",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "level": "CLIENT",
    "name": "Ordering Role",
    "notes": "This role governs the Ordering System Access",
    "rank": 0,
    "resources": [
      {
        "actions": [
          {
            "name": "sell_rates",
            "value": "true"
          }
        ],
        "resource_id": "string",
        "scope": "IGNORE"
      }
    ],
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "role"
}

Schema / RolesResponse

Roles

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:RoleResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "default_scope": "ACCOUNT",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "level": "CLIENT",
        "name": "Ordering Role",
        "notes": "This role governs the Ordering System Access",
        "rank": 0,
        "resources": [
          {
            "actions": [
              {
                "name": "sell_rates",
                "value": "true"
              }
            ],
            "resource_id": "string",
            "scope": "IGNORE"
          }
        ],
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "role"
    }
  ]
}

Schema / SearchNumberInventory

Search Number Inventory Response Data.

Due to the nature of reservations using search inventory vs coverage is discouraged.

It is possible for clients to obtain the SAME response from searching specifically for the number vs getting a coverage which is just the count of the parameters.

Type Object

Name Type Description
count Integer Desc. count
items Array:SubObject Desc. items

Desc. count

How many numbers total are available from the query.

SubObject

Sub-Schema

Type Object

Name Type Description
lata String
number String(format:tel)
rate_center String
state String
type Enum(TENDLC, TOLLFREE):String

Desc. items

An array of entries containing the numbers in the inventory.

Example

{
  "count": 10,
  "items": [
    {
      "lata": "236",
      "number": "12022014000",
      "rate_center": "WSHNGTNZN1",
      "state": "DC",
      "type": "TENDLC"
    }
  ]
}

Schema / SearchNumberInventoryResponse

The response for a Number Inventory search request.

Note that only a maximum of ten results can be returned at a time at for tollfree.

Type Object

Name Type Description
data SearchNumberInventory
type String

Example

{
  "data": {
    "count": 10,
    "items": [
      {
        "lata": "236",
        "number": "12022014000",
        "rate_center": "WSHNGTNZN1",
        "state": "DC",
        "type": "TENDLC"
      }
    ]
  },
  "type": "number_inventory"
}

Schema / SecretKey

An set of authorization details for various APIs

Type Object

Name Type Description
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String(3..255) Desc. name
notes String(0..65535) Desc. notes
size Enum(16, 24, 32, 48, 64):Number Desc. size
updated_at String(format:date-time) An ISO8601 formatted timestamp
usage Enum(NONE, SIGNING, ENCRYPTION):String Desc. usage

Desc. id

A Universally unique identifier, which identifies the resource

Desc. name

A friendly name to identify the Secret Key

Desc. notes

Any notes about the Secret Key, like, what it is used for, or other sharable details.

Desc. size

The size of the key that should be created in bytes, or the size of the key in the system.

Different use cases or methods will require different length keys.

Desc. usage

What is the intended usage of the Secret Key, this will bar it from being used for other cases.

NONE is placeholder or temporary disablement state reserved for internal usage.

Only SIGNING and ENCRYPTION can be used otherwise.

Example

{
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "My Secret Key",
  "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
  "size": 32,
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "usage": "SIGNING"
}

Schema / SecretKeyResponse

Single Secret Key

Type Object

Name Type Description
data SecretKey
type String

Example

{
  "data": {
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "My Secret Key",
    "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
    "size": 32,
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "usage": "SIGNING"
  },
  "type": "secret_key"
}

Schema / SecretKeysResponse

Secret Keys

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:SecretKeyResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "My Secret Key",
        "notes": "This Secret Key is used for the west datacenter's SMS notifications.",
        "size": 32,
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "usage": "SIGNING"
      },
      "type": "secret_key"
    }
  ]
}

Schema / SharedResourceGroup

A Shared Resource Group

Type Object

Name Type Description
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
name String The display name of the resource group
notes String Desc. notes
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. id

A Universally unique identifier, which identifies the resource

Desc. notes

Any additional notes about the shared resource group.

Example

{
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "name": "ACME Corp Shared Resources",
  "notes": "",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / SharedResourceGroupResponse

Single Shared Resource Group

Type Object

Name Type Description
associations associations
data SharedResourceGroup
type String

associations

Name Type Description
account account Desc. account
donee donee Desc. donee

Desc. account

The source or origin account that resources are shared from.

Desc. donee

The destination or target account that resources will be shared with.

account

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

donee

Name Type Description
id String(format:uuid) Desc. id

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "associations": {
    "account": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    },
    "donee": {
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
    }
  },
  "data": {
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "name": "ACME Corp Shared Resources",
    "notes": "",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "shared_resource_group"
}

Schema / SharedResourceGroupsResponse

Shared Resource Groups

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:SharedResourceGroupResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "account": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        },
        "donee": {
          "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
        }
      },
      "data": {
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "name": "ACME Corp Shared Resources",
        "notes": "",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "shared_resource_group"
    }
  ]
}

Schema / Switch

Switches contain the routing information for dids

Type Object

Name Type Description
notes String Any notes about the switch
sms_secret String Desc. sms_secret
mms_signing_scheme SwitchSigningScheme
voice_data String Desc. voice_data
updated_at String(format:date-time) An ISO8601 formatted timestamp
sms_data String Desc. sms_data
sms_signing_scheme SwitchSigningScheme
voice_protocol Enum:String Desc. voice_protocol
inserted_at String(format:date-time) An ISO8601 formatted timestamp
mms_options mms_options Desc. mms_options
sms_message_format Enum:String Desc. sms_message_format
mms_message_format Enum:String Desc. mms_message_format
voice_auth_method Enum(NONE, BASIC, BEARER):String Desc. voice_auth_method
mms_enabled Boolean Desc. mms_enabled
name String Desc. name
sms_auth_method Enum(NONE, BASIC, BEARER, HMAC_SHA256):String Desc. sms_auth_method
mms_secret String Desc. mms_secret
mms_identity String Acts as the username in basic auth
sms_enabled Boolean Desc. sms_enabled
mms_encryption_method SwitchEncryptionMethod
voice_enabled Boolean Desc. voice_enabled
sms_signing_hash SwitchSigningHash
sms_encryption_method SwitchEncryptionMethod
voice_identity String
mms_name String Desc. mms_name
mms_auth_method Enum(NONE, BASIC, BEARER, HMAC_SHA256):String Desc. mms_auth_method
mms_protocol Enum:String Desc. mms_protocol
voice_name String
voice_secret String
sms_name String Reserved for future use
mms_signing_hash SwitchSigningHash
mms_data String(format:url) Desc. mms_data
sms_protocol Enum:String Desc. sms_protocol
sms_identity String Acts as the username in basic auth
sms_options sms_options Desc. sms_options
id String(format:uuid) Desc. id

Desc. sms_secret

Depending on the auth_method, this fields usage changes:

  • NONE - unsued
  • BASIC - Acts as the password component of the Authorization Basic pair.
  • BEARER - Acts as the token
  • HMAC_SHA256 - Used as-is for signature generation, prefer using the dedicated signing keys instead for newer switches.

Desc. voice_data

Contains the routing url specific to the requested protocol

Desc. sms_data

Depending on the SMS Protocol in use, the requirement of this field will change:

  • NONE - ignored
  • SMPP - ignored
  • HTTP - Must be a valid URL, scheme may be http, or https, paths and query parameters are supported.
  • FORWARD - Must be a valid E164 address (can omit plus if needed), messages will be forwarded to the respective number as a new OUTBOUND message (charges apply).
  • TYCHRON_CHAT - Set as UNUSUED.

Enum Values voice_protocol

Allowed values

  • NONE
  • VOIP
  • PSTN
  • TTS
  • TTS_CUSTOM
  • HTTP_ROUTE

Desc. voice_protocol

All protocols supported for fallback VoIP destination.

Desc. mms_options

Contains various miscelleanous or experimental feature flags for MMS.

Enum Values sms_message_format

Allowed values

  • TRINITY_JSON_1_0
  • TRINITY_POST_1_0
  • TRINITY_POST_2_0

Desc. sms_message_format

All supported message formats for SMS HTTP Protocol

Enum Values mms_message_format

Allowed values

  • OXY_JSON_1_0
  • OXY_JSONAPI_1_0
  • OXY_XML_1_0
  • OXY_MULTIPART_1_0
  • OXY_MULTIPART_2_0
  • OXY_RFC822_1_0

Desc. mms_message_format

All supported message formats for MMS HTTP Protocol.

Desc. voice_auth_method

Various authorization methods supported.

Primarily used with HTTP ROUTE

Desc. mms_enabled

Enable inbound MMS routing?

Desc. name

A display name to easily identify the switch

Desc. sms_auth_method

Various authorization methods supported by the SMS HTTP Protocol.

SMPP utilizes an API Key for it's authorization instead.

  • NONE - No authorization header is added to the request
  • BASIC - Uses the sms_identity as the username and sms_secret as the password to form the Basic pair
  • BEARER - Uses ONLY the sms_secret as the token
  • HMAC_SHA256 - Consult the Signing Hash section for details, the signature will be placed into the authorization header with a scheme TYCHRON0-HMAC-SHA256 and Base16 encoded (lowercase).

Desc. mms_secret

Depending on the auth_method, this fields usage changes:

  • NONE - unsued
  • BASIC - Acts as the password component of the Authorization Basic pair.
  • BEARER - Acts as the token
  • HMAC_SHA256 - Used as-is for signature generation, prefer using the dedicated signing keys instead for newer switches.

Desc. sms_enabled

Enable inbound SMS routing?

Desc. voice_enabled

Enable voice call fallback routing?

Desc. mms_name

Only used for MM4, used as the display name for auth

Desc. mms_auth_method

Various authorization methods supported.

Note that bearer and hmac_sha256 will not be used for MM4, only basic is supported.

HTTP supports all available methods.

  • NONE - No authorization header is added to the request
  • BASIC - Uses the mms_identity as the username and mms_secret as the password to form the Basic pair
  • BEARER - Uses ONLY the mms_secret as the token
  • HMAC_SHA256 - Consult the Signing Hash section for details, the signature will be placed into the authorization header with a scheme TYCHRON0-HMAC-SHA256 and Base16 encoded (lowercase).

Enum Values mms_protocol

Allowed values

  • NONE
  • MM4
  • HTTP
  • SFTP
  • FORWARD
  • TYCHRON_CHAT

Desc. mms_protocol

All protocols supported for MMS delivery.

  • NONE - Will discard any inbound messages destined for the switch.
  • MM4 - Delivers messages over MM4 to the configured enpoint in mms_data, use mm4s as the scheme to require TLS, or mm4+s for optional TLS.
  • HTTP - Delivers messages over HTTP (or HTTPS, if the scheme is set to https in the mms_data).
  • SFTP - Uploads the MMS to a SFTP server.
  • FORWARD - Forwards the INBOUND MMS to another number as a new OUTBOUND message.
  • TYCHRON_CHAT - Forwards the MMS to Tychron's chat service.

Desc. mms_data

Depending on the mms_protocol, the value is of a different format:

  • NONE - ignored
  • MM4 - Must be a valid URL, without a path component with schemes: mm4, mm4+s or mm4s for non-tls, optional-tls and mandatory tls respectively.
  • HTTP - Must be a valid URL, scheme may be http, or https, paths and query parameters are supported.
  • SFTP - Must be a valid URL, scheme MUST be sftp, path component is used to change directory if supplied.
  • FORWARD - Must be a valid E164 address (can omit plus if needed), messages will be forwarded to the respective number as a new OUTBOUND message (charges apply).
  • TYCHRON_CHAT - Set to UNUSED.

Enum Values sms_protocol

Allowed values

  • NONE
  • SMPP
  • HTTP
  • FORWARD
  • TYCHRON_CHAT

Desc. sms_protocol

All protocols supported for SMS delivery, note that none will effectively no-op all incoming messages.

  • NONE - No protocol, this will discard any inbound messages destined for the host number associated with the switch
  • HTTP - Uses HTTP (supports HTTPS if the sms_data includes the respective scheme, e.g. https://example.com)
  • SMPP - The switch is configured to use SMPP, note. the switch MUST have an attached API Key to determine the destination, as API Keys contain the SMPP System ID.
  • FORWARD - Forwards any incoming messages to the switch to another number configured as sms_data.
  • TYCHRON_CHAT - Forwards any incoming messages to Tychron's chat service.

Desc. sms_options

Contains various miscelleanous or experimental feature flags for SMS.

Desc. id

A Universally unique identifier, which identifies the resource

mms_options

Name Type Description
dlr_on_sent Boolean Desc. dlr_on_sent
forward_dlr Boolean Desc. forward_dlr
pad_shortcodes Boolean Desc. pad_shortcodes

Desc. dlr_on_sent

Experimental: Whenever a message is sent to the configured endpoint, a dlr will automatically be generated and sent back to the sender.

Desc. forward_dlr

Normally a switch will always attempt to deliver DLRs the same as regular messages.

This flag can be set to stop the delivery of DLRs.

Desc. pad_shortcodes

Experimental: If your endpoint requires 11 or more digits for numbers, this field can be enabled to pad shortcodes with leading zeroes to make them 11 digit where possible.

sms_options

Name Type Description
dlr_on_sent Boolean Desc. dlr_on_sent
forward_dlr Boolean Desc. forward_dlr
pad_shortcodes Boolean Desc. pad_shortcodes

Desc. dlr_on_sent

Experimental: Whenever a message is sent to the configured endpoint, a dlr will automatically be generated and sent back to the sender.

Desc. forward_dlr

Normally a switch will always attempt to deliver DLRs the same as regular messages.

This flag can be set to stop the delivery of DLRs.

Desc. pad_shortcodes

Experimental: If your endpoint requires 11 or more digits for numbers, this field can be enabled to pad shortcodes with leading zeroes to make them 11 digit where possible.

Example

{
  "notes": "CA Switch for Data-Center #3, do not DELETE AGAIN.",
  "sms_secret": "super$ecret",
  "mms_signing_scheme": "NONE",
  "voice_data": "[email protected]",
  "updated_at": "2021-08-13T04:08:44.762841Z",
  "sms_data": "https://example.com",
  "sms_signing_scheme": "NONE",
  "voice_protocol": "NONE",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "mms_options": {
    "dlr_on_sent": false,
    "forward_dlr": true,
    "pad_shortcodes": false
  },
  "sms_message_format": "TRINITY_JSON_1_0",
  "mms_message_format": "OXY_JSON_1_0",
  "voice_auth_method": "NONE",
  "mms_enabled": true,
  "name": "Primary Messaging Switch",
  "sms_auth_method": "NONE",
  "mms_secret": "super$ecret",
  "mms_identity": "johndoe",
  "sms_enabled": true,
  "mms_encryption_method": "NONE",
  "voice_enabled": false,
  "sms_signing_hash": "NONE",
  "sms_encryption_method": "NONE",
  "voice_identity": "johndoe",
  "mms_name": "John Doe",
  "mms_auth_method": "NONE",
  "mms_protocol": "NONE",
  "voice_name": "John Doe",
  "voice_secret": "super$ecret",
  "sms_name": "John Doe",
  "mms_signing_hash": "NONE",
  "mms_data": "mm4://example.com:2525",
  "sms_protocol": "NONE",
  "sms_identity": "johndoe",
  "sms_options": {
    "dlr_on_sent": false,
    "forward_dlr": true,
    "pad_shortcodes": false
  },
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
}

Schema / SwitchEncryptionMethod

Encrypts the request body using the configured secret for the respective message type.

  • NONE - No encryption is done to the payload, the default
  • AES_128_GCM - Requires a 16 byte secret key
  • AES_192_GCM - Requires a 24 byte secret key
  • AES_256_GCM - Requires a 32 byte secret key

NOTE. Request Headers are NOT encrypted.

Upon encryption the content-type will be replaced by application/octet-stream.

The following headers will be added to all HTTP requests that have a non-NONE method configured: * x-message-iv - a Base16 (lowercase) encoded value, the initialization vector (IV), SHALL be 12 bytes when decoded * x-message-content-type - the original content-type of the message before it was encrypted

The AES-GCM additional authenticated data (AAD) SHALL be an empty byte string (i.e. "").

The AES-GCM authentication tag is appended directly to the request body and SHALL be the final 16 bytes. The request body MUST therefore contain at least 16 bytes.

Example (Elixir):

ciphertext_size = byte_size(body) - 16 <> = body

Type Enum:String

  • NONE
  • AES_128_GCM
  • AES_192_GCM
  • AES_256_GCM

Example

"NONE"

Schema / SwitchResponse

Single switch

Type Object

Name Type Description
associations associations
data Switch
type String

associations

Name Type Description
api_key api_key Desc. api_key
mms_encryption_key mms_encryption_key Desc. mms_encryption_key
mms_signing_key mms_signing_key Desc. mms_signing_key
sms_encryption_key sms_encryption_key Desc. sms_encryption_key
sms_signing_key sms_signing_key Desc. sms_signing_key

Desc. api_key

The attached and associated API Key used for SMPP routing.

Desc. mms_encryption_key

The Secret Key that will be used for MMS encryption if enabled.

Desc. mms_signing_key

The Secret Key that will be used for MMS signing if enabled.

Desc. sms_encryption_key

The Secret Key that should be used for SMS encryption if enabled.

Desc. sms_signing_key

The Secret Key that will be used for SMS signing if enabled.

api_key

Name Type Description
id String(format:uuid)

mms_encryption_key

Name Type Description
id String(format:uuid)

mms_signing_key

Name Type Description
id String(format:uuid)

sms_encryption_key

Name Type Description
id String(format:uuid)

sms_signing_key

Name Type Description
id String(format:uuid)

Example

{
  "associations": {
    "api_key": {
      "id": "string"
    },
    "mms_encryption_key": {
      "id": "string"
    },
    "mms_signing_key": {
      "id": "string"
    },
    "sms_encryption_key": {
      "id": "string"
    },
    "sms_signing_key": {
      "id": "string"
    }
  },
  "data": {
    "notes": "CA Switch for Data-Center #3, do not DELETE AGAIN.",
    "sms_secret": "super$ecret",
    "mms_signing_scheme": "NONE",
    "voice_data": "[email protected]",
    "updated_at": "2021-08-13T04:08:44.762841Z",
    "sms_data": "https://example.com",
    "sms_signing_scheme": "NONE",
    "voice_protocol": "NONE",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "mms_options": {
      "dlr_on_sent": false,
      "forward_dlr": true,
      "pad_shortcodes": false
    },
    "sms_message_format": "TRINITY_JSON_1_0",
    "mms_message_format": "OXY_JSON_1_0",
    "voice_auth_method": "NONE",
    "mms_enabled": true,
    "name": "Primary Messaging Switch",
    "sms_auth_method": "NONE",
    "mms_secret": "super$ecret",
    "mms_identity": "johndoe",
    "sms_enabled": true,
    "mms_encryption_method": "NONE",
    "voice_enabled": false,
    "sms_signing_hash": "NONE",
    "sms_encryption_method": "NONE",
    "voice_identity": "johndoe",
    "mms_name": "John Doe",
    "mms_auth_method": "NONE",
    "mms_protocol": "NONE",
    "voice_name": "John Doe",
    "voice_secret": "super$ecret",
    "sms_name": "John Doe",
    "mms_signing_hash": "NONE",
    "mms_data": "mm4://example.com:2525",
    "sms_protocol": "NONE",
    "sms_identity": "johndoe",
    "sms_options": {
      "dlr_on_sent": false,
      "forward_dlr": true,
      "pad_shortcodes": false
    },
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
  },
  "type": "switch"
}

Schema / SwitchSigningHash

Signs the request with the configured signing key for the respective message type.

Signing does NOT replace the auth_method like the HMAC_SHA256 method would, instead additional headers will be added to the request.

Signing happens AFTER the payload has already been encrypted, to reverse the operation, check the signature first, then decrypt.

  • NONE - No signature is generated for requests

These should be self-explanatory: * SHA2_256 * SHA2_384 * SHA2_512 * SHA3_256 * SHA3_384 * SHA3_512

The following headers are added to requests with signing present: * x-message-signature-version consult the respective signature versions for further details on your message type * x-message-signature - a Base16 (lowercase) encoded binary of the signature

Where a header is NOT present in the request, it should be assumed "0x00" (a literal null) for calculation.

SMS Signature Versions

2026-07-27 SMS

Signatures for SMS are generated by applying the follow values in order:

  • Request Headers
  • content-type
  • x-message-authorization-version
  • x-message-content-type
  • x-message-format
  • x-message-id
  • x-message-iv
  • x-message-signature-version
  • x-message-timestamp
  • x-tychron-csp-campaign-id
  • x-tychron-remote-reference-id
  • x-tychron-remote-service-provider
  • x-tychron-tcr-brand-id
  • x-tychron-tcr-campaign-id
  • Request Body

MMS Signature Versions

Signatures for MMS change depending on the content-type, be sure to consult the correct section for the respective type.

2026-07-27 MMS Multipart

When the content-type is of multipart/*, where its subtype can be any value.

  • Request Headers (the main document)
  • content-type
  • x-message-authorization-version
  • x-message-content-type
  • x-message-format
  • x-message-id
  • x-message-iv
  • x-message-signature-version
  • x-message-timestamp
  • x-tychron-csp-campaign-id
  • x-tychron-remote-reference-id
  • x-tychron-remote-service-provider
  • x-tychron-tcr-brand-id
  • x-tychron-tcr-campaign-id
  • Each Part (repeat for each part in the request, IN ORDER)
  • Part Headers
    • content-type
    • x-message-content-type
    • x-message-iv
  • Part Body

2026-07-27 MMS Single Part

For everything else:

  • Request Headers (the main document)
  • content-type
  • x-message-authorization-version
  • x-message-content-type
  • x-message-format
  • x-message-id
  • x-message-iv
  • x-message-signature-version
  • x-message-timestamp
  • x-tychron-csp-campaign-id
  • x-tychron-remote-reference-id
  • x-tychron-remote-service-provider
  • x-tychron-tcr-brand-id
  • x-tychron-tcr-campaign-id
  • Request Body

Type Enum:String

  • NONE
  • SHA2_256
  • SHA2_384
  • SHA2_512
  • SHA3_256
  • SHA3_384
  • SHA3_512

Example

"NONE"

Schema / SwitchSigningScheme

The signing scheme that should be used, only NONE (for no signing) and HMAC are available.

Type Enum:String

  • NONE
  • HMAC

Example

"NONE"

Schema / SwitchesResponse

Switches

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:SwitchResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "associations": {
        "api_key": {
          "id": "string"
        },
        "mms_encryption_key": {
          "id": "string"
        },
        "mms_signing_key": {
          "id": "string"
        },
        "sms_encryption_key": {
          "id": "string"
        },
        "sms_signing_key": {
          "id": "string"
        }
      },
      "data": {
        "notes": "CA Switch for Data-Center #3, do not DELETE AGAIN.",
        "sms_secret": "super$ecret",
        "mms_signing_scheme": "NONE",
        "voice_data": "[email protected]",
        "updated_at": "2021-08-13T04:08:44.762841Z",
        "sms_data": "https://example.com",
        "sms_signing_scheme": "NONE",
        "voice_protocol": "NONE",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "mms_options": {
          "dlr_on_sent": false,
          "forward_dlr": true,
          "pad_shortcodes": false
        },
        "sms_message_format": "TRINITY_JSON_1_0",
        "mms_message_format": "OXY_JSON_1_0",
        "voice_auth_method": "NONE",
        "mms_enabled": true,
        "name": "Primary Messaging Switch",
        "sms_auth_method": "NONE",
        "mms_secret": "super$ecret",
        "mms_identity": "johndoe",
        "sms_enabled": true,
        "mms_encryption_method": "NONE",
        "voice_enabled": false,
        "sms_signing_hash": "NONE",
        "sms_encryption_method": "NONE",
        "voice_identity": "johndoe",
        "mms_name": "John Doe",
        "mms_auth_method": "NONE",
        "mms_protocol": "NONE",
        "voice_name": "John Doe",
        "voice_secret": "super$ecret",
        "sms_name": "John Doe",
        "mms_signing_hash": "NONE",
        "mms_data": "mm4://example.com:2525",
        "sms_protocol": "NONE",
        "sms_identity": "johndoe",
        "sms_options": {
          "dlr_on_sent": false,
          "forward_dlr": true,
          "pad_shortcodes": false
        },
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48"
      },
      "type": "switch"
    }
  ]
}

Schema / SystemEvent

Format of the Subscription Event webhook.

Type Object

Name Type Description
associations associations Desc. associations
data One-Of
id String(format:ulid) Desc. id
inserted_at String(format:date-time) Desc. inserted_at
timestamp String(format:date-time) Desc. timestamp
topic SystemEventTopic
type SystemEventType

Desc. associations

Depending on the type, this field will contain additional associations of the parent record.

For example:

  • ORDER_COMPLETED - will include requests
  • REQUEST_COMPLETED - will include provision_records

One-Of

Types

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. inserted_at

When was this event first created?

Desc. timestamp

When was the event sent from the host system?

associations

Name Type Description
provision_records Array:SystemEventAssociationProvisionRecord
requests Array:SystemEventAssociationRequest

Example

{
  "associations": {
    "provision_records": [
      {
        "error_code": "OK",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "number": "12003004000",
        "status": "NONE"
      }
    ],
    "requests": [
      {
        "error_code": "OK",
        "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
        "status": "NEW"
      }
    ]
  },
  "data": {
    "csp_campaign_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
    "tcr_campaign_id": "C000000"
  },
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "timestamp": "2021-08-13T04:08:44.762841Z",
  "topic": "NONE",
  "type": "DID_CREATED"
}

Schema / SystemEventAssociationProvisionRecord

Purely associated with the REQUEST_COMPLETED System Event, Provision Records, henceforth abbreviated as PVR track individual items within a REQUEST.

The number of the PVR will typically contain the most relevant ID or value of the resource it represents.

Examples:

  • e.g.1. ADD_MESSAGING_NUMBERS's PVRs has its number correspond to the numbers.
  • e.g.2. REGISTER_BRAND's PVRs has its number fixed to "0000".
  • e.g.3. REGISTER_CAMPAIGN's PVRs has its number fixed to "0000".

Type Object

Name Type Description
error_code RequestProvisionRecordErrorCode
id String(format:ulid) Desc. id
number String(1..255) Desc. number
status RequestProvisionRecordStatus

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. number

The number represents the most relevant ID of the item in the REQUEST.

Field will customarily contain digits.

Some requests will use 0000 as their primary number, the events should include additional data in its body in those cases to help differentiate events.

Example

{
  "error_code": "OK",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "number": "12003004000",
  "status": "NONE"
}

Schema / SystemEventAssociationRequest

Type Object

Name Type Description
error_code OrderErrorCode
id String(format:ulid) Desc. id
status OrderStatus

Desc. id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "error_code": "OK",
  "id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "status": "NEW"
}

Schema / SystemEventDataCspCampaignOptoutItemCreated

CSP_CAMPAIGN_OPTOUT_ITEM_CREATED

The creation of an optout item is the explicit action of a subscriber opting out of receiving messages.

Type Object

Name Type Description
csp_campaign_id String(format:ulid) Desc. csp_campaign_id
host_number String Desc. host_number
keyword String Desc. keyword
remote_number String Desc. remote_number
tcr_campaign_id String The TCR issued campaign ID

Desc. csp_campaign_id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. keyword

If the optout was triggered by the system, this field will be populated with the keyword used.

Will be some variant of STOP normally.

For more information about keywords and their handling, contact support.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Example

{
  "csp_campaign_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "host_number": "12003004000",
  "keyword": "STOP",
  "remote_number": "12003004001",
  "tcr_campaign_id": "C000000"
}

Schema / SystemEventDataCspCampaignOptoutItemDeleted

CSP_CAMPAIGN_OPTOUT_ITEM_DELETED

While it may be confusing at first, the deletion of an optout item signifies that a subscriber, as opted-in to receive messages and a restriction is no longer in place.

Type Object

Name Type Description
csp_campaign_id String(format:ulid) Desc. csp_campaign_id
host_number String Desc. host_number
keyword String Desc. keyword
remote_number String Desc. remote_number
tcr_campaign_id String The TCR issued campaign ID

Desc. csp_campaign_id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. keyword

If the optout was triggered by the system, this field will be populated with the keyword used.

Will be some variant of STOP normally.

For more information about keywords and their handling, contact support.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Example

{
  "csp_campaign_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "host_number": "12003004000",
  "keyword": "STOP",
  "remote_number": "12003004001",
  "tcr_campaign_id": "C000000"
}

Schema / SystemEventDataCspCampaignRegistered

CSP_CAMPAIGN_REGISTERED

Type Object

Name Type Description
csp_campaign_id String(format:ulid) Desc. csp_campaign_id
tcr_campaign_id String The TCR issued campaign ID

Desc. csp_campaign_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "csp_campaign_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "tcr_campaign_id": "C000000"
}

Schema / SystemEventDataDidComponent

The component of the DID that was created or deleted.

Type Enum:String

  • UNKNOWN
  • MESSAGING
  • VOICE
  • CSP_CAMPAIGN

Example

"UNKNOWN"

Schema / SystemEventDataDidComponentCreated

DID_COMPONENT_CREATED

Type Object

Name Type Description
component SystemEventDataDidComponent
did_id String(format:uuid) Desc. did_id
number String Desc. number
reason SystemEventDataDidCreatedReason
request_id String(format:ulid) Desc. request_id

Desc. did_id

A Universally unique identifier, which identifies the resource

Desc. number

The 3 to 15 digit code of the number.

Desc. request_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "component": "UNKNOWN",
  "did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "number": "12003004000",
  "reason": "UNKNOWN",
  "request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
}

Schema / SystemEventDataDidComponentDeleted

DID_COMPONENT_DELETED

Type Object

Name Type Description
component SystemEventDataDidComponent
did_id String(format:uuid) Desc. did_id
number String Desc. number
reason SystemEventDataDidDeletedReason
request_id String(format:ulid) Desc. request_id

Desc. did_id

A Universally unique identifier, which identifies the resource

Desc. number

The 3 to 15 digit code of the number.

Desc. request_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "component": "UNKNOWN",
  "did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "number": "12003004000",
  "reason": "UNKNOWN",
  "request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
}

Schema / SystemEventDataDidCreated

DID_CREATED

Type Object

Name Type Description
did_id String(format:uuid) Desc. did_id
number String Desc. number
reason SystemEventDataDidCreatedReason
request_id String(format:ulid) Desc. request_id

Desc. did_id

A Universally unique identifier, which identifies the resource

Desc. number

The 3 to 15 digit code of the number.

Desc. request_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "number": "12003004000",
  "reason": "UNKNOWN",
  "request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
}

Schema / SystemEventDataDidCreatedReason

The reason a DID was deleted.

Type Enum:String

  • UNKNOWN
  • CREATED_BY_REQUEST

Example

"UNKNOWN"

Schema / SystemEventDataDidDeleted

DID_DELETED

Type Object

Name Type Description
did_id String(format:uuid) Desc. did_id
number String Desc. number
reason SystemEventDataDidDeletedReason
request_id String(format:ulid) Desc. request_id

Desc. did_id

A Universally unique identifier, which identifies the resource

Desc. number

The 3 to 15 digit code of the number.

Desc. request_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "number": "12003004000",
  "reason": "UNKNOWN",
  "request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0"
}

Schema / SystemEventDataDidDeletedReason

The reason a DID was deleted.

Type Enum:String

  • UNKNOWN
  • DELETED_FROM_REGISTRY
  • DELETED_MANUALLY
  • DELETED_BY_REQUEST

Example

"UNKNOWN"

Schema / SystemEventDataDidOptoutItemCreated

DID_OPTOUT_ITEM_CREATED

The creation of an optout item is the explicit action of a subscriber opting out of receiving messages.

Type Object

Name Type Description
host_did_id String(format:uuid) Desc. host_did_id
host_number String Desc. host_number
keyword String Desc. keyword
remote_number String Desc. remote_number

Desc. host_did_id

A Universally unique identifier, which identifies the resource

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. keyword

If the optout was triggered by the system, this field will be populated with the keyword used.

Will be some variant of STOP normally.

For more information about keywords and their handling, contact support.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Example

{
  "host_did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "host_number": "12003004000",
  "keyword": "STOP",
  "remote_number": "12003004001"
}

Schema / SystemEventDataDidOptoutItemDeleted

DID_OPTOUT_ITEM_DELETED

While it may be confusing at first, the deletion of an optout item signifies that a subscriber, as opted-in to receive messages and a restriction is no longer in place.

Type Object

Name Type Description
host_did_id String(format:uuid) Desc. host_did_id
host_number String Desc. host_number
keyword String Desc. keyword
remote_number String Desc. remote_number

Desc. host_did_id

A Universally unique identifier, which identifies the resource

Desc. host_number

A reference to the host number that this optout belongs to.

That is the number that received the optout request.

Desc. keyword

If the optout was triggered by the system, this field will be populated with the keyword used.

Will be some variant of STOP normally.

For more information about keywords and their handling, contact support.

Desc. remote_number

The client number that sent the optout, or is opted out of receiving messages from the host number

Example

{
  "host_did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "host_number": "12003004000",
  "keyword": "STOP",
  "remote_number": "12003004001"
}

Schema / SystemEventDataOrderCompleted

ORDER_COMPLETED

This event is sent whenever an ORDER is considered complete, not necessarily COMPLETED.

The requests associations will be included in the parent System Event.

Note the requests association do not include their PVRs, you must have the REQUEST topic enabled to receive those details.

Type Object

Name Type Description
error_code OrderErrorCode
order_id String(format:ulid) Desc. order_id
status OrderStatus

Desc. order_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "error_code": "OK",
  "order_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "status": "NEW"
}

Schema / SystemEventDataOsrOverwriteRequestCompleted

OSR_OVERWRITE_REQUEST_COMPLETED

Type Object

Name Type Description
did_id String(format:uuid) Desc. did_id
error_code Enum(OK):String Further explanation of an error status
new_nnid_service_provider String
number String Desc. number
osr_overwrite_request_id String(format:ulid) Desc. osr_overwrite_request_id
review_status Enum:String Desc. review_status
status Enum:String Desc. status

Desc. did_id

A Universally unique identifier, which identifies the resource

Desc. number

The 3 to 15 digit code of the number.

Desc. osr_overwrite_request_id

Another format for UUID, used primarily for tasks, requests and messages.

Enum Values review_status

Allowed values

  • NONE
  • APPROVED
  • REJECTED
  • AUTO_APPROVED
  • AUTO_REJECTED
  • FORCE_DELETED

Desc. review_status

The review status of the request, defaults to NONE.

Enum Values status

Allowed values

  • NEW
  • REVIEWED
  • APPROVED
  • REJECTED
  • ERROR
  • STALE
  • DELETED

Desc. status

The current processing status of the request

Example

{
  "did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "error_code": "OK",
  "new_nnid_service_provider": "ACME Corp",
  "number": "12003004000",
  "osr_overwrite_request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "review_status": "NONE",
  "status": "NEW"
}

Schema / SystemEventDataOsrOverwriteRequestPending

OSR_OVERWRITE_REQUEST_PENDING

Type Object

Name Type Description
did_id String(format:uuid) Desc. did_id
error_code Enum(OK):String Further explanation of an error status
new_nnid_service_provider String
number String Desc. number
osr_overwrite_request_id String(format:ulid) Desc. osr_overwrite_request_id
review_status Enum:String Desc. review_status
status Enum:String Desc. status

Desc. did_id

A Universally unique identifier, which identifies the resource

Desc. number

The 3 to 15 digit code of the number.

Desc. osr_overwrite_request_id

Another format for UUID, used primarily for tasks, requests and messages.

Enum Values review_status

Allowed values

  • NONE
  • APPROVED
  • REJECTED
  • AUTO_APPROVED
  • AUTO_REJECTED
  • FORCE_DELETED

Desc. review_status

The review status of the request, defaults to NONE.

Enum Values status

Allowed values

  • NEW
  • REVIEWED
  • APPROVED
  • REJECTED
  • ERROR
  • STALE
  • DELETED

Desc. status

The current processing status of the request

Example

{
  "did_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "error_code": "OK",
  "new_nnid_service_provider": "ACME Corp",
  "number": "12003004000",
  "osr_overwrite_request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "review_status": "NONE",
  "status": "NEW"
}

Schema / SystemEventDataRequestCompleted

REQUEST_COMPLETED

This event is sent whenever a REQUEST is considered complete (not necessarily COMPLETED, it may be an ERROR as well).

The parent System Event will contain the provision_records associations which give a finer detail of what specific items were completed or had errors.

Type Object

Name Type Description
data One-Of
error_code OrderErrorCode
order_id String(format:ulid) Desc. order_id
request_id String(format:ulid) Desc. request_id
status OrderStatus
type RequestType

One-Of

Types

Desc. order_id

Another format for UUID, used primarily for tasks, requests and messages.

Desc. request_id

Another format for UUID, used primarily for tasks, requests and messages.

Example

{
  "data": {
    "brand_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "tcr_brand_id": "B123456"
  },
  "error_code": "OK",
  "order_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "request_id": "01EH2Y28M6KXG14QMPM3HSP1Y0",
  "status": "NEW",
  "type": "ADD_CAMPAIGN_NUMBERS"
}

Schema / SystemEventDataRequestCompletedDataRegisterBrand

Data for REGISTER_BRAND requests.

Type Object

Name Type Description
brand_id String(format:uuid) Desc. brand_id
tcr_brand_id String

Desc. brand_id

A Universally unique identifier, which identifies the resource

Example

{
  "brand_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "tcr_brand_id": "B123456"
}

Schema / SystemEventDataRequestCompletedDataRegisterCampaign

Data for REGISTER_CAMPAIGN requests.

Type Object

Name Type Description
brand_id String(format:uuid) Desc. brand_id
campaign_id String(format:uuid) Desc. campaign_id
reseller_id String(format:uuid) Desc. reseller_id
tcr_brand_id String
tcr_campaign_id String
tcr_reseller_id String

Desc. brand_id

A Universally unique identifier, which identifies the resource

Desc. campaign_id

A Universally unique identifier, which identifies the resource

Desc. reseller_id

A Universally unique identifier, which identifies the resource

Example

{
  "brand_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "campaign_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "reseller_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "tcr_brand_id": "B123456",
  "tcr_campaign_id": "C123456",
  "tcr_reseller_id": "R123456"
}

Schema / SystemEventTopic

The overall topic that the event belongs to.

Type Enum:String

  • NONE
  • DID
  • CSP_BRAND
  • CSP_CAMPAIGN
  • ORDER
  • REQUEST
  • OSR

Example

"NONE"

Schema / SystemEventType

The type of the event, this denotes what the data will contain.

Type Enum:String

  • DID_COMPLETED_CREATED
  • DID_COMPLETED_DELETED
  • DID_CREATED
  • DID_DELETED
  • ORDER_COMPLETED
  • REQUEST_COMPLETED
  • OSR_OVERWRITE_REQUEST_PENDING
  • OSR_OVERWRITE_REQUEST_COMPLETED

Example

"DID_CREATED"

Schema / UpdateApiKeyData

Parameters for updating an api key

Type Object

Name Type Description
active Boolean Whether the API Key is active for use
name String A display name for the API Key
notes String Any notes on the API Key

Example

{
  "active": false,
  "name": "string",
  "notes": "string"
}

Schema / UpdateApiKeyRequest

Request for update an existing API Key

Type Object

Name Type Description
data UpdateApiKeyData
type String

Example

{
  "data": {
    "active": false,
    "name": "string",
    "notes": "string"
  },
  "type": "api_key"
}

Schema / UpdateCallDataWebhookData

Parameters for creating a new Call Data Webhook.

Type Object

Name Type Description
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_name String Desc. auth_name
auth_secret String Desc. auth_secret
custom_headers Array:SubObject Desc. custom_headers
custom_query_params Array:SubObject Desc. custom_query_params
data String Desc. data
name String(1..255) Desc. name
notes String(0..65535) Desc. notes
protocol Enum(NONE, HTTP, SFTP):String Desc. protocol

Desc. auth_identity

Acts a the username in an authorization pair, only applicable if the auth method is BASIC.

Desc. auth_method

Depending on the protocol, this will affect the authorization behaviour.

  • NONE - no authorization is provided if not required, otherwise placeholder values will be used
  • BASIC - the auth_identity acts as the username while the auth_secret acts as the password
  • With HTTP - an Authorization: Basic <BASE64-VALUE> header will be set
  • With SFTP - the session will be authenticated using the auth_identity and auth_secret
  • BEARER - the auth_identity is ignored and only the auth_secret is used verbatim
  • With HTTP - an Authorization: Bearer <VALUE> header will be set
  • with SFTP - the username will be a placeholder value and the password will be set

Desc. auth_name

Reserved for other protocols that may require additional auth information.

Desc. auth_secret

Acts as the password in an authorization pair, if using BEARER, it will be the verbatim token.

SubObject

Sub-Schema

Type Object

Name Type Description
key String
value String

Desc. custom_headers

A list of custom header values that should be sent on the HTTP request.

Headers are currently unused if the protocol is not HTTP.

SubObject

Sub-Schema

Type Object

Name Type Description
key String
value String

Desc. custom_query_params

A list of custom query parameters that should be sent on the HTTP request.

These are currently unused if the protocol is not HTTP.

Desc. data

Depending on the protocol, this will contain the url or address of the endpoint.

For HTTP, it will be an http url, as for SFTP, it will be the hostname and optionally the port.

  • HTTP - (e.g. "http://example.com/path/to/upload")
  • SFTP - (e.g. "sftp://sftp.example.com/path/to/upload")

Desc. name

A display name for the call data webhook, used purely for identifying it.

Desc. notes

Any notes or details about the call data webhook.

Desc. protocol

The transport protocol which should be used to send

  • NONE - Effectively a no-op.
  • HTTP - Send CDRs over HTTP.
  • SFTP - Upload CDRs over SFTP.

Example

{
  "auth_identity": "string",
  "auth_method": "NONE",
  "auth_name": "string",
  "auth_secret": "string",
  "custom_headers": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "custom_query_params": [
    {
      "key": "x-my-header",
      "value": "Anything"
    }
  ],
  "data": "string",
  "name": "CDR Webhook us-east",
  "notes": "string",
  "protocol": "NONE"
}

Schema / UpdateCallDataWebhookRequest

Request for update an existing Call Data Webhook

Type Object

Name Type Description
data UpdateCallDataWebhookData
type String

Example

{
  "data": {
    "auth_identity": "string",
    "auth_method": "NONE",
    "auth_name": "string",
    "auth_secret": "string",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "custom_query_params": [
      {
        "key": "x-my-header",
        "value": "Anything"
      }
    ],
    "data": "string",
    "name": "CDR Webhook us-east",
    "notes": "string",
    "protocol": "NONE"
  },
  "type": "call_data_webhook"
}

Schema / UpdateCartData

Parameters for updating a cart

Type Object

Name Type Description
name String
notes String

Example

{
  "name": "string",
  "notes": "string"
}

Schema / UpdateCartRequest

Request for update an existing cart

Type Object

Name Type Description
data UpdateCartData
type String

Example

{
  "data": {
    "name": "string",
    "notes": "string"
  },
  "type": "cart"
}

Schema / UpdateCartRequestData

Parameters for updating a cart

Type Object

Name Type Description
name String
notes String
* One-Of

One-Of

Types

Example

{
  "name": "string",
  "notes": "string",
  "*": {
    "numbers": [
      "12003004000"
    ],
    "*": {
      "tcr_campaign_id": "C000000"
    }
  }
}

Schema / UpdateCartRequestRequest

Request for update an existing cart

Type Object

Name Type Description
data UpdateCartRequestData
type String

Example

{
  "data": {
    "name": "string",
    "notes": "string",
    "*": {
      "numbers": [
        "12003004000"
      ],
      "*": {
        "tcr_campaign_id": "C000000"
      }
    }
  },
  "type": "request"
}

Schema / UpdateDestinationRequest

Request for updating an existing Number Destination

Type Object

Name Type Description
data UpsertDestinationData
type String

Example

{
  "data": {
    "activated": true,
    "auth_identity": "username",
    "auth_method": "BASIC",
    "auth_secret": "password",
    "destination": "http://example.com/http/route/call",
    "priority": 1,
    "tts_message_set_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "type": "HTTP_ROUTE"
  },
  "type": "number_destination"
}

Schema / UpdateMessageRequest

Request for update an existing tts message

Type Object

Name Type Description
data UpsertMessageData
type String

Example

{
  "data": {
    "body": "Pre-answer Greeter",
    "priority": 1
  },
  "type": "tts_message"
}

Schema / UpdateMessageSetRequest

Request for update an existing tts message set

Type Object

Name Type Description
data UpsertMessageSetData
type String

Example

{
  "data": {
    "name": "Pre-answer Greeter"
  },
  "type": "tts_message_set"
}

Schema / UpdateNumberData

Parameters for updating a number

Type Object

Name Type Description
description String Desc. description
forward_number String Desc. forward_number
help_message String(0..255) Desc. help_message
mms_enabled Boolean Desc. mms_enabled
segment_overrides Array:SubObject Desc. segment_overrides
segment_threshold Integer Desc. segment_threshold
upgrade_asset_handling Enum:String The asset handling flag for SMS Upgrades

Desc. description

Any notes to attach to the number.

Desc. forward_number

When this DID receives an inbound message, the message will be routed to the specified forward_number.

Note. using forward_number or its switch equivalent will charge the account for 2 messages, instead of 1: * Once for the inbound (to the host number) * Again for the outbound (from the host number to the forward number)

If this field is nil, or blank the sms_switch will be used for routing instead

Desc. help_message

Custom HELP Message that should be sent when an inbound message matching "HELP" is received.

For help messages longer than 255 characters, they must handled by the receiver.

Desc. mms_enabled

Whether or not the number is MMS capable, does not affect SMS or SMS to MMS upgrades.

SubObject

Sub-Schema

Type Object

Name Type Description
encoding Integer Desc. encoding
id String(format:uuid) Desc. id
segment_threshold Integer Desc. segment_threshold
target_reference_id String Desc. target_reference_id

Desc. encoding

The SMS encoding that this override should trigger on.

Desc. id

The UUID of the specific segment override, required when changing an existing override.

Desc. segment_threshold

See number's segment_threshold for more information.

Desc. target_reference_id

Internal reference_id for a carrier, contact support for details or if a required carrier is not available.

Reference ids tend to have the form:

<country_code>_<name>

Example:

us_tmobile
ca_rogers
dm_digicel

Desc. segment_overrides

While the segment_threshold can be used to apply to all outgoing sms messages, sometimes its required to tailor fit an upgrade to a particular carrier.

Note, when updating the segment_overrides, all overrides must be provided for the did, any unspecified overrides will be removed.

Desc. segment_threshold

How many segments should a outgoing message have before it triggers an MMS upgrade.

Contact support to learn more about MMS upgrades.

0 will disable upgrades, any value greater than 1 will trigger an upgrade when that many sms segments would have been sent.

Upgrades only apply to HTTP originated traffic, customers using SMPP will not for outbound are not subject to upgrades.

Enum Values upgrade_asset_handling

Allowed values

  • FALLBACK
  • OFF
  • ALWAYS_UPGRADE
  • SEGMENT_UPGRADE

Example

{
  "description": "Test number used for XYZ.Corp\n",
  "forward_number": "12003004000",
  "help_message": "Available Keywords are: HELP, SUBSCRIBED, UNSUBSCRIBE.",
  "mms_enabled": true,
  "segment_overrides": [
    {
      "encoding": 0,
      "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
      "segment_threshold": 0,
      "target_reference_id": "us_tmobile"
    }
  ],
  "segment_threshold": 1,
  "upgrade_asset_handling": "FALLBACK"
}

Schema / UpdateNumberRequest

Update an existing number

Type Object

Name Type Description
data UpdateNumberData
type String

Example

{
  "data": {
    "description": "Test number used for XYZ.Corp\n",
    "forward_number": "12003004000",
    "help_message": "Available Keywords are: HELP, SUBSCRIBED, UNSUBSCRIBE.",
    "mms_enabled": true,
    "segment_overrides": [
      {
        "encoding": 0,
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "segment_threshold": 0,
        "target_reference_id": "us_tmobile"
      }
    ],
    "segment_threshold": 1,
    "upgrade_asset_handling": "FALLBACK"
  },
  "type": "number"
}

Schema / UpdateOrderData

Parameters for updating an Order

Type Object

Name Type Description
name String(3..255) Desc. name
notes String(0..65535) Desc. notes

Desc. name

Display name for Order.

Desc. notes

Any additional text about the order, useful for informing someone about the order's purpose.

Example

{
  "name": "Add Messaging to 10 Numbers",
  "notes": "Order for Client XYZ\n"
}

Schema / UpdateOrderRequest

Request for update an existing Order

Type Object

Name Type Description
data UpdateOrderData
type String

Example

{
  "data": {
    "name": "Add Messaging to 10 Numbers",
    "notes": "Order for Client XYZ\n"
  },
  "type": "order"
}

Schema / UpdateRoleData

Request Data when updating an existing Role.

Type Object

Name Type Description
default_scope Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. default_scope
name String Desc. name
notes String Desc. notes
rank Integer(>= 0) Desc. rank
resources Array:SubObject Desc. resources

Desc. default_scope

Role's default_scope, this is the scope applied when resources specify IGNORE for their own scope.

  • IGNORE - When used as the default_scope, effectively disables all resources that use IGNORE as their scope.
  • USER - Resources are scoped to the user, or their nearest account where applicable.
  • ACCOUNT - Resources are scoped against the user's account.
  • SYSTEM - Cannot be set by the API, but provided for reference, this is the system-wide scope.

Desc. name

Role's display name.

Desc. notes

Any notes about the role.

Desc. rank

Levels dictate the access, scopes filter resources, and ranks allow differentiating the same level of access within the account.

Ranks allow organizing roles within the account by importance.

0 is most relevant sometimes referred to as the highest rank. 1+ are ranks lower.

Ranks primarily affect the modification of: * Users - See Roles for information, as a user's Role dictates their permissions. * Roles - Roles of the same rank can modify themselves and those of lower rank, ranks of a higher rank cannot be modified by those of a lower rank.

SubObject

Sub-Schema

Type Object

Name Type Description
actions Array:SubObject
resource_id String
scope Enum(IGNORE, ACCOUNT, USER, SYSTEM):String Desc. scope

SubObject

Sub-Schema

Type Object

Name Type Description
name Enum:String Desc. name
value Enum(true, false):String Desc. value

Enum Values name

Allowed values

  • sell_rates
  • buy_rates
  • count
  • full_index
  • index
  • assoc
  • show
  • charge
  • reset
  • create
  • update
  • delete
  • purge
  • move
  • import
  • export
  • review
  • protect
  • share
  • unshare
  • impersonate
  • checkout
  • lookup_result
  • process
  • cancel
  • download
  • upload
  • summarize

Desc. name

The name of the action.

Desc. value

Whether or not the action is enabled.

NOTE. This is not a Boolean.

The field is an enum that happens to use the values true and false as strings.

Desc. scope

See Role's default_scope for more details on the enum.

IGNORE acts as a fallback to the default_scope.

Desc. resources

Role's job title, or position

Example

{
  "default_scope": "ACCOUNT",
  "name": "Ordering Role",
  "notes": "This role governs the Ordering System Access",
  "rank": 0,
  "resources": [
    {
      "actions": [
        {
          "name": "sell_rates",
          "value": "true"
        }
      ],
      "resource_id": "string",
      "scope": "IGNORE"
    }
  ]
}

Schema / UpdateRoleRequest

Request for updating an existing Role.

Type Object

Name Type Description
data UpdateRoleData
type String

Example

{
  "data": {
    "default_scope": "ACCOUNT",
    "name": "Ordering Role",
    "notes": "This role governs the Ordering System Access",
    "rank": 0,
    "resources": [
      {
        "actions": [
          {
            "name": "sell_rates",
            "value": "true"
          }
        ],
        "resource_id": "string",
        "scope": "IGNORE"
      }
    ]
  },
  "type": "role"
}

Schema / UpdateSecretKeyData

Parameters for updating a Secret Key

Type Object

Name Type Description
active Boolean Whether the Secret Key is active for use
name String A display name for the Secret Key
notes String Any notes on the Secret Key

Example

{
  "active": false,
  "name": "string",
  "notes": "string"
}

Schema / UpdateSecretKeyRequest

Request for update an existing Secret Key

Type Object

Name Type Description
data UpdateSecretKeyData
type String

Example

{
  "data": {
    "active": false,
    "name": "string",
    "notes": "string"
  },
  "type": "secret_key"
}

Schema / UpdateSwitchRequest

Request for update an existing Switch

Type Object

Name Type Description
data UpsertSwitchData
type String

Example

{
  "data": {
    "mms_auth_method": "NONE",
    "mms_data": "mm4://example.com:2525",
    "mms_enabled": true,
    "mms_identity": "johndoe",
    "mms_message_format": "OXY_JSON_1_0",
    "mms_name": "John Doe",
    "mms_options": {
      "dlr_on_sent": false,
      "forward_dlr": true,
      "pad_shortcodes": false
    },
    "mms_protocol": "NONE",
    "mms_secret": "super$ecret",
    "name": "Primary Messaging Switch",
    "notes": "CA Switch for Data-Center #3, do not DELETE AGAIN.",
    "sms_auth_method": "NONE",
    "sms_data": "https://example.com",
    "sms_enabled": true,
    "sms_identity": "johndoe",
    "sms_message_format": "TRINITY_JSON_1_0",
    "sms_name": "John Doe",
    "sms_options": {
      "dlr_on_sent": false,
      "forward_dlr": true,
      "pad_shortcodes": false
    },
    "sms_protocol": "NONE",
    "sms_secret": "super$ecret",
    "voice_auth_method": "NONE",
    "voice_data": "[email protected]",
    "voice_enabled": false,
    "voice_identity": "johndoe",
    "voice_name": "John Doe",
    "voice_protocol": "NONE",
    "voice_secret": "super$ecret"
  },
  "type": "switch"
}

Schema / UpdateUserData

Request Data when update an existing user

Type Object

Name Type Description
address address Desc. address
email String(format:email) Desc. email
first_name String Desc. first_name
last_name String Desc. last_name
title String Desc. title

Desc. address

User Address details, may differ from top-level details

Desc. email

User's email

Desc. first_name

User's first name

Desc. last_name

User's last name

Desc. title

User's job title, or position

address

Name Type Description
address1 String
address2 String
business_name String
city String
country String
email String
fax_number String
first_name String
house_number String
last_name String
notes String
phone_number String
state String
zip_code String

Example

{
  "address": {
    "address1": "string",
    "address2": "string",
    "business_name": "string",
    "city": "string",
    "country": "string",
    "email": "string",
    "fax_number": "string",
    "first_name": "string",
    "house_number": "string",
    "last_name": "string",
    "notes": "string",
    "phone_number": "string",
    "state": "string",
    "zip_code": "string"
  },
  "email": "[email protected]",
  "first_name": "John",
  "last_name": "Doe",
  "title": "Operator"
}

Schema / UpdateUserRequest

Request for updating an existing User

Type Object

Name Type Description
data UpdateUserData
type String

Example

{
  "data": {
    "address": {
      "address1": "string",
      "address2": "string",
      "business_name": "string",
      "city": "string",
      "country": "string",
      "email": "string",
      "fax_number": "string",
      "first_name": "string",
      "house_number": "string",
      "last_name": "string",
      "notes": "string",
      "phone_number": "string",
      "state": "string",
      "zip_code": "string"
    },
    "email": "[email protected]",
    "first_name": "John",
    "last_name": "Doe",
    "title": "Operator"
  },
  "type": "user"
}

Schema / UpsertDestinationData

Parameters for creating or updating a Number Destination

Type Object

Name Type Description
activated Boolean Desc. activated
auth_identity String The username for a BASIC auth_method
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_secret String Desc. auth_secret
destination String Desc. destination
priority Integer Desc. priority
tts_message_set_id String(format:uuid) Desc. tts_message_set_id
type Enum:String Desc. type

Desc. activated

Whether or not the destination is considered for routing

Desc. auth_method

The authorization method to used for HTTP_ROUTE destinations

Desc. auth_secret

The password for a BASIC auth_method or token for BEARER auth_method

Desc. destination

Depending on the type, this field can contain different data.

  • VOIP - destination should be in the form of local@domain where local is the destination prefix and domain is the SIP capable server to handle the request
  • PSTN - destination should be a plain format number (e.g. 12003004000), can also be a comma separated list to allow multiple destinations
  • HTTP_ROUTE - destination should be an http uri which will handle the routing request
  • TTS - destination should be one of the pre-approved values (more may be added in the future):
  • DISCONNECTED
  • TEXT_ONLY
  • BUSY
  • CONGESTION
  • TTS_CUSTOM - destination should be the message to be read
  • TTS_MESSAGE_SET - destination will be set to "UNUSED" regardless of provided value, instead the tts_message_set_id MUST be set on the request

Desc. priority

Affects the ordering of destinations for calls, 1 will be first while 9 is the last

Desc. tts_message_set_id

A Universally unique identifier, which identifies the resource

Enum Values type

Allowed values

  • VOIP
  • PSTN
  • HTTP_ROUTE
  • TTS
  • TTS_CUSTOM
  • TTS_MESSAGE_SET

Desc. type

The destination type, see destination field for more detail

Example

{
  "activated": true,
  "auth_identity": "username",
  "auth_method": "BASIC",
  "auth_secret": "password",
  "destination": "http://example.com/http/route/call",
  "priority": 1,
  "tts_message_set_id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "type": "HTTP_ROUTE"
}

Schema / UpsertEventSubscriptionData

Parameters when creating or updating an existing event subscription.

Note that only a name is required as the bare minimum for an event subscription.

Type Object

Name Type Description
auth_identity String Desc. auth_identity
auth_method Enum(NONE, BASIC, BEARER):String Desc. auth_method
auth_name String Desc. auth_name
auth_secret String Desc. auth_secret
custom_headers Array:SubObject Desc. custom_headers
custom_query_params Array:SubObject
data String Desc. data
enabled Boolean Desc. enabled
name String(..255) Desc. name
notes String(..65535) Desc. notes
protocol Enum(NONE, HTTP, SMTP, SFTP, EMAIL):String Desc. protocol
recipient String Desc. recipient
topics Array:Enum:String Desc. topics

Desc. auth_identity

Acts as the username for an auth pair.

Desc. auth_method

Depending on the protocol this will affect the authorization or authentication that will be performed.

This applies to HTTP, SMTP and SFTP.

  • NONE - no auth is required the event will be sent as is
  • BASIC - The auth_identity and auth_secret will form the auth pair
  • BEARER - Only the auth_secret will be used where applicable, for protocols that require both a username and password, the username will have a placeholder value.

Desc. auth_name

Currently unused, but kept for future use.

Desc. auth_secret

Acts as the password for an auth pair or just the general secret.

SubObject

Sub-Schema

A single header entry, while multiple items can be provided with the same key, the behaviour may not be consistent between destination servers.

When in doubt, only use unique keys.

Type Object

Name Type Description
key String
value String

Desc. custom_headers

A list of additional headers that should be provided during the HTTP request.

SubObject

Sub-Schema

A single query parameter pair.

Type Object

Name Type Description
key String
value String

Desc. data

Depending on the protocol specified this may be an http endpoint (HTTP), a hostname (SMTP or SFTP) or an email address (EMAIL).

Protocol: * NONE - nothing, this field is unused * HTTP - the http server endpoint (e.g. "http://events.example.com:7654/events/v1/ordering") * SFTP - the sftp server address (e.g. "sftp://sftp.example.com:2231/path/to/upload") * SMTP - the relay server address (e.g. "smtp://smtp.example.com:2554") * EMAIL - the recipient email address (e.g. "[email protected]")

A keen eye may notice there was no mention of the recipient address for SMTP, that is covered in recipient.

Desc. enabled

Is the subscription enabled to handle events?

Subscriptions can be toggled on or off as needed.

Desc. name

The friendly given name for this subscription

Desc. notes

Any additional information about this subscription that otherwise could not fit into the name.

This can be useful to another user or agent that is reviewing the subscription.

Desc. protocol

When the subscription receives an event for handling, it wil be processed and sent using the specified protocol.

Available: * NONE - effectively a no-op. * HTTP - sends the event over HTTP to a specified endpoint data. * SFTP - uploads the event to a specified SFTP server

Planned (currently unavailable, but may become available later): * SMTP - sends the event over SMTP (not email compatible) * EMAIL - emails the event to specified address in data

Desc. recipient

Only applicable when the protocol is SMTP, this will be the recipient address (e.g. "[email protected]")

Enum Values topics

Allowed values

  • NONE
  • DID
  • CSP_BRAND
  • CSP_CAMPAIGN
  • ORDER
  • REQUEST
  • OSR

Desc. topics

An event subscription must be list topics it wishes to receive events for.

Example

{
  "auth_identity": "my-username",
  "auth_method": "NONE",
  "auth_name": "something",
  "auth_secret": "my-secret-password",
  "custom_headers": [
    {
      "key": "x-my-header",
      "value": "My Header Value"
    }
  ],
  "custom_query_params": [
    {
      "key": "my_param",
      "value": "ParamValue"
    }
  ],
  "data": "",
  "enabled": true,
  "name": "CSP Events",
  "notes": "string",
  "protocol": "NONE",
  "recipient": "[email protected]",
  "topics": [
    "NONE"
  ]
}

Schema / UpsertEventSubscriptionRequest

Update request for an existing Event Subscription

Type Object

Name Type Description
data UpsertEventSubscriptionData
type String

Example

{
  "data": {
    "auth_identity": "my-username",
    "auth_method": "NONE",
    "auth_name": "something",
    "auth_secret": "my-secret-password",
    "custom_headers": [
      {
        "key": "x-my-header",
        "value": "My Header Value"
      }
    ],
    "custom_query_params": [
      {
        "key": "my_param",
        "value": "ParamValue"
      }
    ],
    "data": "",
    "enabled": true,
    "name": "CSP Events",
    "notes": "string",
    "protocol": "NONE",
    "recipient": "[email protected]",
    "topics": [
      "NONE"
    ]
  },
  "type": "event_subscription"
}

Schema / UpsertMessageData

Data for creating, or updating a message

Type Object

Name Type Description
body String(1..255) Name of the Message Set
priority Integer

Example

{
  "body": "Pre-answer Greeter",
  "priority": 1
}

Schema / UpsertMessageSetData

Data for creating, or updating a message set

Type Object

Name Type Description
name String(1..255) Name of the Message Set

Example

{
  "name": "Pre-answer Greeter"
}

Schema / UpsertMessagingAutoResponseData

Parameters for creating or updating a Messaging Auto Response

Type Object

Name Type Description
keywords Array:SubObject Desc. keywords
name String Display name of the Auto Response
notes String Any notes about the auto response

SubObject

Sub-Schema

Type Object

Name Type Description
intercept Boolean Desc. intercept
is_wildcard Boolean Desc. is_wildcard
keyword String Desc. keyword
message String Desc. message
message2 String Desc. message2

Desc. intercept

Should the messaging system intercept (i.e. not forward to switch) the message?

This can be useful for cases where the keyword is to be handled by the messaging system, but the destination switch can't or does not wish to handle the message.

Desc. is_wildcard

Should this keyword be treated as a wildcard or fallback?

Only one wildcard can exist in a auto response, and will be returned for ALL messages that do not match any existing keywords.

Once is_wildcard is set, the keyword in question is also set to WILDCARD.

NOTE: To update an existing WILDCARD, the keyword must also be passed (i.e. WILDCARD).

Desc. keyword

The word to trigger this specific keyword.

Note that when is_wildcard is true, keyword will always be WILDCARD.

Desc. message

The primary message that should be sent as the reply.

In most scenarios this is the only message that needs to be set, however under the condition that a keyword is shared with the account's existing Keyword Plan (ask support for more information), the message may override it.

Desc. message2

A secondary message which may be selected under certain circumstances.

If a keyword plan is active on the parent account, and the keyword has an OPTOUT or OPTIN behaviour, this message may be used.

In the case of an OPTIN action, this message will be used as the redundant action message (e.g. the subscriber has already opted in or already opted out of the messaging platform).

Desc. keywords

A list of keywords that the auto response has, keywords are stored in uppercase, but are case insensitive upon usage.

Example

{
  "keywords": [
    {
      "intercept": false,
      "is_wildcard": false,
      "keyword": "START",
      "message": "You have been opted in to receive messages from ACME Corp.\n",
      "message2": "You have already been opted-in to receive messages from ACME Corp, if you wish to unsubscribed please send STOP instead.\n"
    }
  ],
  "name": "My Auto Responder",
  "notes": "This auto responder is used to notify messagers that the number is not available for SMS.\n"
}

Schema / UpsertMessagingAutoResponseRequest

Request to create or update an Messaging Auto Response

Type Object

Name Type Description
data UpsertMessagingAutoResponseData
type String

Example

{
  "data": {
    "keywords": [
      {
        "intercept": false,
        "is_wildcard": false,
        "keyword": "START",
        "message": "You have been opted in to receive messages from ACME Corp.\n",
        "message2": "You have already been opted-in to receive messages from ACME Corp, if you wish to unsubscribed please send STOP instead.\n"
      }
    ],
    "name": "My Auto Responder",
    "notes": "This auto responder is used to notify messagers that the number is not available for SMS.\n"
  },
  "type": "messaging_auto_response"
}

Schema / UpsertNumberClientSuspensionData

Parameters for creating a Number Client Suspension

Type Object

Name Type Description
block_direction Enum(NONE, INBOUND, OUTBOUND, BOTH):String Desc. block_direction
block_messaging Enum(NONE, SMS, MMS, ALL):String Desc. block_messaging
block_voip Enum:String Desc. block_voip
notes String Desc. notes

Desc. block_direction

What direction messages should be blocked to this number, suspensions may apply to inbound or outbound.

On INBOUND, messages will NOT be sent to the endpoint but will be charged. On OUTBOUND, inflight messages will NOT be sent to their destinations (note they would have already been charged). New OUTBOUND messages will be rejected at the their edge (API, SMPP or other methods).

BOTH applies all rules.

Desc. block_messaging

What type of messaging should be blocked by this suspension?

Enum Values block_voip

Allowed values

  • NONE
  • ORIGINATION
  • TERMINATION
  • ALL

Desc. block_voip

Calls originating or terminating to the host number may not be terminated to the configured destinations while blocks are in place.

The system MAY choose to answer calls to remain compliant even if a suspension is present.

Desc. notes

Any notes on the suspension.

Example

{
  "block_direction": "NONE",
  "block_messaging": "NONE",
  "block_voip": "NONE",
  "notes": "Suspended due to carrier complaint."
}

Schema / UpsertNumberClientSuspensionRequest

Request for creating a new Number Client Suspension

Type Object

Name Type Description
data UpsertNumberClientSuspensionData
type String

Example

{
  "data": {
    "block_direction": "NONE",
    "block_messaging": "NONE",
    "block_voip": "NONE",
    "notes": "Suspended due to carrier complaint."
  },
  "type": "number_client_suspension"
}

Schema / UpsertSwitchData

Parameters for creating or updating a switch

Type Object

Name Type Description
mms_auth_method Enum(NONE, BASIC, BEARER, HMAC_SHA256):String Desc. mms_auth_method
mms_data String(format:url) Desc. mms_data
mms_enabled Boolean Desc. mms_enabled
mms_identity String Acts as the username in basic auth
mms_message_format Enum:String Desc. mms_message_format
mms_name String Desc. mms_name
mms_options mms_options Desc. mms_options
mms_protocol Enum:String Desc. mms_protocol
mms_secret String Desc. mms_secret
name String Desc. name
notes String Any notes about the switch
sms_auth_method Enum(NONE, BASIC, BEARER, HMAC_SHA256):String Desc. sms_auth_method
sms_data String Desc. sms_data
sms_enabled Boolean Desc. sms_enabled
sms_identity String Acts as the username in basic auth
sms_message_format Enum:String Desc. sms_message_format
sms_name String Reserved for future use
sms_options sms_options Desc. sms_options
sms_protocol Enum:String Desc. sms_protocol
sms_secret String Desc. sms_secret
voice_auth_method Enum(NONE, BASIC, BEARER):String Desc. voice_auth_method
voice_data String Desc. voice_data
voice_enabled Boolean Desc. voice_enabled
voice_identity String
voice_name String
voice_protocol Enum:String Desc. voice_protocol
voice_secret String

Desc. mms_auth_method

Various authorization methods supported.

Note that bearer and hmac_sha256 will not be used for MM4, only basic is supported.

HTTP supports all available methods.

  • NONE - No authorization header is added to the request
  • BASIC - Uses the mms_identity as the username and mms_secret as the password to form the Basic pair
  • BEARER - Uses ONLY the mms_secret as the token
  • HMAC_SHA256 - Consult the Signing Hash section for details, the signature will be placed into the authorization header with a scheme TYCHRON0-HMAC-SHA256 and Base16 encoded (lowercase).

Desc. mms_data

Depending on the mms_protocol, the value is of a different format:

  • NONE - ignored
  • MM4 - Must be a valid URL, without a path component with schemes: mm4, mm4+s or mm4s for non-tls, optional-tls and mandatory tls respectively.
  • HTTP - Must be a valid URL, scheme may be http, or https, paths and query parameters are supported.
  • SFTP - Must be a valid URL, scheme MUST be sftp, path component is used to change directory if supplied.
  • FORWARD - Must be a valid E164 address (can omit plus if needed), messages will be forwarded to the respective number as a new OUTBOUND message (charges apply).
  • TYCHRON_CHAT - Set to UNUSED.

Desc. mms_enabled

Enable inbound MMS routing?

Enum Values mms_message_format

Allowed values

  • OXY_JSON_1_0
  • OXY_JSONAPI_1_0
  • OXY_XML_1_0
  • OXY_MULTIPART_1_0
  • OXY_MULTIPART_2_0
  • OXY_RFC822_1_0

Desc. mms_message_format

All supported message formats for MMS HTTP Protocol.

Desc. mms_name

Only used for MM4, used as the display name for auth

Desc. mms_options

Contains various miscelleanous or experimental feature flags for MMS.

Enum Values mms_protocol

Allowed values

  • NONE
  • MM4
  • HTTP
  • SFTP
  • FORWARD
  • TYCHRON_CHAT

Desc. mms_protocol

All protocols supported for MMS delivery.

  • NONE - Will discard any inbound messages destined for the switch.
  • MM4 - Delivers messages over MM4 to the configured enpoint in mms_data, use mm4s as the scheme to require TLS, or mm4+s for optional TLS.
  • HTTP - Delivers messages over HTTP (or HTTPS, if the scheme is set to https in the mms_data).
  • SFTP - Uploads the MMS to a SFTP server.
  • FORWARD - Forwards the INBOUND MMS to another number as a new OUTBOUND message.
  • TYCHRON_CHAT - Forwards the MMS to Tychron's chat service.

Desc. mms_secret

Depending on the auth_method, this fields usage changes:

  • NONE - unsued
  • BASIC - Acts as the password component of the Authorization Basic pair.
  • BEARER - Acts as the token
  • HMAC_SHA256 - Used as-is for signature generation, prefer using the dedicated signing keys instead for newer switches.

Desc. name

A display name to easily identify the switch

Desc. sms_auth_method

Various authorization methods supported by the SMS HTTP Protocol.

SMPP utilizes an API Key for it's authorization instead.

  • NONE - No authorization header is added to the request
  • BASIC - Uses the sms_identity as the username and sms_secret as the password to form the Basic pair
  • BEARER - Uses ONLY the sms_secret as the token
  • HMAC_SHA256 - Consult the Signing Hash section for details, the signature will be placed into the authorization header with a scheme TYCHRON0-HMAC-SHA256 and Base16 encoded (lowercase).

Desc. sms_data

Depending on the SMS Protocol in use, the requirement of this field will change:

  • NONE - ignored
  • SMPP - ignored
  • HTTP - Must be a valid URL, scheme may be http, or https, paths and query parameters are supported.
  • FORWARD - Must be a valid E164 address (can omit plus if needed), messages will be forwarded to the respective number as a new OUTBOUND message (charges apply).
  • TYCHRON_CHAT - Set as UNUSUED.

Desc. sms_enabled

Enable inbound SMS routing?

Enum Values sms_message_format

Allowed values

  • TRINITY_JSON_1_0
  • TRINITY_POST_1_0
  • TRINITY_POST_2_0

Desc. sms_message_format

All supported message formats for SMS HTTP Protocol

Desc. sms_options

Contains various miscelleanous or experimental feature flags for SMS.

Enum Values sms_protocol

Allowed values

  • NONE
  • SMPP
  • HTTP
  • FORWARD
  • TYCHRON_CHAT

Desc. sms_protocol

All protocols supported for SMS delivery, note that none will effectively no-op all incoming messages.

  • NONE - No protocol, this will discard any inbound messages destined for the host number associated with the switch
  • HTTP - Uses HTTP (supports HTTPS if the sms_data includes the respective scheme, e.g. https://example.com)
  • SMPP - The switch is configured to use SMPP, note. the switch MUST have an attached API Key to determine the destination, as API Keys contain the SMPP System ID.
  • FORWARD - Forwards any incoming messages to the switch to another number configured as sms_data.
  • TYCHRON_CHAT - Forwards any incoming messages to Tychron's chat service.

Desc. sms_secret

Depending on the auth_method, this fields usage changes:

  • NONE - unsued
  • BASIC - Acts as the password component of the Authorization Basic pair.
  • BEARER - Acts as the token
  • HMAC_SHA256 - Used as-is for signature generation, prefer using the dedicated signing keys instead for newer switches.

Desc. voice_auth_method

Various authorization methods supported.

Primarily used with HTTP ROUTE

Desc. voice_data

Contains the routing url specific to the requested protocol

Desc. voice_enabled

Enable voice call fallback routing?

Enum Values voice_protocol

Allowed values

  • NONE
  • VOIP
  • PSTN
  • TTS
  • TTS_CUSTOM
  • HTTP_ROUTE

Desc. voice_protocol

All protocols supported for fallback VoIP destination.

mms_options

Name Type Description
dlr_on_sent Boolean Desc. dlr_on_sent
forward_dlr Boolean Desc. forward_dlr
pad_shortcodes Boolean Desc. pad_shortcodes

Desc. dlr_on_sent

Experimental: Whenever a message is sent to the configured endpoint, a dlr will automatically be generated and sent back to the sender.

Desc. forward_dlr

Normally a switch will always attempt to deliver DLRs the same as regular messages.

This flag can be set to stop the delivery of DLRs.

Desc. pad_shortcodes

Experimental: If your endpoint requires 11 or more digits for numbers, this field can be enabled to pad shortcodes with leading zeroes to make them 11 digit where possible.

sms_options

Name Type Description
dlr_on_sent Boolean Desc. dlr_on_sent
forward_dlr Boolean Desc. forward_dlr
pad_shortcodes Boolean Desc. pad_shortcodes

Desc. dlr_on_sent

Experimental: Whenever a message is sent to the configured endpoint, a dlr will automatically be generated and sent back to the sender.

Desc. forward_dlr

Normally a switch will always attempt to deliver DLRs the same as regular messages.

This flag can be set to stop the delivery of DLRs.

Desc. pad_shortcodes

Experimental: If your endpoint requires 11 or more digits for numbers, this field can be enabled to pad shortcodes with leading zeroes to make them 11 digit where possible.

Example

{
  "mms_auth_method": "NONE",
  "mms_data": "mm4://example.com:2525",
  "mms_enabled": true,
  "mms_identity": "johndoe",
  "mms_message_format": "OXY_JSON_1_0",
  "mms_name": "John Doe",
  "mms_options": {
    "dlr_on_sent": false,
    "forward_dlr": true,
    "pad_shortcodes": false
  },
  "mms_protocol": "NONE",
  "mms_secret": "super$ecret",
  "name": "Primary Messaging Switch",
  "notes": "CA Switch for Data-Center #3, do not DELETE AGAIN.",
  "sms_auth_method": "NONE",
  "sms_data": "https://example.com",
  "sms_enabled": true,
  "sms_identity": "johndoe",
  "sms_message_format": "TRINITY_JSON_1_0",
  "sms_name": "John Doe",
  "sms_options": {
    "dlr_on_sent": false,
    "forward_dlr": true,
    "pad_shortcodes": false
  },
  "sms_protocol": "NONE",
  "sms_secret": "super$ecret",
  "voice_auth_method": "NONE",
  "voice_data": "[email protected]",
  "voice_enabled": false,
  "voice_identity": "johndoe",
  "voice_name": "John Doe",
  "voice_protocol": "NONE",
  "voice_secret": "super$ecret"
}

Schema / User

A user is any agent that can interact with impersonated or portal APIs

Type Object

Name Type Description
address address Desc. address
email String(format:email) Desc. email
first_name String Desc. first_name
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
last_name String Desc. last_name
title String Desc. title
updated_at String(format:date-time) An ISO8601 formatted timestamp

Desc. address

User Address details, may differ from top-level details

Desc. email

User's email

Desc. first_name

User's first name

Desc. id

A Universally unique identifier, which identifies the resource

Desc. last_name

User's last name

Desc. title

User's job title, or position

address

Name Type Description
address1 String
address2 String
business_name String
city String
country String
email String
fax_number String
first_name String
house_number String
last_name String
notes String
phone_number String
state String
zip_code String

Example

{
  "address": {
    "address1": "string",
    "address2": "string",
    "business_name": "string",
    "city": "string",
    "country": "string",
    "email": "string",
    "fax_number": "string",
    "first_name": "string",
    "house_number": "string",
    "last_name": "string",
    "notes": "string",
    "phone_number": "string",
    "state": "string",
    "zip_code": "string"
  },
  "email": "[email protected]",
  "first_name": "John",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "last_name": "Doe",
  "title": "Operator",
  "updated_at": "2021-08-13T04:08:44.762841Z"
}

Schema / UserResponse

Response when retrieving user information

Type Object

Name Type Description
data User
type String

Example

{
  "data": {
    "address": {
      "address1": "string",
      "address2": "string",
      "business_name": "string",
      "city": "string",
      "country": "string",
      "email": "string",
      "fax_number": "string",
      "first_name": "string",
      "house_number": "string",
      "last_name": "string",
      "notes": "string",
      "phone_number": "string",
      "state": "string",
      "zip_code": "string"
    },
    "email": "[email protected]",
    "first_name": "John",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "last_name": "Doe",
    "title": "Operator",
    "updated_at": "2021-08-13T04:08:44.762841Z"
  },
  "type": "user"
}

Schema / UsersResponse

Users

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:UserResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "address": {
          "address1": "string",
          "address2": "string",
          "business_name": "string",
          "city": "string",
          "country": "string",
          "email": "string",
          "fax_number": "string",
          "first_name": "string",
          "house_number": "string",
          "last_name": "string",
          "notes": "string",
          "phone_number": "string",
          "state": "string",
          "zip_code": "string"
        },
        "email": "[email protected]",
        "first_name": "John",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "last_name": "Doe",
        "title": "Operator",
        "updated_at": "2021-08-13T04:08:44.762841Z"
      },
      "type": "user"
    }
  ]
}

Schema / Voice

A TTS Voice is used to denote how the speaker sounds, this affects the gender and language.

Type Object

Name Type Description
accent_code String Desc. accent_code
id String(format:uuid) Desc. id
inserted_at String(format:date-time) An ISO8601 formatted timestamp
language_code String The language of the voice
name String(1..255) Name of the TTS Voice

Desc. accent_code

Any specialized variant or dialect of the language

Desc. id

A Universally unique identifier, which identifies the resource

Example

{
  "accent_code": "us",
  "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
  "inserted_at": "2021-08-13T04:08:44.762841Z",
  "language_code": "en",
  "name": "John Doe (en-US)"
}

Schema / VoiceResponse

Single voice

Type Object

Name Type Description
data Voice
type String

Example

{
  "data": {
    "accent_code": "us",
    "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
    "inserted_at": "2021-08-13T04:08:44.762841Z",
    "language_code": "en",
    "name": "John Doe (en-US)"
  },
  "type": "tts_voice"
}

Schema / VoicesResponse

Voices

Type Object

Name Type Description
count Integer
page_info PageInfo
results Array:VoiceResponse

Example

{
  "count": 1,
  "page_info": {
    "first": "string",
    "has_next_page": true,
    "has_previous_page": true,
    "last": "string"
  },
  "results": [
    {
      "data": {
        "accent_code": "us",
        "id": "c6be45e4-b7dd-412c-96c4-777e83fb9c48",
        "inserted_at": "2021-08-13T04:08:44.762841Z",
        "language_code": "en",
        "name": "John Doe (en-US)"
      },
      "type": "tts_voice"
    }
  ]
}

Updated 2026-08-12 · Generated from the Atlas OpenAPI spec.