REST API
Contents
The REST (also known as HTTP POST) API offers simple secure access to a limited number of features of the Engage and Insight platforms. This API supports a limited number of entry points including subscribe, unsubscribe, sendToContact, sendToGroup, createContactBatch, and createContactBatchAsync.
Services
EndPoint
All services are provided at the following URL:
https://serviceX.soundbite.com/site/c/accountID/campaignName/operation
where:
- serviceX is the assigned System ID
- accountID is the assigned account and is almost always "4" unless instructed otherwise
- campaignName is the client-defined campaign
- operation is one of: subscribe, unsubscribe, sendToContact, sendToGroup
The client’s interaction with services is stateless.
Invocation
Invocation occurs through a JSON-encoded string in the body of the HTTP POST request.
Devices
Phone numbers supplied in E.123 format are processed verbatim. Numbers in other formats are interpreted relative to the Country Code of the account.
For example, +44 20 7267 3113 is in E.123 format and is thus correctly interpreted as a UK phone number even when the Country Code of the account is US.
However, the number 20 7267 3113 is interpreted as +44 20 7267 3113 if the country code of the account is GB, but as +1 207 267 3113 if the country code of the account is US.
Authentication
Engage and Insight currently support two forms of authentication:
- Basic Access Authentication
- Clear-text userid and password headers
Security
You can optionally restrict access to your endpoint to a whitelisted set of IP addresses.
Errors
If the SoundBite service is unavailable an HTTP error 503 will be returned.
Generic Errors are:
- ClientDisabled – Account is currently disabled
- InvalidDevice – Either the Phone Number or Email Address is malformed
- IPNotWhiteListed – IP is not white-listed (only if required)
- NotAPOST – HTTP Interaction must be a POST
- ServicesNotProvisioned – Request requires services that are not provisioned
Entry Points
The following entry points utilize HTTP POST with JSON payload.
Subscribe
URL
https://serviceX.soundbite.com/site/c/4/subscription/subscribe
Input
Org + Contact + Subscription
Sample input (JSON)
{
"owner": {
"internalId": "3000000010"
},
"contact": {
"externalId": "mmonroe@example.com",
"devices": [
{
"externalId": "6172816327",
"attributes": [
{
"name": "countryCode",
"value": "US"
}
]
}
],
"attributes": [
{
"name": "firstName",
"value": "Marilyn"
},
{
"name": "lastName",
"value": "Monroe"
},
{
"name": "company",
"value": "Example Company"
}
]
},
"subscription": {
"channel": "Text",
"subscriptionState": "Pending",
"event": {
"externalId": "LoyaltyOne"
}
}
}
Sample responses (JSON)
Sample success:
{
"data": [
{
"internalId": 12345,
"channel": "Text",
"subscriptionState": "Pending",
"event": {
"externalId": "LoyaltyOne"
}
}
]
}
Sample failure:
{
"errors": [
{
"message": "not authorized"
}
]
}
Errors Returned
UserAlreadySubscribed: user is already subscribed
Notes
- If no SubscriptionState is specified, the SubScriptionState defaults to Pending (in other words, a Double Opt-in).
- Only one device per subscribe invocation is allowed.
- Only externalId (clientID) is supported on the Contact (not internalId). If the request JSON contains no externalId, the first device’s external id will be normalized and assigned to the Contact object.
- Apart from the Subscription state, Insight is not updated.
- It is possible to Subscribe or UnSubscribe even if the contact or device is not already in Insight.
Unsubscribe
URL
https://serviceX.soundbite.com/site/c/4/subscription/unsubscribe
Input
Org + Contact + Subscription
Sample input (JSON)
{
"owner": {
"internalId": "3000000010"
},
"contact": {
"externalId": "mmonroe@example.com",
"devices": [
{
"externalId": "6172816327"
}
]
},
"subscription": {
"channel": "Text",
"event": {
"externalId": "LoyaltyOne"
}
}
}
Sample response (JSON)
Sample success:
{
"data": [
{
"internalId": 12345,
"channel": "Text",
"subscriptionState": " Opted-Out",
"event": {
"externalId": "LoyaltyOne"
}
}
]
}
Sample failure:
{
"errors": [
{
"message": "not authorized"
}
]
}
Errors Returned
UserNotSubscribed – contact (and associated device) is not currently subscribed
SendToContact
URL
https://serviceX.soundbite.com/site/d/SendToContact/v2/
Input
ContactBatch + Contact
Sample input (JSON)
{
"contactBatch": {
"owner": {
"internalId": "3000000010"
},
"campaign": {
"externalId": "test"
},
"context": {
"message": "Good morning ${contact.firstName} your current points are ${contact.other1}"
}
},
"contact": {
"externalId": "mmonroe@example.com",
"devices": [
{
"externalId": "6172816328"
}
],
"attributes": [
{
"name": "firstName",
"value": "Marilyn"
},
{
"name": "lastName",
"value": "Monroe"
},
{
"name": "company",
"value": "ExampleCompany"
},
{
"name": "other1",
"value": "other1"
}
]
}
}
Sample response (JSON)
Sample success:
{
"data": [
{
...
...
"internalId": "3001318578"
}
],
"r4100": ""
}
Sample failure:
{
"data": [
{
"message": "not authorized"
}
]
}
Errors Returned
UserNotSubscribed – user is not currently subscribed UserSuppressed – user is currently suppressed from all outreach
Notes
All Suppression Lists are honored and outreach time is restricted based on Account settings. Dated form-based posts expect the date format to be an xsd:dateTime. For JSON, you can use any valid JavaScript date.
SendToGroup
URL
https://serviceX.soundbite.com/site/c/4/SendToGroup
Input
- specification: Selection criteria for target list
- context: Context for this invocation
- sourceList (List): Insight universe of contacts
- campaign (Campaign): Campaign that forms the template for the outreach
- script (Script): Script to associate with outreach [Optional]
- strategyName (String): Specific strategy with Campaign [Optional]
Sample input (JSON)
{
"specification": {
"event": "Promo",
"optStatus": "Opted-In",
"channelType": "Text",
"attribute1": "",
"attribute2": "",
"attribute3": "",
"attribute4": "",
"attribute5": "",
"attribute6": ""
},
"context": {
"message": "Good morning ${contact.firstName} your current points are ${contact.other1}"
},
"sourceList": {
"type": "Standard",
"baseEntity": {
"internalId": "3000142704"
}
},
"campaign": {
"externalId": "Default",
"owner": {
"internalId": "3000153557",
"type": "Account"
}
},
"script": {
"externalId": "alert",
"owner": {
"internalId": "3000153557",
"type": "Account"
}
},
"strategyName": "Default Single Pass"
}
Sample response (JSON)
Sample success:
{
"data": [
{
"externalId": "Default-sendtogroup-1363720036914",
"campaign": {
"externalId": "Default",
"owner": {
"type": "Account",
"r4100": "",
"internalId": "3000153557",
"entityType": "Org"
},
"r4100": "",
"entityType": "Campaign"
},
"strategyName": "Default Single Pass",
"attributes": [],
"r4100": "",
"internalId": "13D840C647205C7E10A280A7000000000000",
"entityType": "SubCampaign"
}
],
"r4100": ""
}
Sample failure:
{
"errors": [
{
"message": "not authorized"
}
]
}
createContactBatch
URL
https://serviceX.soundbite.com/site/a/4/CampaignManagementService/createContactBatch
Input
ContactBatch + Contacts + Strategy (optional) + script (optional)
Sample input (JSON)
In the following sample JSON, outreachStrategy and script are optional. If they are not specified, the values specified in the campaign are used. If the campaign does not specify an on-demand strategy, the default for the account is used.
[
{
"owner": {
"internalId": "3000000010"
},
"campaign": {
"externalId": "test"
},
"outreachStrategy": {
"externalId": "onDemandText"
},
"script": {
"externalId": "case1_3channel"
},
"context": "Good morning ${contact.firstName} your current points are ${contact.other1}"
},
[{
"externalId": "mmonroe@example.com",
"devices": [
{
"externalId": "6172816328"
}
],
"attributes": [
{
"name": "firstName",
"value": "Marilyn"
},
{
"name": "lastName",
"value": "Monroe"
},
{
"name": "company",
"value": "ExampleCompany"
},
{
"name": "other1",
"value": "other1"
}
]
}]
]
Sample JavaScript
The following JavaScript can be used in an Engage text script to retrieve the message from the JavaScript:
function begin() {
var context = getMessageContext();
sendTextMessage(getProgramName(), resolveTemplate(context));
}
Sample response (JSON)
Sample success:
{
"data": [
{
...
...
"internalId": "3001318578"
}
],
"r4100": ""
}
Sample failure:
{
"errors": [
{
"message": "not authorized",
"r4100": ""
}
],
"r4100": ""
}
Errors Returned
- ARG_INVALID_TYPE – Argument is of invalid type ‘%s’
- ARG_NULL – Invalid Data, argument ‘%s’ must be non-null
- ARG_TOO_LARGE – Invalid Data, argument ‘%s’ exceeds allowed size
- OBJECT_EXISTS – Object ‘%s’ already exists
- OBJECT_NOT_EXISTS – Referenced object ‘%s’ does not exist
Notes
All Suppression Lists will be honored and outreach time is clamped based on Account settings.
Dated form-based posts expect the date format to be an xsd:dateTime. For JSON any valid JavaScript date can be used.
The batch will be released immediately or at ‘startTime’ defined in the batch data. If requested ‘startTime’ doesn’t match to any call pass, the nearest subsequent call pass start interval might be used as new batch start time, if only meats the following criteria:
- subsequent call pass in strategy has settings appropriate for running the batch and time frame criteria which allow to make a call.
- new start time refers to the future but not beyond the defined call pass duration and there’s no earlier call pass defined in the strategy.
createContactBatchAsync
URL
https://serviceX.soundbite.com/site/a/4/CampaignManagementService/createContactBatchAsync
Input
ContactBatch + Contacts + Strategy (optional) + script (optional)
Sample input (JSON)
In the following sample JSON, outreachStrategy and script are optional. If they are not specified, the values specified in the campaign are used. If the campaign does not specify an on-demand strategy, the default for the account is used.
[
{
"owner": {
"internalId": "3000000010"
},
"campaign": {
"externalId": "test"
},
"outreachStrategy": {
"externalId": "onDemandText"
},
"script": {
"externalId": "case1_3channel"
},
"context": "Good morning ${contact.firstName} your current points are ${contact.other1}"
},
[{
"externalId": "mmonroe@example.com",
"devices": [
{
"externalId": "6172816328"
}
],
"attributes": [
{
"name": "firstName",
"value": "Marilyn"
},
{
"name": "lastName",
"value": "Monroe"
},
{
"name": "company",
"value": "ExampleCompany"
},
{
"name": "other1",
"value": "other1"
}
]
}]
]
Sample JavaScript
The following JavaScript can be used in an Engage text script to retrieve the message from the JavaScript:
function begin() {
var context = getMessageContext();
sendTextMessage(getProgramName(), resolveTemplate(context));
}
Sample response (JSON)
Sample success:
{
"data": [
{
...
...
"internalId": "3001318578"
}
],
"r4100": ""
}
Sample failure:
{
"errors": [
{
"message": "not authorized",
"r4100": ""
}
],
"r4100": ""
}
Errors Returned
- ARG_INVALID_TYPE – Argument is of invalid type ‘%s’
- ARG_NULL – Invalid Data, argument ‘%s’ must be non-null
- ARG_TOO_LARGE – Invalid Data, argument ‘%s’ exceeds allowed size
- INTERNAL_ERROR - Internal error while processing the request
- OBJECT_EXISTS – Object ‘%s’ already exists
- OBJECT_NOT_EXISTS – Referenced object ‘%s’ does not exist
Notes
All Suppression Lists will be honored and outreach time is clamped based on Account settings.
Dated form-based posts expect the date format to be an xsd:dateTime. For JSON any valid JavaScript date can be used.
The batch will be released immediately or at ‘startTime’ defined in the batch data. If requested ‘startTime’ doesn’t match to any call pass, the nearest subsequent call pass start interval might be used as new batch start time, if only meats the following criteria:
- subsequent call pass in strategy has settings appropriate for running the batch and time frame criteria which allow to make a call.
- new start time refers to the future but not beyond the defined call pass duration and there’s no earlier call pass defined in the strategy.
showDevice
URL
https://serviceX.soundbite.com/site/a/4/ContactManagementService/showDevice
Input
externalId: Normalized phone number (E.123 format), email, etc carrier: With value ‘lookup’ [Optional]
Sample input (URL)
https://serviceX.soundbite.com/site/a/4/ContactManagementService/showDevice?externalId=+16178759182&carrier=lookup
Sample response (JSON)
Sample success:
{
"data": [
{
"externalId": "+16178759182",
"attributes": [
{
"name": "countryCode",
"value": "US"
},
{
"name": "carrier",
"value": "100335"
}
]
}
],
"r4100": ""
}
Sample failure:
{
"errors": [
{
"message": "not authorized"
}
]
}
authenticate
URL
https://serviceX.soundbite.com/site/d/security/authenticate
Input
Basic Authentication headers containing: user id:password
Sample input (URL)
https://serviceX.soundbite.com/site/d/security/authenticate
Authorization:Basic xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Sample response (JSON)
Sample success:
{
"data": [
{
"externalId": "mkolesnik@soundbite.com",
"firstName": "Maciek",
"lastName": "Kolesnik",
"timeZone": "America/New_York",
"roles": [
"Superuser"
],
"attributes": [
{
"name": "passwordExpirationDate",
"value": "07/04/2013 00:37:16"
},
{
"name": "passwordChangeRequired",
"value": "false"
}
],
"loginEnabled": true,
"r4100": "",
"internalId": "3027523767",
"updatedDate": "May 3, 2013 3:16:30 PM",
"createdBy": {
"r4100": ""
},
"modifiedBy": {
"externalId": "mkolesnik@soundbite.com",
"r4100": ""
}
}
]
}
Sample failure:
Content-Type:text/plain
unauthorized
showJobResultAsString
URL
https://serviceX.soundbite.com/site/c/4/PlatformManagementService/showJobResultAsString
Input
Job
Sample input (JSON)
{
"internalId":"3001370",
"type":"Report"
}
Sample responses (JSON)
Sample success:
{
"data": [{
"stringResult": "<?xml version=\"1.0\" encoding=\"UTF-8\"?><SubCampaignReport webhost=\"guptat500-2.us.int.genesyslab.com\" webport=\"7001\"><Account accountIDNoClass=\"3000000010\" campaignGUID=\"1550B15CEF60005130A0CEB2A00000000000@COM.soundbite.biz.campaign.Campaign\" charset=\"UTF-8\" companyName=\"pease\" contactCategoryArchiveHours=\"720\" countryCode=\"1\" delayRetryContactEnable=\"true\" emailNotificationList=\"test@gmail.com\" isDisabled=\"false\" isMasterAccount=\"false\" isOCSManaged=\"false\" isTrainingPlan=\"false\" locale=\"en_US\" ondemandPassVisible=\"false\" partnerID=\"3000036802@COM.soundbite.biz.partner.Partner\" pid=\"3000000010@COM.soundbite.biz.account.Account\" productVersion=\"13050000\" scriptExpireAfterHours=\"4320\" summaryEmailList=\"test@gmail.com\" terminationStartTime=\"0\" terminationStopTime=\"0\" timezone=\"America/New_York\" tzName=\"America/New_York (GMT-4)\" webSessionTimeout=\"1800\"><Plan agentPortalEnabled=\"true\" createDt=\"1464769765000\" defaultPriority=\"5\" disabled=\"false\" enhancedSkillGroupEnabled=\"true\" featureLevel=\"400\" isPersistent=\"true\" name=\"Corporate\" partnerUID=\"3000036802@COM.soundbite.biz.partner.Partner\" productVersion=\"13050000\" readOnly=\"false\" skillGroupType=\"Agent Portal\" terminationStartTime=\"0\" terminationStopTime=\"86399000\" timestamp=\"1464769848000\" uid=\"3000000000@COM.soundbite.biz.plan.Plan\"/></Account><Partner BAD_LOGIN_MAX=\"6\" BAD_LOGIN_MIN=\"1\" applicationName=\"please\" badLogins=\"6\" createDt=\"1464769792000\" disabled=\"false\" domain=\"soundbite.com\" emailRestrictList=\"\" enterpriseAccountIDNoClass=\"3000000000\" ftpRestrictList=\"\" isPersistent=\"true\" masterAccountLocale=\"en_US\" masterAcctUID=\"3000000000@COM.soundbite.biz.account.Account\" masterUserUID=\"\" maxPassword=\"10\" minPassword=\"7\" name=\"please\" pgpOnly=\"false\" productVersion=\"13050000\" pvtLabelSupp=\"false\" secure=\"false\" stackId=\"1\" superPartnerName=\"please\" superPartnerUID=\"3000036300\" timestamp=\"1464769792000\" uid=\"3000036802@COM.soundbite.biz.partner.Partner\" urlTimeout=\"3\"><PartnerParams><Parameter name=\"showPoweredByLogo\" value=\"false\"/><Parameter name=\"homeURL\" value=\"http://www.soundbite.com\"/><Parameter name=\"stylesheetURL\" value=\"/apps/soundbite.com/style_sheet.css\"/><Parameter name=\"allowRegistration\" value=\"false\"/><Parameter name=\"SupportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"ReportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SalesEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SupportNumber\" value=\"1-877-768-6324\"/><Parameter name=\"costData\" value=\"0\"/></PartnerParams></Partner><Partner BAD_LOGIN_MAX=\"6\" BAD_LOGIN_MIN=\"1\" applicationName=\"please\" badLogins=\"6\" createDt=\"1464769792000\" disabled=\"false\" domain=\"soundbite.com\" emailRestrictList=\"\" enterpriseAccountIDNoClass=\"3000000000\" ftpRestrictList=\"\" isPersistent=\"true\" masterAccountLocale=\"en_US\" masterAcctUID=\"3000000000@COM.soundbite.biz.account.Account\" masterUserUID=\"\" maxPassword=\"10\" minPassword=\"7\" name=\"please\" pgpOnly=\"false\" productVersion=\"13050000\" pvtLabelSupp=\"false\" secure=\"false\" stackId=\"1\" superPartnerName=\"please\" superPartnerUID=\"3000036300\" timestamp=\"1464769792000\" uid=\"3000036802@COM.soundbite.biz.partner.Partner\" urlTimeout=\"3\"><PartnerParams><Parameter name=\"showPoweredByLogo\" value=\"false\"/><Parameter name=\"homeURL\" value=\"http://www.soundbite.com\"/><Parameter name=\"stylesheetURL\" value=\"/apps/soundbite.com/style_sheet.css\"/><Parameter name=\"allowRegistration\" value=\"false\"/><Parameter name=\"SupportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"ReportEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SalesEmail\" value=\"test@soundbite.com\"/><Parameter name=\"SupportNumber\" value=\"1-877-768-6324\"/><Parameter name=\"costData\" value=\"0\"/></PartnerParams></Partner><SubCampaign accountID=\"3000000010@COM.soundbite.biz.account.Account\" acctCallOrderId=\"0\" activeMsgCount=\"0\" archiveDt=\"\" areCallPassesLimited=\"false\" autoManage=\"false\" autoManageFactor=\"0\" autoManageRefreshMargin=\"0\" callPassEndTimeLimit=\"0\" callPassStartTimeLimit=\"0\" callPassTimeLimitTimeZone=\"\" createDt=\"1464793402000\" createProductVersion=\"13050000\" dcNumber=\"\" deleted=\"true\" diagnosticRecordingPercentage=\"0\" dispType=\"\" dynamicScriptGUID=\"1550B18ACFF00056E0A0CEB2A00000000000@COM.soundbite.biz.dynamicscript.DynamicScript\" escalationStrategyVal=\"0\" firstCallPassID=\"0\" guid=\"1550C7D489B0005230A0CEB2F00000000000@COM.soundbite.biz.workflow.SubCampaign\" isPersistent=\"true\" lastCallPassID=\"1\" name=\"alertt\" omitExcluded=\"false\" passSequence=\"Parallel\" priority=\"0\" ruleSetGroupID=\"0\" ruleSetGroupName=\"\" runReportsAfterEachCallPass=\"false\" skillGroupID=\"0\" startPaused=\"false\" state=\"Done\" subCampaignTemplateGUID=\"1550B15CEFD0005150A0CEB2A00000000000@COM.soundbite.biz.workflow.SubCampaignTemplatePB\" summaryEmailAddressList=\"test@gmail.com\" summaryNeeded=\"true\" taskId=\"DYNAMIC_SCRIPT\" tlmDt=\"1464793611000\" uiState=\"Done\"><Campaign accountID=\"3000000010\" campaignID=\"1550B15CEF60005130A0CEB2A00000000000@COM.soundbite.biz.campaign.Campaign\" copyToNewAccount=\"true\" dateLastModified=\"1464770355000\" defaultOnDemandSubCampaignTemplateId=\"\" defaultSkillGroupId=\"0\" description=\"\" group=\"\" isActive=\"true\" isPersistent=\"true\" name=\"Default\" ruleSetGroupID=\"0\"><DateRange isIndefinite=\"true\"><DB><Interval endTime=\"1780297200000\" endTimeTest=\"06/01/2026 07:00:00 GMT\" startTime=\"1464678000000\" startTimeTest=\"05/31/2016 07:00:00 GMT\" timezone=\"America/New_York\"/></DB><UI><Interval endTime=\"1780275600000\" endTimeTest=\"06/01/2026 01:00:00 GMT\" startTime=\"1464739200000\" startTimeTest=\"06/01/2016 00:00:00 GMT\" timezone=\"America/New_York\"/></UI></DateRange></Campaign><DynamicScript accountUID=\"3000000010@COM.soundbite.biz.account.Account\" alertAMLength=\"43\" alertLength=\"43\" callCenterRequired=\"false\" creationDate=\"1464770042359\" description=\"\" expiration=\"1480322042359\" expireAfterHours=\"4320\" guid=\"1550B18ACFF00056E0A0CEB2A00000000000@COM.soundbite.biz.dynamicscript.DynamicScript\" isActive=\"true\" isEmailCapable=\"false\" isInboundCapable=\"false\" isInteractive=\"false\" isNewTemplateInstance=\"false\" isOutboundCapable=\"true\" isReplaceInstance=\"false\" isTemplate=\"false\" isTextMessageCapable=\"false\" isWebCapable=\"false\" lastUse=\"\" name=\"alert\" partnerID=\"3000036802\" persistent=\"true\" productVersion=\"13050000\" sourcePersistentID=\"\" textMessageContactFields=\"\" textMessageSelector=\"\" tlm=\"1464770042000\" user=\"sysops\" version=\"1\"><CustomScript><ResponseGroups/></CustomScript></DynamicScript><ResponseGroupCounts/><CallPasses><CallPass abandonRateDefinition=\"2000\" abandonRatePacing=\"false\" abandonRateTarget=\"50\" absoluteEndDate=\"\" absoluteStartDate=\"\" acceptContactDeviceList=\"0,1,2,3,4,5,6,7,8,9\" acceptType=\"ACCEPT_FIRST_PASS\" agentBridgeCriteria=\"0\" ansMachineHangup=\"true\" callHistorySuppressDays=\"0\" callHistorySuppressType=\"NONE\" callPassChannelType=\"Voice\" callPassType=\"0\" contactEscalating=\"false\" currentTargetOperators=\"0\" delayRetryMinutes=\"0\" deliveryTimeZone=\"local\" displayName=\"Pass 1\" distributionDuration=\"-1\" distributionDurationAverage=\"-1\" fastBridge=\"-1\" filterPersistence=\"false\" followTheSun=\"true\" goal=\"0\" goalAchieved=\"0\" goalType=\"NONE\" humanInitiatedDial=\"false\" isPersistent=\"true\" linesPerAgent=\"0\" maxCPM=\"120000\" maxDaysToWait=\"14\" maxDelayRetryMins=\"60\" pacingModel=\"2\" pacingPriority=\"-1\" passID=\"1\" permittedEndDate=\"1464839940000\" permittedStartDate=\"1464793402000\" requestedCPM=\"12000\" scriptEntryPoint=\"null\" status=\"FINALIZED\" timezoneSource=\"0\" uid=\"3000000200@COM.soundbite.biz.workflow.CallPass\"><DeviceMask><Mask id=\"0\" isSet=\"true\" name=\"DM_NONE\"/><Mask id=\"1\" isSet=\"false\" name=\"DM_EXCLUSIVE_ONLY\"/><Mask id=\"2\" isSet=\"false\" name=\"DM_UNIQUE_ONLY\"/><Mask id=\"4\" isSet=\"false\" name=\"DM_BLOCKED\"/><Mask id=\"8\" isSet=\"false\" name=\"DM_NULL_TZ\"/><Mask id=\"16\" isSet=\"false\" name=\"DM_INTERNATIONAL\"/><Mask id=\"32\" isSet=\"false\" name=\"DM_DNC\"/><Mask id=\"64\" isSet=\"false\" name=\"DM_EXTENSION\"/><Mask id=\"128\" isSet=\"false\" name=\"DM_ENDS_00\"/><Mask id=\"256\" isSet=\"false\" name=\"DM_ENDS_000\"/><Mask id=\"512\" isSet=\"false\" name=\"DM_MOBILE\"/><Mask id=\"1024\" isSet=\"false\" name=\"DM_NOT_SUPPORTED\"/><Mask id=\"2048\" isSet=\"false\" name=\"DM_INVALID_AREA_CODE\"/><Mask id=\"4096\" isSet=\"false\" name=\"DM_INVALID_EXCHANGE\"/><Mask id=\"8192\" isSet=\"false\" name=\"DM_NO_DEVICE\"/><Mask id=\"16384\" isSet=\"false\" name=\"DM_INVALID_DEVICE\"/><Mask id=\"32768\" isSet=\"false\" name=\"DM_LANDLINE\"/><Mask id=\"65536\" isSet=\"false\" name=\"DM_EMAIL\"/><Mask id=\"131072\" isSet=\"false\" name=\"DM_EMAIL_TEXT_MSG\"/><Mask id=\"262144\" isSet=\"false\" name=\"DM_DUPLICATE_ON_CONTACT\"/><Mask id=\"524288\" isSet=\"false\" name=\"DM_DUPLICATE_ON_LIST\"/><Mask id=\"1048576\" isSet=\"false\" name=\"DM_NON_GEOGRAPHIC\"/></DeviceMask><Interval endTime=\"1464825540000\" endTimeTest=\"06/01/2016 23:59:00 GMT\" startTime=\"1464739200000\" startTimeTest=\"06/01/2016 00:00:00 GMT\" timezone=\"GMT\"/><RelativeTime callDays=\"SUNDAY MONDAY TUESDAY WEDNESDAY THURSDAY FRIDAY SATURDAY \" dayOffset=\"0\" endTime=\"23:59\" formattedEndTime=\"11:59 PM\" formattedStartTime=\"12:00 AM\" startTime=\"00:00\" timeZone=\"GMT\"/><ResultCounts><TimeZone endTime=\"1464839999000\" full_name=\"Eastern Standard Time\" java_name=\"America/New_York\" name=\"EST\" offset=\"-4\" raw_gmt_offset=\"-5\" startTime=\"1464753600000\" uid=\"64\"><CompletionStatusGroup BillDuration=\"0\" category=\"FAIL\" count=\"4\" duration=\"0\" id=\"2\" name=\"No_Answer\" passID=\"1\" type=\"2\"/><CompletionStatusGroup BillDuration=\"24000\" category=\"FAIL\" count=\"4\" duration=\"18913\" id=\"4\" name=\"Hangup_Machine\" passID=\"1\" type=\"2\"/><CompletionStatusGroup BillDuration=\"66000\" category=\"SUCCESS\" count=\"2\" duration=\"58560\" id=\"5\" name=\"Non_Machine_Success\" passID=\"1\" type=\"2\"/><CompletionStatusGroup BillDuration=\"90000\" category=\"NONE\" count=\"10\" duration=\"77473\" id=\"18\" name=\"Total_Attempts\" passID=\"1\" type=\"2\"/></TimeZone></ResultCounts></CallPass></CallPasses><ResultCounts><TimeZone endTime=\"1464839999000\" full_name=\"Eastern Standard Time\" java_name=\"America/New_York\" name=\"EST\" offset=\"-4\" raw_gmt_offset=\"-5\" startTime=\"1464753600000\" uid=\"64\"><CompletionStatusGroup category=\"FAIL\" count=\"4\" duration=\"0\" id=\"2\" name=\"No_Answer\"/><CompletionStatusGroup category=\"FAIL\" count=\"4\" duration=\"0\" id=\"4\" name=\"Hangup_Machine\"/><CompletionStatusGroup category=\"SUCCESS\" count=\"2\" duration=\"0\" id=\"5\" name=\"Non_Machine_Success\"/><CompletionStatusGroup category=\"NONE\" count=\"10\" duration=\"0\" id=\"18\" name=\"Total_Attempts\"/><CompletionStatusGroup category=\"NONE\" count=\"10\" duration=\"0\" id=\"19\" name=\"Total_Devices\"/></TimeZone></ResultCounts><DateRange isIndefinite=\"false\"><DB><Interval endTime=\"1464850800000\" endTimeTest=\"06/02/2016 07:00:00 GMT\" startTime=\"1464764400000\" startTimeTest=\"06/01/2016 07:00:00 GMT\" timezone=\"America/New_York\"/></DB><UI><Interval endTime=\"1464795303000\" endTimeTest=\"06/01/2016 15:35:03 GMT\" startTime=\"1464793502000\" startTimeTest=\"06/01/2016 15:05:02 GMT\" timezone=\"America/New_York\"/></UI></DateRange></SubCampaign></SubCampaignReport>"
}]
}
Sample failure:
{
"errors"
":[{"
code ":"
ARG_INVALID_TYPE ","
message ":"
Argument is of invalid type Job Type[List].
","
argumentIndex ":0,"
attributeName ":"
job.type "}
]
}
Errors Returned
Invalid Job type.
Notes
- Supported/implemented job type is 'Report'.
- Only job internal Id is supported.
- Returns job result as string
showAgentStateUsingDevice
URL
https://serviceX.soundbite.com/site/c/4/ContactCenterManagementService/showAgentStateUsingDevice
Input
Job
Sample input (JSON)
{
{
"externalId": "+1 781 897 6789"
},
{
"internalId": "3000000010",
"type": "Account"
}
}
Sample responses (JSON)
Sample success:
{
"data": [{
"currentContactState": {
"contact": {
"externalId": "mmonroe@example.com",
"devices": [{
"externalId": "+1 617 281 6327",
"attributes": [{
"name": "phoneNotSupported",
"value": "false"
}, {
"name": "wireline",
"value": "false"
}, {
"name": "valid",
"value": "true"
}, {
"name": "phoneTollFree",
"value": "false"
}, {
"name": "duplicateList",
"value": "false"
}, {
"name": "phone00",
"value": "false"
}, {
"name": "phoneBlocked",
"value": "false"
}, {
"name": "countryCode",
"value": "1"
}, {
"name": "wireless",
"value": "true"
}, {
"name": "phone000",
"value": "false"
}, {
"name": "stateCode",
"value": "MA"
}, {
"name": "phoneExtension",
"value": "false"
}, {
"name": "duplicateContact",
"value": "false"
}, {
"name": "email",
"value": "false"
}, {
"name": "duplicatePosition",
"value": "false"
}, {
"name": "phoneDNC",
"value": "false"
}, {
"name": "deviceSource",
"value": "FreeFormEntry"
}, {
"name": "timeZone",
"value": "America/New_York"
}],
"r4100": "",
"updatedDate": "2016-06-07T19:41:29.000+0000"
}, null, null, null, null, null, null, null, null, null],
"attributes": [{
"name": "other7",
"value": "other 7"
}, {
"name": "other9",
"value": "other 9"
}, {
"name": "lastName",
"value": "Monroe"
}, {
"name": "other6",
"value": "other 6"
}, {
"name": "other2",
"value": "other 2"
}, {
"name": "firstName",
"value": "Marilyn"
}, {
"name": "contactBatchId",
"value": "3010012118"
}, {
"name": "other5",
"value": "other 5"
}, {
"name": "company",
"value": "Example Company"
}, {
"name": "other1",
"value": "other 1"
}, {
"name": "other8",
"value": "other 8"
}, {
"name": "other4",
"value": "other 4"
}, {
"name": "other3",
"value": "other 3"
}],
"r4100": "",
"internalId": "1606071941293900008",
"updatedDate": "2016-06-07T19:41:29.000+0000"
},
"currentDevice": {
"externalId": "+1 617 281 6327",
"attributes": [{
"name": "phoneNotSupported",
"value": "false"
}, {
"name": "wireline",
"value": "false"
}, {
"name": "valid",
"value": "true"
}, {
"name": "phoneTollFree",
"value": "false"
}, {
"name": "duplicateList",
"value": "false"
}, {
"name": "phone00",
"value": "false"
}, {
"name": "phoneBlocked",
"value": "false"
}, {
"name": "countryCode",
"value": "1"
}, {
"name": "wireless",
"value": "true"
}, {
"name": "phone000",
"value": "false"
}, {
"name": "stateCode",
"value": "MA"
}, {
"name": "phoneExtension",
"value": "false"
}, {
"name": "duplicateContact",
"value": "false"
}, {
"name": "email",
"value": "false"
}, {
"name": "duplicatePosition",
"value": "false"
}, {
"name": "phoneDNC",
"value": "false"
}, {
"name": "deviceSource",
"value": "FreeFormEntry"
}, {
"name": "timeZone",
"value": "America/New_York"
}],
"r4100": "",
"updatedDate": "2016-06-07T19:41:29.000+0000"
},
"localTime": "2016-06-07T15:41:49.154+0000",
"attributes": [{
"name": "callState",
"value": "Connected"
}, {
"name": "contactMode",
"value": "Outbound"
}, {
"name": "detectionStatus",
"value": "Person"
}, {
"name": "holdTime",
"value": "0"
}, {
"name": "scriptState",
"value": "INITIAL"
}, {
"name": "interactionTime",
"value": "6335"
}],
"r4100": ""
},
"currentSubCampaign": {
"externalId": "OnD_ccbte_Jun7_2",
"type": "Outbound",
"campaign": {
"externalId": "ccbtest",
"owner": {
"type": "Account",
"parent": {
"type": "Enterprise",
"r4100": "",
"internalId": "82601550189",
"entityType": "Org"
},
"r4100": "",
"internalId": "3000638298",
"entityType": "Org"
},
"attributes": [{
"name": "startDate",
"value": "2016-05-25"
}, {
"name": "endDate",
"value": "2026-05-25"
}],
"r4100": "",
"r4400": "",
"internalId": "154E90FC1EA006B730A0C069E00000000000",
"entityType": "Campaign"
},
"requestedStartDate": "2016-06-07T09:00:00.000+0000",
"strategyName": "Default Single Pass",
"deviceFilter": {
"attributes": [],
"r4100": ""
},
"attributes": [{
"name": "actualStopTime",
"value": "2016-06-08 01:00:00"
}, {
"name": "autoCreated",
"value": "true"
}, {
"name": "intensity",
"value": "0"
}, {
"name": "diagnosticRecordingEnabled",
"value": "false"
}, {
"name": "diagnosticRecordingPercentage",
"value": "0"
}, {
"name": "startPaused",
"value": "false"
}, {
"name": "executionOrder",
"value": "Parallel"
}, {
"name": "actualStartTime",
"value": "2016-06-07 19:39:03"
}, {
"name": "escalationType",
"value": "None"
}, {
"name": "systemSource",
"value": "0"
}, {
"name": "internalAutoCreated",
"value": "1"
}],
"agentGroups": [{
"externalId": "Portal",
"attributes": [{
"name": "agentRecordingDeleteAllowed",
"value": "true"
}, {
"name": "agentRecordingEnabled",
"value": "true"
}, {
"name": "agentRecordingMinDuration",
"value": "5000"
}, {
"name": "agentRecordingPercentage",
"value": "100"
}, {
"name": "agentRecordingSuspendAllowed",
"value": "true"
}, {
"name": "bypassConsult",
"value": "false"
}, {
"name": "callBackBridgingMode",
"value": "AgentOnly"
}, {
"name": "expireAfterHoursRecording",
"value": "336"
}, {
"name": "externalTransferEnabled",
"value": "true"
}, {
"name": "followUpEnabled",
"value": "true"
}, {
"name": "fourWayConferenceEnabled",
"value": "false"
}, {
"name": "freeformNumberEntryAllowed",
"value": "false"
}, {
"name": "internalTransferEnabled",
"value": "true"
}, {
"name": "manualDialEnabled",
"value": "true"
}, {
"name": "manualExternalTransferEnabled",
"value": "true"
}, {
"name": "previewSkipEnabled",
"value": "true"
}, {
"name": "previewTimerDuration",
"value": "10000"
}, {
"name": "recordDuringConference",
"value": "true"
}, {
"name": "scheduledFollowUpEnabled",
"value": "true"
}, {
"name": "scheduledFollowUpMaxHours",
"value": "24"
}, {
"name": "skipClientIdInputForAgentManaulCall",
"value": "false"
}, {
"name": "supervisorRecordingDeleteAllowed",
"value": "false"
}, {
"name": "targetSpeedOfAnswer",
"value": "2"
}, {
"name": "phoneNumber"
}, {
"name": "enableRemotePacing",
"value": "false"
}, {
"name": "maxBreakTime",
"value": "-1"
}, {
"name": "enableRemoteRouting",
"value": "false"
}, {
"name": "transferTarget",
"value": "false"
}, {
"name": "timeZone"
}, {
"name": "agentGroupType",
"value": "Enhanced"
}, {
"name": "intensity",
"value": "0"
}, {
"name": "agentLoginRequired",
"value": "true"
}],
"configuration": [{
"name": "config.plugin.pacing.name"
}, {
"name": "config.plugin.routing.name"
}, {
"name": "config.timeToLiveSecs",
"value": "0"
}],
"r4100": "",
"r4390": "",
"internalId": "82601830780"
}],
"passes": [{
"name": "Pass 1",
"passId": 1,
"channel": "1",
"contactsPerMinute": 0,
"maxContactsPerMinute": 2000,
"requestedStartTime": "2016-06-07 09:00:00",
"requestedStopTime": "2016-06-07 21:00:00",
"timeZone": "local",
"dayOffset": 0,
"callableDays": [true, true, true, true, true, true, true],
"deviceToAttempt": 2,
"leaveMessage": false,
"callerId": "17818977777",
"busyRetryCount": 0,
"busyRetryFrequency": 5,
"retryCount": 0,
"retryFrequency": 30,
"retryStatuses": ["[0@COM.soundbite.biz.callresults.CompletionStatusGroup:true:2007-10-25 12:24:33.0]"],
"duration": 43200000,
"pacingPriority": 2,
"pacing": "Predictive",
"script": {
"r4100": "",
"internalId": "154DF721A600025EE0A0C069F00000000000"
},
"abandonRatePacing": false,
"abandonRateDefinition": 0,
"abandonRateTarget": 0,
"linesPerAgent": 0,
"humanInitiatedDialing": false,
"attributes": [{
"name": "fastBridge"
}, {
"name": "actualStartTime",
"value": "2016-06-07 19:39:03"
}, {
"name": "agentBridgeCriteria",
"value": "LiveParty"
}, {
"name": "actualStopTime",
"value": "2016-06-07 19:39:03"
}, {
"name": "distributionDurationAvgSec",
"value": "-1"
}, {
"name": "enableAvgDistributionDuration"
}],
"r4100": "",
"devicesToAttempt": "1,2,3,4,5,6,7,8,9,10",
"r5800": "",
"r6200": "",
"internalId": "3012999258"
}, {
"name": "Voice Pass",
"passId": 901,
"channel": "1",
"contactsPerMinute": 200,
"maxContactsPerMinute": 2000,
"requestedStartTime": "2016-06-07 09:00:00",
"requestedStopTime": "2016-06-07 21:00:00",
"timeZone": "local",
"dayOffset": 0,
"callableDays": [true, true, true, true, true, true, true],
"deviceToAttempt": 1,
"leaveMessage": false,
"callerId": "17818977777",
"busyRetryCount": 0,
"busyRetryFrequency": 5,
"retryCount": 0,
"retryFrequency": 30,
"retryStatuses": [],
"duration": 43200000,
"pacingPriority": 10,
"pacing": "History",
"script": {
"r4100": "",
"internalId": "154DF721A600025EE0A0C069F00000000000"
},
"abandonRatePacing": false,
"abandonRateDefinition": 0,
"abandonRateTarget": 0,
"linesPerAgent": 0,
"humanInitiatedDialing": false,
"attributes": [{
"name": "fastBridge"
}, {
"name": "actualStartTime",
"value": "2016-06-07 19:39:08"
}, {
"name": "agentBridgeCriteria",
"value": "LiveParty"
}, {
"name": "actualStopTime",
"value": "2016-06-07 23:59:00"
}, {
"name": "distributionDurationAvgSec",
"value": "-1"
}, {
"name": "enableAvgDistributionDuration"
}],
"r4100": "",
"devicesToAttempt": "1,2,3,4,5,6,7,8,9,10",
"r5800": "",
"r6200": "",
"internalId": "3012999268"
}, {
"name": "Manual Pass",
"passId": 902,
"channel": "6",
"contactsPerMinute": 200,
"maxContactsPerMinute": 2000,
"requestedStartTime": "2016-06-07 09:00:00",
"requestedStopTime": "2016-06-07 21:00:00",
"timeZone": "local",
"dayOffset": 0,
"callableDays": [true, true, true, true, true, true, true],
"deviceToAttempt": 1,
"leaveMessage": false,
"callerId": "17818977777",
"busyRetryCount": 0,
"busyRetryFrequency": 5,
"retryCount": 0,
"retryFrequency": 30,
"retryStatuses": [],
"duration": 43200000,
"pacingPriority": 10,
"pacing": "History",
"script": {
"r4100": "",
"internalId": "154DF721A600025EE0A0C069F00000000000"
},
"abandonRatePacing": false,
"abandonRateDefinition": 0,
"abandonRateTarget": 0,
"linesPerAgent": 0,
"humanInitiatedDialing": false,
"attributes": [{
"name": "fastBridge"
}, {
"name": "actualStartTime",
"value": "2016-06-07 19:39:08"
}, {
"name": "agentBridgeCriteria",
"value": "AllCalls"
}, {
"name": "actualStopTime",
"value": "2016-06-07 23:59:00"
}, {
"name": "distributionDurationAvgSec",
"value": "-1"
}, {
"name": "enableAvgDistributionDuration"
}],
"r4100": "",
"devicesToAttempt": "1,2,3,4,5,6,7,8,9,10",
"r5800": "",
"r6200": "",
"internalId": "3012999278"
}],
"r4100": "",
"context": "",
"r4370": "",
"r4400": "",
"internalId": "1552C6019540124E40A0C069E00000000000",
"entityType": "SubCampaign",
"createdDate": "2016-06-07T19:39:03.000+0000",
"updatedDate": "2016-06-07T19:39:37.000+0000"
},
"currentSubCampaignName": "OnD_ccbte_Jun7_2",
"currentCampaignName": "ccbtest",
"r4100": "",
"r4400": "",
"r4500": ""
}],
"errors": [],
"warnings": [],
"r4100": "",
"r51400": ""
}
3. Invalid request
[
{
"externalId": "+1 781 897 6789"
},
{
"internalId": "30000010",
"type": "Account"
}
]
}
Sample failure:
{
"errors": [{
"code": "OBJECT_NOT_EXISTS",
"message": "Referenced object Org[Account=300001/null] does not exist."
}]
}
Errors Returned
Account not exists
Notes
- Only those devices currently Direct Connected will be searched.
- Unlike most show services, this service is not by unique key and the supplied device may not be found due to a timing issue or invalid input. In this case OBJECT_NOT_EXISTS will not be returned and the result will be empty.
- The supplied Org must be either a valid Account or Enterprise.