Download OpenAPI specification:Download
{- "drips": [
- {
- "id": "abc123xyz",
- "name": null,
- "drips": [
- {
- "name": null,
- "interval": 1,
- "intervalType": "days",
- "message": "Hello, [first]! Thanks for stopping by our booth at the event. I'd love to connect this week about your needs. Let me know when you're available!",
- "created": null
}
], - "created": null,
- "updated": null,
- "uid": "abc123xyz"
}
]
}Lists contacts owned by the user associated with the API key used to make the request
{- "contacts": [
- {
- "id": "abc123xyz",
- "phoneNumber": "+15554443333",
- "fullName": "John Doe",
- "email": "john.doe@gmail.com",
- "last_message": "Hello, Textable!",
- "last_message_date": 1670372913091
}
]
}Create a contact.
| phoneNumber required | string The contact's phone number in E.164 format |
| fullName | string Full name of contact. |
string E-mail address of contact. |
{- "phoneNumber": "+15554443333",
- "fullName": "John Doe",
- "email": "john.doe@gmail.com"
}{- "id": "abc123xyz",
- "fullName": "John Doe",
- "email": "john.doe@gmail.com",
- "last_message": "Hello, Textable!",
- "last_message_date": 1670372913091
}Applies a drip campaign to a specific contact if the authenticated user has access to both the contact and the campaign.
| id required | string The ID of the contact |
| dripCampaignId required | string ID of the drip campaign to apply |
{- "dripCampaignId": "string"
}{- "errors": [
- "string"
], - "error": "string"
}Send (or schedule) a SMS or MMS message for a specified phone number, store a "note" or a message sent from an external system.
Send, schedule or store a SMS / MMS message or store a note.
| to required | string The recipient's phone number in E.164 format. |
| from required | string The sender's phone number in E.164 format. |
| message required | string The body of the message. |
| media | Array of strings (Optional) An array of publicly available URLs to include as MMS attachments. |
| notify | boolean (Optional) A boolean that dictates whether or not to send a notification to the Texatble user that a note or message has been stored. |
| sendAt | number (Optional) A UTC timestamp in the future when to schedule the message to be sent. The timestamp is in ms. |
| sendStatus | string Value: "sent" (Optional) If set to "sent", this will store a message, not send it, assuming it has already been sent to the carrier. |
| type | string Value: "note" (Optional) If set to "note", this will store the message body as a note that is visible to all users and shared users of the from number. This will NOT send a message to the recipient. |
| autoArchive | boolean Default: false If true, the conversation's archived status will be set to true. |
| reminder | boolean If true, the message will be a reminder and displayed in the reminder section in the app. **note reminder messages require timezone and sendAt fields |
| scheduleTimezone | string Enum: "America/Los_Angeles" "America/Denver" "America/Chicago" "America/New_York" A required field for sending reminders. |
{- "to": "+15554443333",
- "from": "+15554442222",
- "message": "Hello, Textable!",
- "notify": true,
- "sendAt": 2880544055000,
- "sendStatus": "sent",
- "type": "note",
- "autoArchive": false,
- "reminder": true,
- "scheduleTimezone": "America/Los_Angeles"
}[- {
- "id": "iw8guE9ndCkMXzyVmDezmyO0Il0SzA9i",
- "organizationName": "Right Way Insurance Co.",
- "description": "string",
- "userCount": 0,
- "managedBy": "iw8guE9ndCkMXzyVmDezmyO0Il0SzA9i",
- "billing": {
- "plan": "starter"
}, - "organizationAdmins": [
- "abc123xyz"
], - "requireContactConsent": true,
- "requireContactConsentMessage": "This is an example consent message. Reply STOP to opt out.",
- "is_disabled": true
}
]| organizationName required | string A short name for the organization. |
| description | string Description or note for the organization. |
| organizationPlanSelection | string A string representing the plan name of the organization. |
object | |
| requireContactConsent | boolean A boolean value representing whether or not the organization should enforce sending the consent message. |
| requireContactConsentMessage | string A string representing the content of the organization's consent message. |
| tenantId | string The ID of the tenant that this organization belongs to. |
{- "organizationName": "string",
- "description": "string",
- "organizationPlanSelection": "mcpl-starter",
- "billing": {
- "plan": "mcpl-starter"
}, - "requireContactConsent": true,
- "requireContactConsentMessage": "string",
- "tenantId": "string"
}{- "id": "iw8guE9ndCkMXzyVmDezmyO0Il0SzA9i"
}| organizationName required | string A short name for the organization. |
| description | string Description or note for the organization. |
| organizationPlanSelection | string A string representing the plan name of the organization. |
object | |
| requireContactConsent | boolean A boolean value representing whether or not the organization should enforce sending the consent message. |
| requireContactConsentMessage | string A string representing the content of the organization's consent message. |
| is_disabled | boolean Marks this organization (and all users belonging to it) as disabled. This will prevent log-in, sending mesages, and blasts / reminders for the afffected users. Billing (if applicable) will also be suspended for affected users. |
{- "organizationName": "string",
- "description": "string",
- "organizationPlanSelection": "mcpl-starter",
- "billing": {
- "plan": "mcpl-starter"
}, - "requireContactConsent": true,
- "requireContactConsentMessage": "string",
- "is_disabled": true
}Adds an organization admin to organization referenced by "id", based on e-mail address
| id required | string The ID of the organization to edit |
email address of the user to add
| email required | string The email address of the user to add as an org admin Must already exist as a user in the application |
{- "email": "string"
}Creates a user.
Only valid in privatelabel context.
Newly created users must have a email and phone number that are not already in use.
Details about the user to create
| phoneNumber required | string The user's phone number in E.164 format. The supplied phone number must not be in use by any other users. |
| provider | string The name of the provider to use for this user Required if credentialSource is If supplied, all credential properties for the selected provider must be included as top-level keys on the submitted post object |
| emailAddress required | string |
| password | string |
| fullName | string |
| organizationId | string If not supplied, this will default to the organization of the user making this request |
| relayWebhook | string |
{- "phoneNumber": "string",
- "provider": "string",
- "emailAddress": "string",
- "password": "string",
- "fullName": "string",
- "organizationId": "string",
- "relayWebhook": "string"
}{- "id": "string"
}Updates a user's details.
Notice: it is not possible to update certain user fields via this API:
| id required | string The ID of the user to edit |
Details about the user to update
| phoneNumber | string The user's phone number in E.164 format. The supplied phone number must not be in use by any other users. |
| emailAddress | string If the email supplied is different from the users existing email, it will be updated in the authentication system and the existing password will continue to work |
| provider | string The name of the provider to use for this user |
| fullName | string |
| organizationId | string |
| relayWebhook | string |
| disabled | boolean Users marked as disabled may not log in or make API calls. |
{- "phoneNumber": "string",
- "emailAddress": "string",
- "provider": "string",
- "fullName": "string",
- "organizationId": "string",
- "relayWebhook": "string",
- "disabled": true
}Updates the webhook URL for a user
Update detail for the webhook URL
| url | string URL to which messages (inbound and outbound) should be POSTed Format of the POST body will be:
|
{- "url": "string"
}Updates a contact according to the attributes supplied.
the properties to update.
| full_name | string |
| phone_number | string |
string | |
| title | string |
| companyName | string |
| notes | string |
| optedOut | boolean Sets Boolean value controling if the contact has opted out of communications |
| isArchived | boolean Sets the status of the contact and conversations to archived |
{- "full_name": "string",
- "phone_number": "string",
- "email": "string",
- "title": "string",
- "companyName": "string",
- "notes": "string",
- "optedOut": true,
- "isArchived": true
}Applies a drip campaign to a contact.
the properties to update.
| dripCampaignId | string The ID of the drip campaign to apply to the contact |
{- "dripCampaignId": "string"
}{- "dripCampaignId": "string",
- "addedDripMessages": [
- "string"
]
}Retrieves details for a user by ID
| id required | string The user's ID |
{- "id": "string",
- "is_disabled": true,
- "full_name": "string",
- "email": "string",
- "organizationId": "string",
- "phone_number": "string",
- "sharedWith": [
- "string"
], - "deleted": 0,
- "restrictions": [
- "string"
], - "relayWebhook": "string",
- "autoReplyMessage": "string",
- "signatureEnabled": true,
- "signatureText": "string",
- "isAdmin": true,
- "provider": "string"
}API Route to delete a user by id.
Defaults to marking the user for deletion insted of actually removing the user.
Specify force in the query string to forcefully delete the user
UserToken authentication for this API call is restricted for retail instances.
Super Admin users may not be deleted and attempts to do so will fail
Admin users may be deleted by other admin users
The user making the request may not delete their own account
| id required | string The ID of the user to delete |
| force | boolean When true, the user is deleted immediately. Defaults to false, so the user will be deleted after some time. |
Updates properties for a user
User update request body
| email required | string Provide the e-mail address of the user. This is used for login and notifications. |
| full_name required | string The full name of the user. e.g. John Doe |
| phone_number | string The user's phone number in E.164 format. The supplied phone number must not be in use by any other users. |
| restrictions | Array of strings Items Enum: "blasts" "reminders" "dripCampaign" "importContacts" "lists" "deleteAll" "disableDelete" "integrations" List of restrictions applied to the user to manage their ability access features. Here are the matching permission names on Textable UI. "blasts"(Blasts), "reminders"(Reminders), "dripCampaign"(Drip Campaign), "importContacts"(Import Contacts), "lists"(Contact Lists), "deleteAll"(Delete All Contacts), "disableDelete"(Delete Contact and Messages), or "integrations"(Integrations) |
| provider | string The name of the provider to use for this user Required if credentialSource is If supplied, all credential properties for the selected provider must be included as top-level keys on the submitted post object |
| password | string Sets the password to the provided value. |
| organizationId | string If not supplied, this will default to the organization of the user making this request |
| relayWebhook | string A publicly available URL that a copy of each message (inbound and outbound) will be sent to via HTTP POST. |
| external_id | string Use this field to store an external_id field for this user (e.g. from your PBX or your identity provider.) |
{- "email": "string",
- "full_name": "string",
- "phone_number": "string",
- "restrictions": [
- "blasts",
- "dripCampaign"
], - "provider": "string",
- "password": "string",
- "organizationId": "string",
- "relayWebhook": "string",
- "external_id": "string"
}Creates a user in the context of a Private Label
| email required | string Provide the e-mail address of the user. This is used for login and notifications. |
| full_name | string The full name of the user. e.g. John Doe |
| isAdmin | boolean If true, this field sets the user as a system admin. Note: This is a sensitive field as it will provide the user access to all organizations and user settings. |
| phone_number required | string The user's phone number in E.164 format. The supplied phone number must not be in use by any other users. |
| restrictions | Array of strings Items Enum: "blasts" "reminders" "dripCampaign" "importContacts" "lists" "deleteAll" "disableDelete" "integrations" List of restrictions applied to the user to manage their ability access features. Here are the matching permission names on Textable UI. "blasts"(Blasts), "reminders"(Reminders), "dripCampaign"(Drip Campaign), "importContacts"(Import Contacts), "lists"(Contact Lists), "deleteAll"(Delete All Contacts), "disableDelete"(Delete Contact and Messages), or "integrations"(Integrations) |
| provider | string The name of the provider to use for this user Required if credentialSource is If supplied, all credential properties for the selected provider must be included as top-level keys on the submitted post object |
| password | string Sets the password to the provided value. |
| organizationId required | string If not supplied, this will default to the organization of the user making this request |
| relayWebhook | string A publicly available URL that a copy of each message (inbound and outbound) will be sent to via HTTP POST. |
| external_id | string Use this field to store an external_id field for this user (e.g. from your PBX or your identity provider.) |
| tenantId required | string The ID of the tenant this user belongs to. |
{- "email": "string",
- "full_name": "string",
- "isAdmin": true,
- "phone_number": "string",
- "restrictions": [
- "blasts",
- "dripCampaign"
], - "provider": "string",
- "password": "string",
- "organizationId": "string",
- "relayWebhook": "string",
- "external_id": "string",
- "tenantId": "string"
}nullChanges the password of the user specified in :id. All other logged-in sessions of this user will be terminated. If the requestor is changing their own password, a new auth token will be returned.
New password
| password | string |
{- "password": "string"
}{- "status": "Reset own password",
- "newToken": "#NEW TOKEN"
}Get all organizations.
Presently only available to admins, as the results are not trimmed according to organizations within the user's management scope.
TODO: TXBDEV-1916 - Allow tenant admin / org admin users to GET /api/v2/organizations
Updates an organization according to the attributes supplied.
the properties to update.
| organizationName | string |
| organizationAdmins | Array of strings |
| managedBy | string User ID of mangager of Organization. |
| description | string |
| requireContactConsent | boolean When an organization has this property set to true, anytime a user in the organization sends a message to a contact who has not yet received a consent message, a consent message will automatically be sent to the contact |
| requireContactConsentMessage | string The body text of the consent message to send. |
object | |
| is_disabled | boolean Marks this organization (and all users belonging to it) as disabled. This will prevent log-in, sending mesages, and blasts / reminders for the afffected users. Billing (if applicable) will also be suspended for affected users. |
| tenantId | string The ID of the tenant that this organization belongs to. |
object |
{- "organizationName": "string",
- "organizationAdmins": [
- "string"
], - "managedBy": "string",
- "description": "string",
- "requireContactConsent": true,
- "requireContactConsentMessage": "string",
- "billing": {
- "plan": "string"
}, - "is_disabled": true,
- "tenantId": "string",
- "provider": {
- "name": "string",
- "credentials": { }
}
}Delete organization from provided organization id
| orgid required | string The ID of the organization to delete |
| force | boolean When true, the organization is deleted immediately. Defaults to false, so the org will be deleted after some time. |
API Route to mark a number of selected contact ids and set read_status to false.
Array of contact id strings.
| contactsArray | Array of strings |
{- "contactsArray": [
- "string"
]
}{- "status": true
}Creates a canned response.
| uid | string The user id of the user to add the canned response for. |
| name | string A friendly name to represent the canned response content. |
| body | string The body of the canned response text message. |
| auto_keyword | string A keyword that when received would trigger the canned response as an auto-reply. |
{- "uid": "string",
- "name": "string",
- "body": "string",
- "auto_keyword": "string"
}{- "id": "string"
}| tenantName required | string |
| tenant_external_identifier required | string store an identifer for the tenant for referencing another system |
| billingGroup | string an identifier used to group multiple tenants for billing purposes |
| adminBillingPlan | string the internal name of the billing plan assigned to organizations created for Tenant Admins |
required | object |
| primarySupportContactEmail required | string |
{- "tenantName": "string",
- "tenant_external_identifier": "string",
- "billingGroup": "string",
- "adminBillingPlan": "string",
- "provider": {
- "name": "string",
- "credentials": { }
}, - "primarySupportContactEmail": "string"
}{- "body": "Created tenant `tenantName` (`tenantId`)"
}Creates or updates the tenant admin user (identified by email).
If a user with the specified email address already exists, the user will be added to the list of administrators
for the tenant idenfied by tenant_external_identifier
If this is the first admin created for this tenant, a new organization will be created: "Tenant Administrators of adminBillingPlan, or the instance's defaultTenantAdminBillingPlan value.
The the tenant to which this admin is being added does not have a support email address, the domain of this request's email address will be used to generate
a support address of support@<domain>
| email required | string Email address of the user to create; NOT used for correlating the user when consuming SSO claims |
| external_id required | string An identifier used to correlate this user with incoming claims (e.g. SAML NameID) from an external identity provider. See SAML Response |
| tenant_external_identifier required | string An identifier used to correlate this tenant with an entity in an external system |
| full_name required | string Name of the user to create/update. |
{- "email": "string",
- "external_id": "string",
- "tenant_external_identifier": "string",
- "full_name": "string"
}{- "body": "string",
- "userId": "string",
- "tenantId": "string",
- "organizationId": "string",
- "warning": "string"
}| tenantName required | string |
| tenant_external_identifier required | string store an identifer for the tenant for referencing another system |
| billingGroup | string an identifier used to group multiple tenants for billing purposes |
| adminBillingPlan | string the internal name of the billing plan assigned to organizations created for Tenant Admins |
required | object |
| primarySupportContactEmail required | string |
{- "tenantName": "string",
- "tenant_external_identifier": "string",
- "billingGroup": "string",
- "adminBillingPlan": "string",
- "provider": {
- "name": "string",
- "credentials": { }
}, - "primarySupportContactEmail": "string"
}{- "body": "Created/Updated tenant `tenantName` (`tenantId`)"
}Gets billing details for a single tenant
| tenantId required | string The ID of the tenant for which to generate a billing report |
{- "TenantName": "Skyswitch Training",
- "TenantExternalId": 20681,
- "TenantBillingGroup": "string",
- "LicenseAllocation": {
- "cloudmessage-pro": 10
}, - "OrganizationBreakdown": [
- {
- "organizationName": "Tenant Administrators of Skyswitch Training",
- "users": [
- {
- "id": "1WDp8ArAXWYH24C5mqXskl6SXGf2",
- "email": "michael.mcintosh+20681@skyswitch.com",
- "externalId": "michael.mcintosh+20681@skyswitch.com"
}
], - "LicenseType": "cloudmessage-dashmanger",
- "LicenseQuantity": 10,
- "UserQuantity": 10
}
], - "UserBreakdown": [
- {
- "fullName": "John Doe",
- "email": "john.doe@example.com",
- "phoneNumber": "+1234567890",
- "accountType": "User",
- "licenseType": "cloudmessage-pro",
- "organizationName": "Example Organization",
- "organizationExternalId": "example-org-123"
}
], - "UserQuantity": 10
}Gets billing details for all tenants
[- {
- "TenantName": "Skyswitch Training",
- "TenantExternalId": 20681,
- "TenantBillingGroup": "string",
- "LicenseAllocation": {
- "cloudmessage-pro": 10
}, - "OrganizationBreakdown": [
- {
- "organizationName": "Tenant Administrators of Skyswitch Training",
- "users": [
- {
- "id": "1WDp8ArAXWYH24C5mqXskl6SXGf2",
- "email": "michael.mcintosh+20681@skyswitch.com",
- "externalId": "michael.mcintosh+20681@skyswitch.com"
}
], - "LicenseType": "cloudmessage-dashmanger",
- "LicenseQuantity": 10,
- "UserQuantity": 10
}
], - "UserBreakdown": [
- {
- "fullName": "John Doe",
- "email": "john.doe@example.com",
- "phoneNumber": "+1234567890",
- "accountType": "User",
- "licenseType": "cloudmessage-pro",
- "organizationName": "Example Organization",
- "organizationExternalId": "example-org-123"
}
], - "UserQuantity": 10
}
]Behavior of routes in this group is subject to change or removal without changes to the major or minor version number
One or more contact block requests
Array of contact block requests
| action | string Enum: "block" "unblock" Action to take for the provided contact |
| sender | string Sender to block. Can be either an E.164 phone number or a contact id |
| user | string User for which to apply the block operation. Can be either an E.164 phone number or a user id |
object |
[- {
- "action": "block",
- "sender": "string",
- "user": "string",
- "options": {
- "sendStop": true,
- "delete": true
}
}
]POST an array of contact operations. The operation will be batched to the database, and the request will return once the batch is committed.
An array of contact operations to perform
Array of objects |
{- "contacts": [
- {
- "action": "create",
- "id": "string",
- "data": { }
}
]
}{- "status": "string",
- "details": {
- "doneBatches": 0,
- "doneItems": 0,
- "totalBatches": 0,
- "totalItems": 0
}
}This endpoint is used to search for and merge duplicate contacts for the requesting user
Parameters for the duplicate contact search / merge operation
| uid | string The user ID to search for duplicate contacts. If not specified, the authenticated user's ID will be used. |
| execute_merge | boolean Whether to merge the duplicate contacts. If not specified, the default is false. |
{- "uid": "string",
- "execute_merge": true
}{- "duplicates": [
- {
- "phoneNumber": "string",
- "count": 0
}
], - "merged": true,
- "errors": [
- "string"
]
}Do not use these routes. The behavior is subject to change or be removed without notice. See TXBDEV-2858 for more details
Deletes all messages in a conversation, sets the last message to null, and marks the conversation as read and archived
| contact_id required | string The rcontact id to delete messages for |
{- "contact_id": "string"
}Gets SMS-enabled assignments for the current tenant from the SkySwitch PBX endpoint at https://telco.readme.io/v1.0/docs/list-sms-enabled-assignments
{- "status": "pass",
- "time": "2019-08-24T14:15:22Z",
- "version": "string",
- "releaseId": "string",
- "notes": [
- "string"
], - "output": "string",
- "checks": {
- "property1": [
- {
- "componentId": "string",
- "componentType": "string",
- "observedValue": null,
- "observedUnit": "string",
- "status": "pass",
- "affectedEndpoints": [
- "string"
], - "time": "2019-08-24T14:15:22Z",
- "output": "string",
- "links": {
- "property1": "string",
- "property2": "string"
}
}
], - "property2": [
- {
- "componentId": "string",
- "componentType": "string",
- "observedValue": null,
- "observedUnit": "string",
- "status": "pass",
- "affectedEndpoints": [
- "string"
], - "time": "2019-08-24T14:15:22Z",
- "output": "string",
- "links": {
- "property1": "string",
- "property2": "string"
}
}
]
}, - "links": {
- "property1": "string",
- "property2": "string"
}, - "serviceId": "string",
- "description": "string"
}Gets a list of the configured Identity Providers (IdP) for this instance from Firestore.
These providers are currently maintained by manually editing documents in the auth-providers collection
but TXBDEV-1102 will create an in-app management page for IdP
[- {
- "type": "string",
- "backendURL": "string",
- "name": "string",
- "color": "string",
- "showLoginButton": true
}
]Determines whether password login is permitted for the specified e-mail address, based on the user record and system-wide settings. If the user has an external SSO ID, password login is only allowed if the feature 'restrictLocalPasswordLogin' is disabled in app-data/authentication. This same logic is applied for determining self-service passwrod reset eligibility
| email required | string The e-mail address to check |
{- "passwordLoginAllowed": true
}Called by frontend or mobile AuthNZ service's providerLogin function to initiate the SSO workflow for an OAuth Authorization Server
Will almost always be loaded within the scope of a browser popup or mobile InAppBrowser (having location bar and cache disabled)
Expected flow is defined in RFC 6749, section 4.1: Authorization Code Grant
The response from the Authorization Server should result in a GET call to /auth/oauth/:provider/callback
| provider required | string The ID of the provider for which to start the SSO workflow. |
Process the "Authorization Grant" code response from the Authorization Server.
Exchang the "code" for an "Access Token" and optionally fetch the UserInfo for the user
Correlate incoming claims with a user in our database, and issues a signing token for frontend / mobile. If no user exists and "allowJITProvisioning" is enabled, a new user is created and a signing token is issued. If no user exists and "allowJITProvisioning" is disabled, an error is returned
| code | string OAuth "Authorization Grant" code returned by the Authorization Server to be exchanged for an "Access Token" |
| refresh_token | string Deprecated For OAuth2 Authorization Servers that deviate from RFC6749 4.1.2, this parameter can be used in place of the "code" parameter |
<html><body><script> function SAMLPostback() { const ssoResponse={"token":"","error":true}; if (window.webkit && window.webkit.messageHandlers) { return ssoResponse; } else { opener.postMessage(ssoResponse,'undefined'); } window.close(); } SAMLPostback(); </script>REDIRECTING</body></html>
Called by frontend or mobile AuthNZ service's providerLogin function to initiate the SSO workflow for an Identity Provider (IdP)
Will almost always be laoded within the scope of a browser popup or mobile InAppBrowser (having location bar and cache disabled)
The response of a successful authentication from the IdP will be posted to /auth/saml/callback
| ProviderName required | string The name of the provider for which to start the SSO workflow. Must match the Used in |
Receive and process the SAML response given to us by the IdP.
Verify issuer of incoming claims by ensuring the signature can be verified by the IdP's certificate, and that the incoming claims were the result of a request we actually made (i.e. not requested by another party).
Correlate incoming claims with a user in our database, and issues a signing token for frontend / mobile
Claims provided by the IdP in response to a successful authentication
| RelayState | object JSON object which was created by |
| SAMLResponse | string Base64 encoded XML document conatining a SAMLResponse |
<html><body><script> function SAMLPostback() { const ssoResponse={"token":"","error":true}; if (window.webkit && window.webkit.messageHandlers) { return ssoResponse; } else { opener.postMessage(ssoResponse,'undefined'); } window.close(); } SAMLPostback(); </script>REDIRECTING</body></html>
Generates a JWT token for a user with the given user ID.
| userId | string The ID of the user for whom to generate the JWT. |
{- "userId": "string"
}{- "token": "string"
}Relay sends a POST to the URL stored in the relayWebhook attribute of the user for which a message is sent or received.
| MessageID | string The unique message ID |
| ConversationID | string The unique contact ID |
string or Array of strings For Group MMS, this will be an array of strings. For all other messages, this will be a single string. | |
| FromNumber | string The number the message was sent from |
| MessageBody | string The message body |
| MessageDirection | string The message direction (either "in" or "out") |
| TextableUserID | string The user id of the account that sent or received the message |
| TextableOrganizationID | string The unique identifier for the Textable organization |
| ContactName | string The Full Name property of the contact |
| ContactEmail | string The e-mail address of the contact (if available). Not present for group messages. |
| AccessToken | string or null The access token for the user |
| Media | Array of strings |
{- "MessageID": "string",
- "ConversationID": "string",
- "ToNumber": "string",
- "FromNumber": "string",
- "MessageBody": "string",
- "MessageDirection": "string",
- "TextableUserID": "string",
- "TextableOrganizationID": "string",
- "ContactName": "string",
- "ContactEmail": "string",
- "AccessToken": "string",
- "Media": [
- "string"
]
}