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 oflocal@domainwhere local is the destination prefix and domain is the SIP capable server to handle the requestPSTN- destination should be a plain format number (e.g. 12003004000), can also be a comma separated list to allow multiple destinationsHTTP_ROUTE- destination should be an http uri which will handle the routing requestTTS- destination should be one of the pre-approved values (more may be added in the future):DISCONNECTEDTEXT_ONLYBUSYCONGESTIONTTS_CUSTOM- destination should be the message to be readTTS_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
VOIPPSTNHTTP_ROUTETTSTTS_CUSTOMTTS_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 errorBAD_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.
CSVMLJSON
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
NEWSCHEDULEDPROCESSINGSTORINGDELIVERINGCOMPLETEDABORTEDERROR
Desc. status
Status gives a brief overview of the state of the task.
NEW- the export task was freshly created and has not begun processingSCHEDULED- the task has been scheduled to execute at a later time (see date field for more information)PROCESSING- the task has begun processingSTORING- the task is currently storing its results on internal storage for later accessDELIVERING- 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 detailsABORTED- the task was aborted, execution was haltedERROR- 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 lookupsMCL- Messaging Carrier LookupCNAM- 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
UNKNOWNOKMISSERRORREFUNDNO_ANSWERBUSYCANCELLEDCHANNEL_UNAVAILABLECONGESTIONTEMP_FAILURE
Enum Values subtype
Allowed values
NONELRNLRNEMESSAGING_CARRIER_LOOKUPCNAMTTSOUTBOUNDINBOUNDTERMINATIONSIP_IAXDID_RCFDID_VOIPCALLBACKDIDCHARGEPREPAYMENTTAXPAYMENTADJUSTMENTDID_REGISTRYDID_REGISTRY_NRCDID_REGISTRY_A_MRCDEDICATED_ESPIDDEDICATED_ESPID_NRCDEDICATED_ESPID_A_MRCDID_TIERDID_TIER_NRCDID_TIER_A_MRCCSP_BRANDCSP_BRAND_A_MRCCSP_BRAND_VETTINGCSP_CAMPAIGNCSP_CAMPAIGN_MRCCSP_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
APIMMSSMSVOICEBALANCEMISC
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 usedBASIC- theauth_identityacts as the username while theauth_secretacts as the password- With
HTTP- anAuthorization: Basic <BASE64-VALUE>header will be set - With
SFTP- the session will be authenticated using theauth_identityandauth_secret BEARER- theauth_identityis ignored and only theauth_secretis used verbatim- With
HTTP- anAuthorization: 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
- CartRequestAddCampaignNumbersData
- CartRequestAddMessagingNumbersData
- CartRequestAddVoiceNumbersData
- CartRequestNewNumbersData
- CartRequestRegisterBrandData
- CartRequestRegisterCampaignData
- CartRequestRemoveCampaignNumbersData
- CartRequestRemoveMessagingNumbersData
- CartRequestRemoveNumbersData
- CartRequestRemoveVoiceNumbersData
- CartRequestUnregisterBrandData
- CartRequestUnregisterCampaignData
- CartRequestVetBrandData
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_idis provided instead. - If this field AND
campaign_idare 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_idis provided instead. - If this field AND
tcr_campaign_idare 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 PersonP2P- 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 withreseller_idtcr_brand_id- Pairs withbrand_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.
CSVMLJSON
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 lookupsMCL- Messaging Carrier LookupCNAM- 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 usedBASIC- theauth_identityacts as the username while theauth_secretacts as the password- With
HTTP- anAuthorization: Basic <BASE64-VALUE>header will be set - With
SFTP- the session will be authenticated using theauth_identityandauth_secret BEARER- theauth_identityis ignored and only theauth_secretis used verbatim- With
HTTP- anAuthorization: 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
- CartRequestAddCampaignNumbersData
- CartRequestAddMessagingNumbersData
- CartRequestAddVoiceNumbersData
- CartRequestNewNumbersData
- CartRequestRegisterBrandData
- CartRequestRegisterCampaignData
- CartRequestRemoveCampaignNumbersData
- CartRequestRemoveMessagingNumbersData
- CartRequestRemoveNumbersData
- CartRequestRemoveVoiceNumbersData
- CartRequestUnregisterBrandData
- CartRequestUnregisterCampaignData
- CartRequestVetBrandData
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
APIMMSSMSVOICEBALANCEMISC
Desc. type
The main type of CDR that should be exported
API- contain any LRN, LRNE, CNAM related callsMMS- contain the billed details for MMS recordsSMS- contain the billed details for SMS recordsVOICE- 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 tarballTAR_GZ- send the exported file in a gzipped tarballZIP- 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 requiredHTTPprotocol will not send an Authorization headerSFTPprotocol will default to username "tychron", and password "tychron" for its detailsBASIC- use "Basic" authorization, or a username + password pairingauth_identitywill be the usernameauth_secretwill be the passwordBEARER- use a "Bearer" authorization, that is, just the secretHTTPprotocol will send aAuthorization: Bearer <auth_secret>headerSFTPwill default its username to "tychron" and set the password as theauth_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- emptyHTTP- Must be a valid HTTP url, query parameters will be passed in as isSFTP- 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 nothingHTTP- send notifications or files over HTTPSFTP- 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 nothingNOTIFY- 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.
DEFAULTis the default, and means the uploaded file will be used for any "default" purposesMMSmms hints that the file is related to or to be used for mms purposesLOAthe 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_ratesbuy_ratescountfull_indexindexassocshowchargeresetcreateupdatedeletepurgemoveimportexportreviewprotectshareunshareimpersonatecheckoutlookup_resultprocesscanceldownloaduploadsummarize
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 OWNEDOWNED- The brand was created on site and belongs to this systemPARTNER- 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 OWNEDOWNED- The campaign was created on site and belongs to this systemPARTNER- 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 oflocal@domainwhere local is the destination prefix and domain is the SIP capable server to handle the requestPSTN- destination should be a plain format number (e.g. 12003004000), can also be a comma separated list to allow multiple destinationsHTTP_ROUTE- destination should be an http uri which will handle the routing requestTTS- destination should be one of the pre-approved values (more may be added in the future):DISCONNECTEDTEXT_ONLYBUSYCONGESTIONTTS_CUSTOM- destination should be the message to be readTTS_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
VOIPPSTNHTTP_ROUTETTSTTS_CUSTOMTTS_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 isBASIC- Theauth_identityandauth_secretwill form the auth pairBEARER- Only theauth_secretwill 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
NONEDIDCSP_BRANDCSP_CAMPAIGNORDERREQUESTOSR
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
NEWSCHEDULEDPROCESSINGSTORINGDELIVERINGCOMPLETEDABORTEDERROR
Desc. status
Status gives a brief overview of the state of the task.
NEW- the export task was freshly created and has not begun processingSCHEDULED- the task has been scheduled to execute at a later time (see date field for more information)PROCESSING- the task has begun processingSTORING- the task is currently storing its results on internal storage for later accessDELIVERING- 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 detailsABORTED- the task was aborted, execution was haltedERROR- the task experienced an error, error_code will have more details if any
Enum Values type
Allowed values
APIMMSSMSVOICEBALANCEMISC
Desc. type
The main type of CDR that should be exported
API- contain any LRN, LRNE, CNAM related callsMMS- contain the billed details for MMS recordsSMS- contain the billed details for SMS recordsVOICE- 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
L0L1T1T2T3AKHICANPRTFSHORTCODEM0M1BYON
Desc. tier
The billing tier associated with the number:
L0- Tychron OCN Tier 0L1- Tychron OCN Tier 1T1- Partner Tier 0T2- Partner Tier 1T3- Partner Tier 3AK- AlaskaHI- HawaiiCAN- CanadaPR- Puerto RicoTF- TollfreeSHORTCODE- General ShortcodeM0- Mobile Tier 0M1- Mobile Tier 1BYON- Bring-Your-Own-Number
Enum Values upgrade_asset_handling
Allowed values
FALLBACKOFFALWAYS_UPGRADESEGMENT_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
NONEORIGINATIONTERMINATIONALL
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
staterate_centernpa_nxxblock
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 tarballTAR_GZ- send the exported file in a gzipped tarballZIP- 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 requiredHTTPprotocol will not send an Authorization headerSFTPprotocol will default to username "tychron", and password "tychron" for its detailsBASIC- use "Basic" authorization, or a username + password pairingauth_identitywill be the usernameauth_secretwill be the passwordBEARER- use a "Bearer" authorization, that is, just the secretHTTPprotocol will send aAuthorization: Bearer <auth_secret>headerSFTPwill default its username to "tychron" and set the password as theauth_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- emptyHTTP- Must be a valid HTTP url, query parameters will be passed in as isSFTP- 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 nothingHTTP- send notifications or files over HTTPSFTP- 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 yetCOMPLETED- the task has been executed and was completed successfullyERROR- 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 successfullyREJECTED- the action has been rejected possibly due to an error in the task
Desc. type
What kind of action will this be?
NONE- do nothingNOTIFY- 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 actionDID_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 anUPSTREAM_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
OKNOT_IMPLEMENTEDRETRIES_EXHAUSTEDRECORD_CONFLICTOWNERSHIP_MISMATCHMESSAGING_UNAVAILABLEINVALID_EMAIL_ADDRESSINVALID_PHONE_NUMBERINVALID_ADDRESSLOA_REQUIREDDID_NOT_FOUNDASSOCIATED_WITH_DIDSBRAND_NOT_FOUNDUPSTREAM_ERRORUPSTREAM_INTERNAL_ERRORUPSTREAM_TEMPORARY_ERRORUPSTREAM_PARAMETER_ERRORUPSTREAM_RECORD_NOT_OWNEDUPSTREAM_RECORD_NOT_FOUNDUPSTREAM_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 areCOMPLETED).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
NEWMANUALAUTHOR_MANUALCOMPLETEDCOMPLETED_WITH_ERRORSPROCESSINGPENDINGERRORREJECTEDCANCELLEDEXPIREDCRONCARTREVIEW
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
NONEAPPROVEDREJECTEDAUTO_APPROVEDAUTO_REJECTEDFORCE_DELETED
Desc. review_status
The review status of the request, defaults to NONE.
Enum Values status
Allowed values
NEWREVIEWEDAPPROVEDREJECTEDERRORSTALEDELETED
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_scopeaccess_denied.insufficient_levelaccess_denied.resource_unavailableaccess_denied.action_disabledaccess_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
- RequestAddCampaignNumbersData
- RequestAddMessagingNumbersData
- RequestAddVoiceNumbersData
- RequestNewNumbersData
- RequestRegisterBrandData
- RequestRegisterCampaignData
- RequestRemoveCampaignNumbersData
- RequestRemoveMessagingNumbersData
- RequestRemoveNumbersData
- RequestRemoveVoiceNumbersData
- RequestUnregisterBrandData
- RequestUnregisterCampaignData
- RequestVetBrandData
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_idis provided instead. - If this field AND
tcr_campaign_idare 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_idis provided instead. - If this field AND
campaign_idare 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 PersonP2P- 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 errorMANUAL- the PVR requires manual attention or action from an operational personnelUNKNOWN- something went wrong, and its unclear what happened, this should never happen normallyPROTECTED- 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 timeTIMEOUT- the PVR took too long to complete and has timed out while processingMESSAGING_UNAVAILABLE- the number was required to have messaging components but failed secondary sanity checksOWNERSHIP_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 notFEATURE_NOT_FOUND- the number required a specific feature to be enabled, but did not meet the criteriaREQUIRED_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 processingCONFLICT- the request has noticed that the number or resource has already met its condition and will not try againREJECTED- the request has failed one or more sanity checks and is deemed un-processableOVERWRITE_REJECTED- the request attempted to overwrite an item in a registry but received a rejection for attempting soWIRELESS_NUMBER_NOT_SUPPORTED- the PVR's number was determined to be aWIRELESSand is not supported for enablementSUBMISSION_CHECKED_FAILED- the PVR had undergone some initial checks which have failed to determine if it could have been completedSUBMISSION_FAILED- the number has failed submission, contact support for more detailsPORTABILITY_CHECK_FAILED- similar toSUBMISSION_CHECKED_FAILEDused for cases where the checks themselves could not be completedUNPORTABLE- similar toSUBMISSION_CHECKED_FAILEDused for cases where checks had completed but the number ultimately could not be completedCANCELLED- the PVR has been marked CANCELLED and will be skipped by the ordering system until a reset takes placeNOT_IMPLEMENTED- the request attempted to process a feature that was not implemented, or is no longer implementedINVALID_NUMBER- the number associated with the provision record is invalidINVALID_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 requestDID_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 personnelUPSTREAM_LIMIT_EXCEEDED- an external registry has imposed a limit which was exceeded by this number's actionsUPSTREAM_TIME_LIMIT_EXCEEDED- an external registry has imposed a time limit which was exceeded by this number's actionsUPSTREAM_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 laterUPSTREAM_CANCELLED- an external registry has cancelled a request that may have been made earlierUPSTREAM_TOO_MANY_REQUESTS- too many requests within a timespan, this will normally be addressed by an automatic retryUPSTREAM_NOT_ALLOWED_TO_PROVISION- an external registry has prevented the provisioning of the specified number or resourceUPSTREAM_NOT_AUTHORIZED_TO_PROVISION- an external registry requires additional permission to provision the specified resource or numberUPSTREAM_UNAUTHORIZED- a generic authorization error, this will be addressed by a operational personnelUPSTREAM_RECORD_NOT_OWNED- an external registry has deemed that the resource does not belong to the entity making the changeUPSTREAM_RECORD_NOT_FOUND- an external registry could not locate or find the specified number or resourceUPSTREAM_RECORD_IS_DUPLICATE- an external registry has determined that the resource is or may be a duplicate of another resource and has rejected the requestUPSTREAM_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 statusUPSTREAM_TEMPORARY_UNAVAILABLE- the upstream registry could not be contacted for processing at the time, it may become available laterUPSTREAM_PROVISIONING_UNAVAILABLE- an external registry has disabled, rejected or denied provisioning of the specific resource at this timeUPSTREAM_UNEXPECTED_RESPONSE- the registry returned or responded to a request with something unexpected by the ordering systemUPSTREAM_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 errorSYSTEM_REQUEST_ERROR- may be used in place ofUPSTREAM_REQUEST_ERRORif 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 registryPURGE- the PVR should be purged and removed from the request itself if possible
Type Enum:String
OKMANUALUNKNOWNPROTECTEDSUBMISSION_TEMPORARY_ERRORMESSAGING_UNAVAILABLEOWNERSHIP_MISMATCHNOT_FOUNDFEATURE_NOT_FOUNDREQUIRED_RECORD_NOT_FOUNDCONFLICTREJECTEDOVERWRITE_REJECTEDWIRELESS_NUMBER_NOT_SUPPORTEDSUBMISSION_CHECKED_FAILEDSUBMISSION_FAILEDPORTABILITY_CHECK_FAILEDUNPORTABLECANCELLEDNOT_IMPLEMENTEDINVALID_NUMBERINVALID_NNIDLOA_REQUIREDDID_NOT_FOUNDUPSTREAM_ERRORUPSTREAM_LIMIT_EXCEEDEDUPSTREAM_TIME_LIMIT_EXCEEDEDUPSTREAM_RESOURCE_LIMIT_EXCEEDEDUPSTREAM_RESOURCE_UNAVAILABLEUPSTREAM_CANCELLEDUPSTREAM_TOO_MANY_REQUESTSUPSTREAM_NOT_ALLOWED_TO_PROVISIONUPSTREAM_NOT_AUTHORIZED_TO_PROVISIONUPSTREAM_UNAUTHORIZEDUPSTREAM_RECORD_NOT_OWNEDUPSTREAM_RECORD_NOT_FOUNDUPSTREAM_RECORD_IS_DUPLICATEUPSTREAM_PARAMETER_ERRORUPSTREAM_NUMBER_UNUSABLEUPSTREAM_TEMPORARY_UNAVAILABLEUPSTREAM_PROVISIONING_UNAVAILABLEUPSTREAM_UNEXPECTED_RESPONSEUPSTREAM_REQUEST_ERRORSYSTEM_ERRORSYSTEM_REQUEST_ERRORREMOVE_FROM_UPSTREAMPURGE
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 yetMANUAL- the PVR is currently requires manual or admin actionSUBMITTED_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 ofCONFIRMED_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 processingERROR- the PVR has a permanent error (seeerror_codefield for more details)TEMPORARY_ERROR- the PVR has encountered a temporary error and may be resolved later with or by an operations personnelEXPIRED- the request has given up on processing the PVR due to a timeout or other long period conditionCANCELLED- the request or an operational personnel has marked the PVR for cancellation possibly as it could not be completed due to an abnormal conditionREJECTED- the request has deemed that the PVR cannot or should not be processed, (seeerror_codefield 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
NONEMANUALSUBMITTED_TO_REGISTRYSUBMITTED_TO_REGISTRY1SUBMITTED_TO_REGISTRY2SUBMITTED_TO_REGISTRY3CONFIRMED_IN_REGISTRYCONFIRMED_IN_REGISTRY1CONFIRMED_IN_REGISTRY2CONFIRMED_IN_REGISTRY3PENDING_IN_REGISTRYPENDING_IN_REGISTRY1PENDING_IN_REGISTRY2PENDING_IN_REGISTRY3REMOVED_FROM_REGISTRYREMOVED_FROM_REGISTRY1REMOVED_FROM_REGISTRY2REMOVED_FROM_REGISTRY3COMPLETEDERRORTEMPORARY_ERROREXPIREDCANCELLEDREJECTEDPURGE
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_NUMBERSADD_DIRECTORY_LISTING_NUMBERSADD_E911_NUMBERSADD_GOOGLE_VERIFIED_SMS_NUMBERSADD_GOOGLE_VERIFIED_VOICE_NUMBERSADD_MESSAGING_NUMBERSADD_OUTBOUND_CNAME_NUMBERSADD_VOICE_NUMBERSNEW_NUMBERSNONEPORT_NUMBERSPUBLISH_MESSAGING_NUMBERSREGISTER_BRANDREGISTER_CAMPAIGNREGISTER_GOOGLE_VERIFIED_SMS_AGENTREGISTER_GOOGLE_VERIFIED_SMS_BRANDREGISTER_GOOGLE_VERIFIED_VOICE_AGENTREGISTER_GOOGLE_VERIFIED_VOICE_BRANDREGISTER_RESELLERREMOVE_CAMPAIGN_NUMBERSREMOVE_DIRECTORY_LISTING_NUMBERSREMOVE_E911_NUMBERSREMOVE_GOOGLE_VERIFIED_SMS_NUMBERSREMOVE_GOOGLE_VERIFIED_VOICE_NUMBERSREMOVE_MESSAGING_NUMBERSREMOVE_NUMBERSREMOVE_OUTBOUND_CNAME_NUMBERSREMOVE_VOICE_NUMBERSRESUBMIT_CAMPAIGNUNREGISTER_BRANDUNREGISTER_CAMPAIGNUNREGISTER_GOOGLE_VERIFIED_SMS_AGENTUNREGISTER_GOOGLE_VERIFIED_SMS_BRANDUNREGISTER_GOOGLE_VERIFIED_VOICE_AGENTUNREGISTER_GOOGLE_VERIFIED_VOICE_BRANDUNREGISTER_RESELLERVET_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
NONEAPPROVEDREJECTEDAUTO_APPROVEDAUTO_REJECTEDFORCE_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 userCLIENT- 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_ratesbuy_ratescountfull_indexindexassocshowchargeresetcreateupdatedeletepurgemoveimportexportreviewprotectshareunshareimpersonatecheckoutlookup_resultprocesscanceldownloaduploadsummarize
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_ratesbuy_ratescountfull_indexindexassocshowchargeresetcreateupdatedeletepurgemoveimportexportreviewprotectshareunshareimpersonatecheckoutlookup_resultprocesscanceldownloaduploadsummarize
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- unsuedBASIC- Acts as thepasswordcomponent of the Authorization Basic pair.BEARER- Acts as the tokenHMAC_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- ignoredSMPP- ignoredHTTP- 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
NONEVOIPPSTNTTSTTS_CUSTOMHTTP_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_0TRINITY_POST_1_0TRINITY_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_0OXY_JSONAPI_1_0OXY_XML_1_0OXY_MULTIPART_1_0OXY_MULTIPART_2_0OXY_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 requestBASIC- Uses thesms_identityas the username andsms_secretas the password to form the Basic pairBEARER- Uses ONLY thesms_secretas the tokenHMAC_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- unsuedBASIC- Acts as thepasswordcomponent of the Authorization Basic pair.BEARER- Acts as the tokenHMAC_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 requestBASIC- Uses themms_identityas the username andmms_secretas the password to form the Basic pairBEARER- Uses ONLY themms_secretas the tokenHMAC_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
NONEMM4HTTPSFTPFORWARDTYCHRON_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 inmms_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 themms_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- ignoredMM4- 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
NONESMPPHTTPFORWARDTYCHRON_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 switchHTTP- 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 assms_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 defaultAES_128_GCM- Requires a 16 byte secret keyAES_192_GCM- Requires a 24 byte secret keyAES_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
<
Type Enum:String
NONEAES_128_GCMAES_192_GCMAES_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-typex-message-authorization-versionx-message-content-typex-message-formatx-message-idx-message-ivx-message-signature-versionx-message-timestampx-tychron-csp-campaign-idx-tychron-remote-reference-idx-tychron-remote-service-providerx-tychron-tcr-brand-idx-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-typex-message-authorization-versionx-message-content-typex-message-formatx-message-idx-message-ivx-message-signature-versionx-message-timestampx-tychron-csp-campaign-idx-tychron-remote-reference-idx-tychron-remote-service-providerx-tychron-tcr-brand-idx-tychron-tcr-campaign-id- Each Part (repeat for each part in the request, IN ORDER)
- Part Headers
content-typex-message-content-typex-message-iv
- Part Body
2026-07-27 MMS Single Part
For everything else:
- Request Headers (the main document)
content-typex-message-authorization-versionx-message-content-typex-message-formatx-message-idx-message-ivx-message-signature-versionx-message-timestampx-tychron-csp-campaign-idx-tychron-remote-reference-idx-tychron-remote-service-providerx-tychron-tcr-brand-idx-tychron-tcr-campaign-id- Request Body
Type Enum:String
NONESHA2_256SHA2_384SHA2_512SHA3_256SHA3_384SHA3_512
Example
"NONE"
Schema / SwitchSigningScheme
The signing scheme that should be used, only NONE (for no signing) and HMAC are available.
Type Enum:String
NONEHMAC
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 includerequestsREQUEST_COMPLETED- will includeprovision_records
One-Of
Types
- SystemEventDataCspCampaignRegistered
- SystemEventDataCspCampaignOptoutItemCreated
- SystemEventDataCspCampaignOptoutItemDeleted
- SystemEventDataDidCreated
- SystemEventDataDidDeleted
- SystemEventDataDidComponentCreated
- SystemEventDataDidComponentDeleted
- SystemEventDataDidOptoutItemCreated
- SystemEventDataDidOptoutItemDeleted
- SystemEventDataOsrOverwriteRequestPending
- SystemEventDataOsrOverwriteRequestCompleted
- SystemEventDataOrderCompleted
- SystemEventDataRequestCompleted
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 thenumbers. - 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
UNKNOWNMESSAGINGVOICECSP_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
UNKNOWNCREATED_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
UNKNOWNDELETED_FROM_REGISTRYDELETED_MANUALLYDELETED_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
NONEAPPROVEDREJECTEDAUTO_APPROVEDAUTO_REJECTEDFORCE_DELETED
Desc. review_status
The review status of the request, defaults to NONE.
Enum Values status
Allowed values
NEWREVIEWEDAPPROVEDREJECTEDERRORSTALEDELETED
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
NONEAPPROVEDREJECTEDAUTO_APPROVEDAUTO_REJECTEDFORCE_DELETED
Desc. review_status
The review status of the request, defaults to NONE.
Enum Values status
Allowed values
NEWREVIEWEDAPPROVEDREJECTEDERRORSTALEDELETED
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
- SystemEventDataRequestCompletedDataRegisterBrand
- SystemEventDataRequestCompletedDataRegisterCampaign
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
NONEDIDCSP_BRANDCSP_CAMPAIGNORDERREQUESTOSR
Example
"NONE"
Schema / SystemEventType
The type of the event, this denotes what the data will contain.
Type Enum:String
DID_COMPLETED_CREATEDDID_COMPLETED_DELETEDDID_CREATEDDID_DELETEDORDER_COMPLETEDREQUEST_COMPLETEDOSR_OVERWRITE_REQUEST_PENDINGOSR_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 usedBASIC- theauth_identityacts as the username while theauth_secretacts as the password- With
HTTP- anAuthorization: Basic <BASE64-VALUE>header will be set - With
SFTP- the session will be authenticated using theauth_identityandauth_secret BEARER- theauth_identityis ignored and only theauth_secretis used verbatim- With
HTTP- anAuthorization: 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
- CartRequestAddCampaignNumbersData
- CartRequestAddMessagingNumbersData
- CartRequestAddVoiceNumbersData
- CartRequestNewNumbersData
- CartRequestRegisterBrandData
- CartRequestRegisterCampaignData
- CartRequestRemoveCampaignNumbersData
- CartRequestRemoveMessagingNumbersData
- CartRequestRemoveNumbersData
- CartRequestRemoveVoiceNumbersData
- CartRequestUnregisterBrandData
- CartRequestUnregisterCampaignData
- CartRequestVetBrandData
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
FALLBACKOFFALWAYS_UPGRADESEGMENT_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_ratesbuy_ratescountfull_indexindexassocshowchargeresetcreateupdatedeletepurgemoveimportexportreviewprotectshareunshareimpersonatecheckoutlookup_resultprocesscanceldownloaduploadsummarize
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 oflocal@domainwhere local is the destination prefix and domain is the SIP capable server to handle the requestPSTN- destination should be a plain format number (e.g. 12003004000), can also be a comma separated list to allow multiple destinationsHTTP_ROUTE- destination should be an http uri which will handle the routing requestTTS- destination should be one of the pre-approved values (more may be added in the future):DISCONNECTEDTEXT_ONLYBUSYCONGESTIONTTS_CUSTOM- destination should be the message to be readTTS_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
VOIPPSTNHTTP_ROUTETTSTTS_CUSTOMTTS_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 isBASIC- Theauth_identityandauth_secretwill form the auth pairBEARER- Only theauth_secretwill 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
NONEDIDCSP_BRANDCSP_CAMPAIGNORDERREQUESTOSR
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
NONEORIGINATIONTERMINATIONALL
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 requestBASIC- Uses themms_identityas the username andmms_secretas the password to form the Basic pairBEARER- Uses ONLY themms_secretas the tokenHMAC_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- ignoredMM4- 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_0OXY_JSONAPI_1_0OXY_XML_1_0OXY_MULTIPART_1_0OXY_MULTIPART_2_0OXY_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
NONEMM4HTTPSFTPFORWARDTYCHRON_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 inmms_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 themms_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- unsuedBASIC- Acts as thepasswordcomponent of the Authorization Basic pair.BEARER- Acts as the tokenHMAC_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 requestBASIC- Uses thesms_identityas the username andsms_secretas the password to form the Basic pairBEARER- Uses ONLY thesms_secretas the tokenHMAC_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- ignoredSMPP- ignoredHTTP- 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_0TRINITY_POST_1_0TRINITY_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
NONESMPPHTTPFORWARDTYCHRON_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 switchHTTP- 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 assms_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- unsuedBASIC- Acts as thepasswordcomponent of the Authorization Basic pair.BEARER- Acts as the tokenHMAC_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
NONEVOIPPSTNTTSTTS_CUSTOMHTTP_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"
}
]
}