Introduction

The Compliance API provides support for features such as Do Not Call List management and access to call recordings.

See the LiveVox API Overview for a general description of how to interact with the API.

Prerequisites

  • To obtain a valid Session ID, you must have successfully logged into the LiveVox platform. See Generating a Session ID for more information.
  • To obtain an Access Token that is used in API requests, you must have an active subscription to the Configuration API. See Access Tokens for details.
  • All messages in this API may be subject to rate limits and other restrictions.

User Roles

Unless otherwise specified in this documentation, for a user to be able to access any data through the Compliance API, the user must belong to the Sysadmin, Superuser, or Manager role. For all "DNC List Management" API methods other than "Is Blocked", users belonging to the Manager role must also have the "Edit DNC Lists" (or "Access to DNC") Optional Power configured. These roles are defined in the LiveVox Configuration Manager and correspond to users who can access LiveVox configuration data through the LiveVox user interfaces.

Within a session generated by an Agent, the following methods of the Compliance API may be accessed. Attempts to access any other API method of the Compliance API will return a 403 Forbidden response.

  • Read DNC
  • Create DNC
  • Is Blocked
  • List DNC Entries
  • Get DNC List Info
  • Find Matching DNC
  • Zip Area Mismatch

Do Not Call Rules

Do Not Call (DNC) lists are a crucial component for supporting client compliance regulations. A DNC entry effectively prohibits calling. These prohibitions can be defined in a number of ways:

  • Based on phone number
  • Based on account number
  • Based on phone number and account number
  • Based on zip code

These entries can also be defined as being either permanent or a daily restriction. Daily restrictions are cleared nightly. DNC entries can be associated with a particular Service, or they can be associated with the Client. For the latter type, the DNC entry will apply to all the Services for that Client.

The API does not check the Client-level DNC configuration in order to disallow particular types of DNC entries from being created. For example, a Client may be configured so that only Permanent DNC entries can be created through the DNC Editor in the LiveVox Portal. This configuration exists mainly so that users do not have to see configuration screens that are not relevant to way their business operates. In this example, the API will still support the ability to create Daily DNC entries for this Client. Therefore, it is the responsibility of the API consumer to comply with the requirements of the business.

A major scenario where DNC rules apply is during preview dialing. At that point, an agent may need to determine if a number should be called (see IsBlocked). To clarify the behavior of this, the following example is provided.

The following table provides an example DNC configuration. Blank cells indicate no value is present.

Client ID and DNC Type are not relevant to the following example.

DNC IDService IDPhone NumberAccount NumberZip Code
11234152257000

24566173432000A12345
3
2016668000A12345
4
5034441000

5


94110
6

A6789

The IsBlocked requires a Service as input since all dialing is associated with a Service.

IsBlocked InputResultsApplicable DNC EntriesNotes

phone = 4152257000,
service = 123

true1
phone = 5034441000,
service = 123
true4The DNC entry for this phone number is not assigned to a particular Service so it applies to every Service for the Client.
phone = 3133335000,
service = 123
false-This phone number is not present in the DNC configuration.
phone = 6173432000,
account = A12345,
service = 456
true2
phone = 4152257000,
account = A12345,
service = 123
true1The DNC entry is not associated with a particular account, so the phone number will be blocked regardless of the account number used in the request.
phone = 7024441000,
account = A6789,
service = 123
true6The DNC entry is not associated with a particular phone number, so the account will be blocked for any phone number used in the request.
phone = 4152257000,
account = A12345,
service = 456
false-There is no DNC entry for this phone number for this particular Service, nor is there one for the Client.
phone = 2016668000,
account = A6789,
service = 789
false-While there is a Client-level DNC entry that contains this phone number (#3), it is associated with a different account number and only applies to that account.
phone = 6173432000,
service = 456
false-While there is a Client-level DNC entry that contains this phone number (#2), it is associated with an account number and only applies to that account.
account = A12345,
service = 456
false-
zip = 94110,
service = 456
true5

Wildcard Support

It is possible for DNC entries on the LiveVox platform to include wildcards, such as a phone number entry represented as 209*******. Such an entry would instruct the LiveVox platform to block all calls to the (209) area code. This is a "legacy" feature. The proper way to have the LiveVox platform block dialing to entire area codes is to use Dialing Profiles. This instructs the LiveVox dialer to block calls to the area code, at dial-time.

The DNC API method IsBlocked does not support wildcards directly. Here is an example. Let's say that there is a single entry in a Client's Daily DNC list, which is 209*******. If you use the IsBlocked method and pass in the string 2093334545, the response will be false because that entry is not in the DNC list, and the DNC API IsBlocked method does not take wildcards into account. However, if you passed the string 209****** into the IsBlocked method, it would return true.

API Methods

Compliance Check

The Compliance Check methods of the Compliance API provide the ability to perform certain compliance checks in real-time. Currently, there is an IsBlocked method that allows you to determine if a particular phone number, account number, phone + account, or zip code should be blocked based on your DNC Lists; and a ZipAreaMatch method which allows you to determine if an area code and zip code are a match.

Is Blocked

Description: Determines if the provided information is covered by one or more DNC entries. If so, the number is blocked and cannot be called. This will check all applicable DNC lists. See DNC Rules for more information and examples.

In addition to checking the DNC lists, the Is Blocked method will also check the LiveVox ACCOUNT table to check if the Do Not Dial and Do Not Dial Daily flags are set for the Account. The flags may be set by an Agent through their agent desktop.

Method: GET /compliance/complianceCheck/isBlocked?[client={clientId}]&service={serviceId}&phone={phone}[&account={account}&zip={zip}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoIdentifies which Client the query pertains to.
serviceserviceIdInteger (ID)YesIf a Service ID is provided, the DNC entries for this particular Service are checked in addition to the "generic" Client ones.
phonephoneStringNo*

At least one of phone, account, or zip must be present for the request to be valid. See DNC Rules for more information.

accountaccountString
zipzipString

Body:

None

Response Code: 200 OK

Body:

Key or AttributeTypeMandatory?Description
resultBooleanYesIndicates whether or not the call should be blocked. See DNC Rules for more information.
#Request (JSON)
Get /compliance/complianceCheck/isBlocked?client=93119&service=93126&phone=4155553761&account=QA1619323260000&Zip=94114
Host: localhost.com
Content-Type: application/json
Accept: application/json
   
#Response
200 OK
Content-Type: application/json
 
{
  "result": false
}
CODE

ZipAreaMatch

Description:  Checks to see if a zip code and area code match, a match is determined based on the type selected.

Method: POST /compliance/complianceCheck/zipAreaMatch

Parameters:

None

Body(JSON):

KeyTypeMandatory?Description
areaCodeStringYesThe area code to be compared.
typeEnumYes

Determines what is classified as a "match", when the zip and area code match a true is returned, otherwise a false is obtained. Possible values and definitions are:

  • DIAL_TIME : Returns a true if the area code corresponds to the zip code within which it is normally located (e.g. the “917” area code is normally located in New York City).
  • DIAL_TIME_OPTIMIZED : Returns a true if, as in the 'Dial-time' option, the area code corresponds to the zip code within which it is normally located OR if the area code and zip code for a record DO NOT correspond to each other but fall into the same time zone (i.e. the zip code provided is 30075 (Roswell, GA) but the phone number has a 917 area code (NYC, NY) a true would be returned because they are both in the ET time zone.).
zipCodeStringYesThe zip code to be compared.

Response Code: 200 OK

Body:

Key or AttributeTypeMandatory?Description
resultbooleanYesReturns a true if the zip and area code "match", otherwise a false is returned.

Zip Code and Area Code Match

#Request (JSON)
POST /compliance/complianceCheck/zipAreaMatchs
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{
"areaCode": 415,
"zipCode": 94111,
"type": "DIAL_TIME"
}

#Response
200 OK
Content-Type: application/json
 
{"result": true}
CODE

Zip Code and Area Code Don't Match

#Request (JSON)
POST /compliance/complianceCheck/zipAreaMatchs
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{
"areaCode": 415,
"zipCode": 10010,
"type": "DIAL_TIME"
}

#Response
200 OK
Content-Type: application/json
 
{"result": false}
CODE

Dialing Profiles

The Dialing Profile methods of the Compliance API provide the ability to List, Get List Info, Read, Create, Update, and Delete Dialing Profiles for a Client. Dialing Profiles describe the hours and/or days of the week that it is OK to dial consumers in a particular area code, state, or country.

Create Dialing Policy

Description: Adds a policy to an existing Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: PUT /compliance/dialingProfiles/{id}/policies

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)YesThe ID of the Dialing Profile to be updated.

Body(JSON):

KeyTypeMandatory?Description
dayOfWeekEnumYes

The day of the week the policy will restrict, possible values are:

  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY
  • WEEKDAY
  • WEEKEND
  • ALL
doNotDialBooleanNoIf set to true any numbers matching the policy will not be dialed.
doNotLeaveMessageBooleanNoif set to true any numbers matching the policy will not have messages left.
stateEnumNo*

The state where the policy applies, possible values include any state two-letter abbreviation.

areaCodeStringThe area code where the policy applies.
startTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not start before this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.
endTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not be allowed after this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.

A state or area code or both must be included in the request.

Response Code: 201 Created

Body:

KeyTypeMandatory?Description
idInteger (ID)YesThe ID of the newly created Dialing Policy.

Add a policy to an existing Dialing Profile

#Request (JSON)
PUT /compliance/dialingProfiles/12670/policies
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{"dayOfWeek":"THURSDAY",
"doNotDial":"false",
"doNotLeaveMessage":"true",
"state":null,
"areaCode":"408",
"startTime":null,
"endTime":null}}

#Response
201 Created
Content-Type: application/json
 
{"id": 234565}
CODE

Create Dialing Profiles

Description: Creates a new Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: POST /compliance/dialingProfiles[?client={client}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoThe ID of the Client under which the Dialing Profile will be created.

Body:

KeyTypeMandatory?Description
nameStringYesName of the Dialing Profile that will be created.
descriptionStringNoDescription of the Dialing Profile that will be created.
policyArrayNo

An array of policies will be created under the Dialing Profile.

KeyTypeMandatory?Description
dayOfWeekEnumYes

The day of the week the policy will restrict, possible values are:

  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY
  • WEEKDAY
  • WEEKEND
  • ALL
doNotDialBooleanNoIf set to true any numbers matching the policy will not be dialed.
doNotLeaveMessageBooleanNoif set to true any numbers matching the policy will not have messages left.
countryStringNoThe name of the country where the policy applies.
stateEnumNo*

The state where the policy applies, possible values include any state two-letter abbreviation.

areaCodeStringThe area code where the policy applies.
startTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not start before this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.
endTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not be allowed after this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.

A state or area code or both must be included in the request.

Response Code: 201 Created

Body:

KeyTypeMandatory?Description
idInteger (ID)YesThe ID of the newly created Dialing Profile.

Create a new Dialing Profile

#Request (JSON)
POST /compliance/dialingProfiles?client=4199
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{
   "name": "For Documentation",
   "description": "used for documentation",
   "policy":    [
            {
         "dayOfWeek": "WEEKDAY",
         "doNotDial": "false",
         "doNotLeaveMessage": "true",
         "country": null,
         "state": "KS",
         "areaCode": null,
         "startTime": null,
         "endTime": null
      },
            {
         "dayOfWeek": "ALL",
         "doNotDial": "true",
         "doNotLeaveMessage": "true",
         "country": null,
         "state": null,
         "areaCode": "410",
         "startTime": null,
         "endTime": null
      },
            {
         "dayOfWeek": "MONDAY",
         "doNotDial": "false",
         "doNotLeaveMessage": "false",
         "country": null,
         "state": "CA",
         "areaCode": "415",
         "startTime": "1391184000",
         "endTime": "1391234400"
      }
   ]
}
 
#Response (JSON)
201 Created
Content-Type: application/json
 
{"id": 12670}
CODE

Request to create a new Dialing Policy with state and area code mismatch

#Request (JSON)
POST /compliance/dialingProfiles?client=4199
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{
   "name": "For Documentation",
   "description": "used for documentation",
   "policy":    [
            {
         "dayOfWeek": "WEEKDAY",
         "doNotDial": "false",
         "doNotLeaveMessage": "true",
         "country": null,
         "state": "KS",
         "areaCode": 415,
         "startTime": null,
         "endTime": null
      }
   ]
}
 
#Response (JSON)
400 Bad Request
Content-Type: application/json
 
{
   "errorCode": 202,
   "errorMessage": "Area code/state mismatch"
}
CODE

Delete Dialing Policy

DescriptionRemoves an existing policy from a Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: DELETE /compliance/dialingProfiles/{id}/policies/{policy}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)YesThe ID of the Dialing Profile to be updated.
policypolicyIdInteger (ID)Yes

The ID of the policy to be removed.

Body:

None

Response Code: 204 No Content

Body:

None

Remove an existing policy from a Dialing Profile

#Request (JSON)
DELETE /compliance/dialingProfiles/12670/policies/36922
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
#Response
204 No Content
CODE

Delete Dialing Profiles

Description: Deletes an existing Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: DELETE /compliance/dialingProfiles/{id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)YesThe ID of the Dialing Profile to be deleted.

Body:

None

Response Code: 204 No Content

Body:

None

Delete an existing Dialing Profile

#Request
DELETE /compliance/dialingProfiles/12612
Host: localhost.com
Content-Type: application/json
Accept: application/json  

#Response
204 No Content
CODE

Attempt to delete a Dialing Profile that does not exist

#Request
DELETE /compliance/dialingProfiles/12612
Host: localhost.com
Content-Type: application/json
Accept: application/json  

#Response
404 Not Found
CODE

Get Dialing Profile List Info

Description: Gets metadata concerning a list of Dialing Profiles for a Client. Any system-wide Dialing Profiles that are available for all Clients will also be considered.

User Roles: Sysadmin, Superuser, or IT User

Method: GET /compliance/dialingProfiles/info[?client={clientId}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoIdentifies which Client the list pertains to

Body:

None

Response Code: 200 OK

Body:

Key or AttributeTypeMandatory?Description
sizeIntegerYesTotal number of entries in the list
lastModifiedDateTimeNoThe last date & time that the list was updated. This information might not be available. This is formatted according to the definition of dateTime in the XML Schema specification. For JSON responses, it is represented as the number of milliseconds since midnight on January 1, 1970 (GMT).

Get the metadata for the list of Dialing Profiles configured for a client.

#Request (JSON)
GET /compliance/dialingProfiles/info/client=12345
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response (JSON)
200 OK
Content-Type: application/json

{
   "size": 7,
   "lastModified": 1372182992000
}
CODE

List Dialing Profiles

Description: Lists Dialing Profiles configured for a Client. Any system-wide Dialing Profiles that are available for all Clients will also be listed.

User Roles: Sysadmin, Superuser, or IT User

Method: GET /compliance/dialingProfiles?[client={clientId}&]count={n}&offset={n}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoIdentifies which Client the list pertains to
countnIntegerYesSpecifies the number of items to return in the list. There is a hard cap of 1000 items.
offsetnIntegerYesRequired for pagination. Specifies the offset from 0, based on the count, to start listing from.

Body:

None

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
dialingProfileArrayNo

A container for a page of Dialing Profile entries. The page size is controlled via count and offset in the request.

KeyTypeMandatoryDescription
idInteger (ID)YesInternal LiveVox ID of the Dialing Profile.
nameStringYesDisplay name of the Dialing Profile.
descriptionStringNoDescription of the Dialing Profile.
nextURINoA URI for the next page of entries. If next is not present, or blank, then there are no pages after this one.

Get the list of Dialing Profiles configured for a Client.

#Request (JSON)
GET /compliance/dialingProfiles?count=10&client=4199&offset=0
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response (JSON)
200 OK
Content-Type: application/json

{
	"dialingProfile":    [
            {
         "id": 321,
         "name": "LV_Standard_SDR_A",
         "description": "Standard US State Dialing Restrictions, restricts TX, NV, PA."
      },  
            {
         "id": 5589,
         "name": "77",
         "description": null
      },
            {
         "id": 7850,
         "name": "Canada",
         "description": null
      },
            {
         "id": 10592,
         "name": "QA_TEST",
         "description": null
      },
            {
         "id": 4413,
         "name": "Test",
         "description": null
      },
            {
         "id": 2441,
         "name": "Updated Restrictions",
         "description": "Based on recent analysis"
      }
   ],
   "next": null
}
CODE

Read Dialing Profile

Description: Gets information about a Dialing Profile resource.

User Roles: Sysadmin, Superuser, or IT User

Method: GET /compliance/dialingProfiles/{id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)Yes

The ID of the Dialing Profile resource to read.

You can read any Dialing Profile configured for the Client, as well as any system-wide Dialing Profiles available to all Clients.

Body:

None

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
clientIdInteger (ID)NoThe Client the Dialing Profile belongs to. If not included in the response, it means the Dialing Profile is a system-wide one that is available to all Clients.
nameStringYesDisplay name of the Dialing Profile.
descriptionStringYesDescription of the Dialing Profile. Could be null.
clientDefaultBooleanYesIf true, indicates that this Dialing Profile is configured as the default Dialing Profile for the Client.
serviceArrayYes

An array of zero or more Services to which the Dialing Profile is assigned as the default.

KeyTypeMandatory?Description
idInteger (ID)YesThe LiveVox ID of the Service
policyArrayYes

An array of zero or more policies that are configured for a Dialing Profile.

KeyTypeMandatory?Description
dayofWeekEnumYes

The day(s) of the week when this policy is in effect. Possible values are:

  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY
  • WEEKDAY
  • WEEKEND
  • ALL
doNotDialBooleanYesIf set to true, for the region and day(s) defined, contacts will not be attempted.
doNotLeaveMessageBooleanYesIf set to true, for the region and day(s) defined, if dialing is allowed, messages will not be left.
countryStringNoThe name of the country where the policy applies.
stateStringNoThe two-letter code for the state where the policy applies. If this is not included in the response, then the policy is in effect for the entire country specified in the country parameter.
areaCodeStringNoThe area code for which the policy applies. If this is not included in the response, then the policy is in effect for all area codes of the state specified in the state parameter.
startTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not start before this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.
endTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not be allowed after this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.

Read the details of a Dialing Profile

#Request (JSON)
GET /compliance/dialingProfiles/7850
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response (JSON)
200 OK
Content-Type: application/json

{
   "service":    [
      {"id": 38184},
      {"id": 42251},
      {"id": 35578},
      {"id": 35576},
      {"id": 35577}
   ],
   "policy":    [
            {
         "dayOfWeek": "MONDAY",
         "doNotDial": false,
         "doNotLeaveMessage": true,
         "country": "CANADA",
         "state": "NU",
         "areaCode": null,
         "startTime": null,
         "endTime": null
      },
            {
         "dayOfWeek": "TUESDAY",
         "doNotDial": false,
         "doNotLeaveMessage": true,
         "country": "CANADA",
         "state": "NT",
         "areaCode": null,
         "startTime": null,
         "endTime": null
      },
...
            {
         "dayOfWeek": "MONDAY",
         "doNotDial": false,
         "doNotLeaveMessage": true,
         "country": "CANADA",
         "state": "SK",
         "areaCode": "306",
         "startTime": 50400000,
         "endTime": 93600000
      }
   ],
   "clientId": 4199,
   "name": "Canada",
   "description": null,
   "clientDefault": false
}
CODE

Update Dialing Policy

DescriptionUpdates an existing policy of a Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: PUT /compliance/dialingProfiles/{id}/policies/{policy}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)YesThe ID of the Dialing Profile to be updated.
policypolicyIdInteger (ID)Yes

The ID of the policy to be updated.

Body(JSON):

KeyTypeMandatory?Description
dayOfWeekEnumNo

The day of the week the policy will restrict, possible values are:

  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY
  • WEEKDAY
  • WEEKEND
  • ALL
doNotDialBooleanNoIf set to true any numbers matching the policy will not be dialed.
doNotLeaveMessageBooleanNoif set to true any numbers matching the policy will not have messages left.
stateEnumNo

The state where the policy applies, possible values include any state two-letter abbreviation.

areaCodeStringNoThe area code where the policy applies.
startTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not start before this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.
endTimeTimeNoFor the region and day(s) defined, if dialing is allowed, contacts will not be allowed after this time. If this is not included in the response, the policy is in effect for the entire day(s) defined in dayOfWeek.
clearAreaCodeBooleanNoRemoves any defined areaCode so the policy applies to the entire state.
clearTimeRangeBooleanNoRemoves any defined startTime and endTime so the policy applies to the entire day.

Response Code: 204 No Content

Body:

None

Update an existing policy of a Dialing Profile

#Request (JSON)
PUT /compliance/dialingProfiles/12670/policies/36922
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{"dayOfWeek":null,
"doNotDial":null,
"doNotLeaveMessage":null,
"state":null,
"areaCode":"408",
"startTime":null,
"endTime":null,
"clearAreaCode":null,
"clearTimeRange":null}}
 
#Response
204 No Content
CODE

Update Dialing Profile

DescriptionUpdates the name and description of a Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: PUT /compliance/dialingProfiles/{id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)Yes

The ID of the Dialing Profile to be updated.

Body(JSON):

KeyTypeMandatory?Description
nameStringNoThe new name of the Dialing Profile.

description

StringNoThe new description of the Dialing Profile.

Response Code: 204 No Content

Body:

None

Update an existing Dialing Profile

#Request (JSON)
PUT /compliance/dialingProfiles/12670
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
{"name":"Docs","description":"testing"}
 
#Response
204 No Content
CODE

Update Dialing Profile Add Service

Description: Adds a Service to an existing Dialing Profile.

User Roles: Sysadmin, Superuser,  or IT User

Method: PUT /compliance/dialingProfiles/{id}/services/{service}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)YesThe ID of the Dialing Profile to be updated.
serviceserviceIdInteger (ID)YesThe ID of the Service to be added to the Dialing Profile.

Body:

None

 Response Code: 204 No Content

Body:

None

Add a Skill to a Dialing Profile

#Request (JSON)
PUT /compliance/dialingProfiles/12670/services/40789
Host: localhost.com
Content-Type: application/json
Accept: application/json

#Response
204 No Content
CODE

Update Dialing Profile Remove Service

DescriptionRemoves a Service from an existing Dialing Profile.

User Roles: Sysadmin, Superuser, or IT User

Method: DELETE /compliance/dialingProfiles/{id}/services/{service}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
idprofileIdInteger (ID)YesThe ID of the Dialing Profile to be updated.
serviceserviceIdInteger (ID)Yes

The ID of the Service to be removed.

Body:

None

Response Code: 204 No Content

Body:

None

Remove a Skill from a Dialing Profile

#Request (JSON)
DELETE /compliance/dialingProfiles/12670/services/40789
Host: localhost.com
Content-Type: application/json
Accept: application/json
 
#Response
204 No Content
CODE

Dialtime DNC

Currently the Compliance API supports Create, Create Multiple, Delete, Find Matching, List, Read, Update, and Get Dialtime DNC List Info methods for managing the Dialtime DNC settings.

The Phone DNC Type setting in config will determine which DNC methods you'll be allowed to use; if you use the wrong ones the API will return a 400 Bad Request error stating that you are not configured to use the particular method. If the Phone DNC Type setting is set to "Legacy DNC" you'll be able to use any method under the DNC category in the documentation, if you have it set to "Dial-Time Phone DNC" you'll only be able to use the methods under the Dialtime DNC category. By using the Is Legacy DNC Enabled method you can check what your Phone DNC Type is set to and make sure you're using the right methods.

Changing this setting will affect the DNC list your site checks for dialing, we don't recommend changing this setting just to test the APIs.

Create Dialtime DNC

Description:  Creates a Dialtime DNC entry.

Method: POST /compliance/dialtime/dnc

Parameters:

None

Body:

KeyTypeMandatory?Description
phoneStringYesThe phone number to create the Dialtime DNC entry for.
contactGroupIdInteger (ID)NoThe contact group to be assigned to the DNC entry.
expirationDatedateTimeNoThe expiration date of the Dialtime DNC entry.

Response Code: 201 Created

Body:

Key

Type

Mandatory?

Description

idInteger (ID)YesThe ID for the created dialtime entry.

Create a DNC phone entry for the client at dial time

#Request (JSON)
POST /compliance/dialtime/dnc
Host: localhost.com
Content-Type: application/json
Accept: application/json

{
   "phone": "4085553745",
   "expirationDate": "1520035349000"
}

#Response (JSON)
201 Created
Content-Type: application/json

{"id":21945272}
CODE

Create Multiple Dialtime DNC

Description: Creates multiplie dialtime DNC entries in a single request.

If any invalid records are included in the request, then 202 error will be returned and the invalid records will be listed in the response; any record which is not listed in the response will be processed successfully.

Method: POST /compliance/dialtime/dnc/bulk

Parameters:

None

Body:

Key

Type

Mandatory?

Description

dncEntriesArrayYes

An array of Dialtime DNC entries to create/update.

KeyTypeMandatory?Description
phoneStringYesThe phone number to create the Dialtime DNC entry for.
contactGroupIdInteger (ID)NoThe contact group to be assigned to the DNC entry.
expirationDatedateTimeNoThe expiration date of the Dialtime DNC entry.

Response Code: 200 OK

Body:

Key

Type

Mandatory?

Description

processedCountIntegerYesNumber of records processed

Create Multiple Dialtime DNC Entries

#Request (JSON)
POST /compliance/dialtime/dnc/bulk
Host: localhost.com
Content-Type: application/json
Accept: application/json

{
  "dncEntries": [
    {
      "phone": "4155553734",
      "contactGroupId": "1320"
    },
    {
      "phone": "4155553767",
      "contactGroupId": "1320",
      "expirationDate": "1519957965000"
    }
  ]
}

#Response (JSON)
200 OK
Content-Type: application/json

{"processedCount": 2}
CODE

Create Multiple Dialtime DNC Entries With Invalid Contact Group

#Request (JSON)
POST /compliance/dialtime/dnc/bulk
Host: localhost.com
Content-Type: application/json
Accept: application/json
  
{
  "dncEntries": [
    {
      "phone": "6503517497",
      "contactGroupId": 4962,
      "expirationDate": "2021-04-20T14:24:47.847Z"
    },
    {
      "phone": "6503517485",
      "contactGroupId": 4967
    },
    {
      "phone": "6505153873",
      "contactGroupId": 4968,
      "expirationDate": "2021-04-24T18:36:23.399Z"
    }
  ]
}
  
#Response (JSON)
400 Bad Request
Content-Type: application/json
  
{
  "code": 202,
  "message": "Record 3: , Contact Group is not valid.  Processed DNC filename: O29y5wrP totally in 1 batches, no of lines processed: 3."
}
CODE

Delete Dialtime DNC

Description:  Deletes a Dialtime DNC entry.

Method: DELETE /compliance/dialtime/dnc/{dncId}

Parameters:

dncIddncIdIntegerYesSpecifies the dialtime DNC entry id to be deleted.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 204 No Content

Body:

None

Delete an Existing Dialtime DNC Entry

#Request
DELETE /compliance/dialtime/dnc/21945272
Host: localhost.com
Content-Type: application/json
Accept: application/json  

#Response
204 No Content
CODE

Find Matching Dialtime DNC

Description: Finds a matching Dialtime DNC entry.

Method: POST /compliance/dialtime/dnc/search?offset={n}&count={n}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
countnIntegerYesSpecifies the number of items to return in the list. There is a hard cap of 1000 items.
offsetnIntegerYesSpecifies the offset from 0, based on the count, to start listing from.


Body:

Key

Type

Mandatory?

Description

filterObjectYes

DNC entries to create with the following structure

KeyTypeMandatory?Description
phoneStringNoThe phone number to search the Dialtime DNC for.
contactGroupIdInteger (ID)NoThe Contact Group ID to search

Response Code: 200 OK

Body:

Key

Type

Mandatory?

Description

dncEntriesArrayYes

An array of Dialtime DNC entries that match the filter criteria in the request.

KeyTypeMandatory?Description
idInteger (ID)YesThe ID for the entry.
phoneStringYesThe phone number of the Dialtime DNC entry.
contactGroupIdInteger (ID)NoThe Contact Group ID of the Dialtime DNC entry.
expirationDatedateTimeNoThe expiration date of the Dialtime DNC entry.

Find Matching Dialtime DNC entries

#Request (JSON)
GET /compliance/dialtime/dnc/search?offset=0&count=10
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

{
   "phone": "4155553734"
}

#Response
200 OK
Content-Type: application/json
{
  "dncEntries": [
    {
      "phone": "4155553734",
      "contactGroupId": 1320,
      "id": 21945273
    },
    {
      "phone": "4155553734",
      "contactGroupId": 1321,
      "id": 21945275
    }
  ]
}
CODE

Get Dialtime DNC List Info

Description:  Gets metadata for a list of Dialtime DNC entries.

Method: GET /compliance/dialtime/dnc/info 

Parameters:

None

Body:

None

Response Code: 200 OK

Body:


Key

Type

Mandatory?

Description

sizeIntegerYesThe number of Dialtime DNC entries currently loaded for that Client.

Get the metadata for a list of Dialtime DNC Entries

#Request (JSON)
GET /compliance/dialtime/dnc/info
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response (JSON)
200 OK
Content-Type: application/json

{"size": 6}
CODE

List Dialtime DNC

Description: Lists Dialtime DNC entries.

Method: GET /compliance/dialtime/dnc?count={n}&offset={n}

Parameters:

countnIntegerYesSpecifies the number of items to return in the list. There is a hard cap on 1000 items.
offsetnIntegerYesRequired for pagination. Specifies the offset from 0, based on the count parameter, to start listing from.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
nextURIYesA URI for the next page of entries. If next is not present, or blank, then there are no pages after this one.
dncEntriesArrayYes

A container for a page of Dialtime DNC entries. The page size is controlled via count and offset in the request.

KeyTypeMandatory?Description
idInteger (ID)YesThe ID for the entry.
phoneStringYesThe phone number of the Dialtime DNC entry.
contactGroupIdInteger (ID)NoThe Contact Group ID of the Dialtime entries.
expirationDatedateTimeNoThe expiration date of the Dialtime DNC entry.

Get a List of Dialtime DNC Entries

#Request (JSON)
GET /compliance/dialtime/dnc?count=10&offset=0
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response
200 OK
Content-Type: application/json

{"dncEntries": [
      {
      "phone": "4155553734",
      "contactGroupId": 1320,
      "id": 21945273
   },
      {
      "phone": "4155553767",
      "contactGroupId": 1320,
      "expirationDate": 1519880400000,
      "id": 21945274
   },
...
      {
      "phone": "4085553745",
      "expirationDate": 1519966800000,
      "id": 21945272
   },
      {
      "phone": "8001234567",
      "id": 12225072
   }
]}
CODE

Read Dialtime DNC

Description: Gets information about a Dialtime DNC entry.

Method: GET /compliance/dialtime/dnc/{dncId}

Parameters:

dncIddncIdInteger (ID)YesSpecifies the DNC entry ID to be read.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 200 OK

Response Body:

KeyTypeMandatory?Description
idInteger (ID)YesThe ID of the Dialtime DNC entry.
phoneStringYesThe phone number of the Dialtime DNC entry.
contactGroupIdInteger (ID)NoThe Contact Group ID for the Dialtime
expirationDatedateTimeNoThe expiration date of the Dialtime DNC entry.

Read a Dialtime DNC Entry

#Request (JSON)
GET /compliance/dialtime/dnc/21945274
Host: localhost.com 
Content-Type: application/json
Accept: application/json   

#Response
200 OK
Content-Type: application/json

{
   "phone": "4155553767",
   "contactGroupId": 1320,
   "expirationDate": 1519880400000,
   "id": 21945274
}
CODE

Attempt to read a Dialtime DNC Entry That Doesn't Exist

#Request
GET /compliance/dialtime/dnc/2234
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response
404 Not Found

 
{
   "code": 203,
   "message": "DNC entry not found"
}
CODE

Update Dialtime DNC

Description: Updates a Dialtime DNC entry.

Method: PUT /compliance/dialtime/dnc/{dncId}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
dncIddncIdInteger (ID)YesSpecifies the Dialtime DNC entry to update.

Body:

KeyTypeMandatory?Description
phoneStringYesThe phone number of the Dialtime DNC entry to update.
contactGroupIdInteger (ID)NoThe new Contact Group to be assigned to the Dialtime DNC entry.
expirationDatedateTimeNoThe new expiration date of the Dialtime DNC entry.

Response Code: 204 No Content

Body:

None

Update an Existing Dialtime DNC Entry

#Request (JSON)
PUT /compliance/dialtime/dnc/21945274 
Host: localhost.com 
Content-Type: application/json
Accept: application/json     

{
  "phone": "4155553767",
  "contactGroupId": "1522"
}

#Response
204 No Content
Content-Type: application/json
CODE

Email DNC

The Compliance API supports the Create, Create Multiple, Delete, Search, List, Read, Update, and Get Email DNC List Info methods for managing the Email DNC settings.

  • The Phone DNC Type setting in the LiveVox Portal (Configure > Services > Client > Settings tab) determines which DNC methods you can use. If you use the wrong DNC methods, the API returns a 400 Bad Request error stating that you are not configured to use that particular method. If the Phone DNC Type is set to Legacy DNC, you can use any method under the DNC category in the documentation. If you have the Phone DNC Type set to Dial-Time Phone DNC, you can only use the methods under the Dialtime/SMS/Email DNC category. By using the Is Legacy DNC Enabled method, you can check your Phone DNC Type and ensure that you are using the correct methods.

    Changing this setting affects the DNC list that your site uses for dialing, do not change this setting just to test the APIs.


  • The "expirationDate" in requests can be in either yyyy-MM-dd format (for example,  2021-03-01) or epoch time in milliseconds (for example, 1616089284000). The "expirationDate" in a response is always in epoch time in milliseconds (for example, 1616089284000).

Create Email DNC

Description:  Creates an Email DNC entry.

Method: POST /compliance/email/dnc

Parameters:

None

Body:

KeyTypeMandatory?Description
emailStringYesThe email address for which you are creating the Email DNC entry.
contactGroupIdInteger (ID)NoThe contact group that is assigned to the Email DNC entry.
expirationDatedateTimeNoThe expiration date of the Email DNC entry.

Response Code: 201 Created

Body:

Key

Type

Mandatory?

Description

idInteger (ID)YesThe ID for the created email entry.

Create a dnc email entry

#Request (JSON)
POST /compliance/dialtime/dnc
Host: localhost.com
Content-Type: application/json
Accept: application/json

{
  "email": "example@gmail.com",
  "contactGroupId": "11435",
  "expirationDate": "2021-10-10"
}

#Response (JSON)
201 Created
Content-Type: application/json

{
  "id": 1033288
}
CODE

Create Multiple Email DNC

Description: Creates multiple Email DNC entries in a single request.

Method: POST /compliance/email/dnc/bulk

Parameters:

None

Body:

Key

Type

Mandatory?

Description

dncEntriesArrayYes

An array of Email DNC entries to create

KeyTypeMandatory?Description
emailStringYesThe email address for which you are creating the Email DNC entry.
contactGroupIdInteger (ID)NoThe contact group that is assigned to the Email DNC entry.
expirationDatedateTimeNoThe expiration date of the Dialtime DNC entry.

Response Code: 200 OK

Body:

Key

Type

Mandatory?

Description

processedCountIntegerYesNumber of records processed.

Create Multiple DNC Entries

#Request (JSON)
POST /compliance/email/dnc/bulk
Host: localhost.com
Content-Type: application/json
Accept: application/json

{
  "dncEntries": [
    {
      "email": "example1a@gmail.com",
      "contactGroupId": "1020229",
      "expirationDate": "2021-10-19"
    },
    {
      "email": "example2@gmail.com",
      "contactGroupId": "1020230",
      "expirationDate": "2021-10-20"
    },
    {
      "email": "example3@gmail.com",
      "contactGroupId": "1020231",
      "expirationDate": "2021-10-22"
    }
  ]
}

#Response (JSON)
200 OK
Content-Type: application/json

{
  "processedCount": 3
}
CODE


Delete Email DNC

Description: Deletes an Email DNC entry.

Method: DELETE /compliance/email/dnc/{dncId}

Parameters:

dncIddncIdIntegerYesSpecifies the Email DNC entry ID to be deleted.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 204 No Content

Body:

None

Delete an Existing DNC Entry

#Request
DELETE /compliance/email/dnc/21945272
Host: localhost.com
Content-Type: application/json
Accept: application/json

#Response
204 No Content
CODE


Find Matching Email DNC

Description: Finds matching Email DNC entries

Method: POST /compliance/email/dnc/search?offset={n}&count={n}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
countnIntegerYesSpecify the number of items to return in the list. There is a limit of 1000 items.
offsetnIntegerYesSpecifies the offset from 0, based on the count, from which to start listing.


Body:

Key

Type

Mandatory?

Description

filterObjectYes

DNC entries to create with the following structure

KeyTypeMandatory?Description
emailStringNoThe email address to search for the Email DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID to search.

Response Code: 200 OK

Body:

Key

Type

Mandatory?

Description

dncEntriesArrayYes

An array of Email DNC entries that match the filter criteria in the request.

KeyTypeMandatory?Description
idInteger (ID)YesThe ID for the entry.
emailStringYesThe email address of the Email DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID of the Email DNC entry.
expirationDatedateTimeNoThe expiration date of the Email DNC entry.

Find Matching DNC entries

#Request (JSON)
POST /compliance/email/dnc/search?offset=0&count=4
Host: localhost.com 
Content-Type: application/json
Accept: application/json    

{
  "filter": {
    "email": "example1@gmail.com"
  }
}

#Response
200 OK
Content-Type: application/json

{
  "next": "compliance/email/dnc/search?offset=4&count=4",
  "dncEntries": [
    {
      "email": "example1@gmail.com",
      "contactGroupId": 1020229,
      "expirationDate": 1634616000000,
      "dncId": 100630223
    },
    {
      "email": "example1@gmail.com",
      "contactGroupId": 1020230,
      "expirationDate": 1634702400000,
      "dncId": 100630224
    },
    {
      "email": "example1@gmail.com",
      "contactGroupId": 1020231,
      "expirationDate": 1634875200000,
      "dncId": 100630225
    },
    {
      "email": "example1@gmail.com",
      "expirationDate": 1634875200000,
      "dncId": 100630226
    }
  ]
}
CODE


Get Email DNC List Info

Description: Retrieves metadata for a list of Email DNC entries.

Method: GET /compliance/email/dnc/info 

Parameters:

None

Body:

None

Response Code: 200 OK

Body:


Key

Type

Mandatory?

Description

sizeIntegerYesThe number of Email DNC entries currently loaded for that client.

Get the metadata for a list of DNC Entries

#Request (JSON)
GET /compliance/email/dnc/info
Host: localhost.com 
Content-Type: application/json
Accept: application/json    

#Response (JSON)
200 OK
Content-Type: application/json

{
  "size": 7
}
CODE


List Email DNC

Description: Lists Email DNC entries.

Method: GET /compliance/email/dnc?count={n}&offset={n}

Parameters:

countnIntegerYesSpecifies the number of items to return in the list. There is a limit of 1000 items.
offsetnIntegerYesRequired for pagination. Specifies the offset from 0, based on the count parameter, from which to start listing.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
nextURIYesA URI for the next page of entries. If next is not present, or blank, then there are no pages after this one.
dncEntriesArrayYes

A container for a page of Email DNC entries. The page size is controlled via count and offset in the request.

KeyTypeMandatory?Description
idInteger (ID)YesThe ID for the entry.
emailStringYesThe email address of the Email DNC entry.
contactGroupIdInteger (ID)NoThe Contact Group ID of the Email entry.
expirationDatedateTimeNoThe expiration date of the Email DNC entry.

Get a List of DNC Entries

#Request (JSON)
GET /compliance/email/dnc?offset=0&count=5
Host: localhost.com  
Content-Type: application/json
Accept: application/json   

#Response
200 OK
Content-Type: application/json

{
  "next": "compliance/email/dnc?offset=5&count=5",
  "dncEntries": [
    {
      "email": "example1a@gmail.com",
      "contactGroupId": 1020229,
      "expirationDate": 1634616000000,
      "dncId": 100630220
    },
    {
      "email": "example2@gmail.com",
      "contactGroupId": 1020230,
      "expirationDate": 1634702400000,
      "dncId": 100630221
    },
    {
      "email": "example3@gmail.com",
      "contactGroupId": 1020231,
      "expirationDate": 1634875200000,
      "dncId": 100630222
    },
    {
      "email": "example1@gmail.com",
      "contactGroupId": 1020229,
      "expirationDate": 1634616000000,
      "dncId": 100630223
    },
    {
      "email": "example1@gmail.com",
      "contactGroupId": 1020230,
      "expirationDate": 1634702400000,
      "dncId": 100630224
    }
  ]
}
CODE


Read Email DNC

Description: Reads the Email DNC entries.

Method: GET /compliance/email/dnc/{dncId}

Parameters:

dncIddncIdInteger (ID)YesSpecifies the DNC entry ID to be read.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 200 OK

Response Body:

KeyTypeMandatory?Description
idInteger (ID)YesThe ID of the Email DNC entry.
emailStringYesThe email address of the Email DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID for the Email DNC entry
expirationDatedateTimeNoThe expiration date of the Email DNC entry.

Read a DNC Entry

#Request (JSON)
GET /compliance/email/dnc/100630224
Host: localhost.com  
Content-Type: application/json
Accept: application/json    

#Response
200 OK
Content-Type: application/json

{
  "email": "example1@gmail.com",
  "contactGroupId": 1020230,
  "expirationDate": 1634702400000,
  "dncId": 100630224
}
CODE


Update Email DNC

Description: Updates an Email DNC entry.

Method: PUT /compliance/email/dnc/{dncId}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
dncIddncIdInteger (ID)YesSpecifies the Email DNC entry to update.

Body:

KeyTypeMandatory?Description
emailStringYesThe email address of the Email DNC entry to update.
contactGroupIdInteger (ID)NoThe new contact group assigned to the Email DNC entry.
expirationDatedateTimeNoThe new expiration date of the Email DNC entry.

Response Code: 204 No Content

Body:

None

Update an Existing DNC Entry

#Request (JSON)
PUT /compliance/email/dnc/100630224
Host: localhost.com  
Content-Type: application/json
Accept: application/json    

{
  "email": "example1@gmail.com",
  "contactGroupId": 1020230,
  "expirationDate": "2021-10-25"
}

#Response
204 No Content
Content-Type: application/json
CODE

SMS DNC

The Compliance API supports the Create, Create Multiple, Delete, Search, List, Read, Update, and Get SMS DNC List Info methods for managing the SMS DNC settings.

  • The Phone DNC Type setting in the LiveVox Portal (Configure > Services > Client > Settings tab) determines which DNC methods you can use. If you use the wrong DNC methods, the API returns a 400 Bad Request error stating that you are not configured to use that particular method. If the Phone DNC Type is set to Legacy DNC, you can use any method under the DNC category in the documentation. If you have the Phone DNC Type set to Dial-Time Phone DNC, you can use the methods under the Dialtime/SMS/Email DNC category. By using the Is Legacy DNC Enabled method you can check what your Phone DNC Type is set to and ensure that you are using the correct methods.

    Changing this setting affects the DNC list your site uses for dialing, do not change this setting just to test the APIs.

  • The "expirationDate" in requests can be in either yyyy-MM-dd format (for example,  2021-03-01) or epoch time in milliseconds (for example, 1616089284000). The "expirationDate" in a response is always in epoch time in milliseconds (for example, 1616089284000).

Create SMS DNC

Description: Creates an SMS DNC entry.

Method: POST /compliance/sms/dnc

Parameters:

None

Body:

KeyTypeMandatory?Description
smsStringYesThe phone number for which you are creating the SMS DNC entry. The format is a 10-digit string.
contactGroupIdInteger (ID)NoThe contact group assigned to the DNC entry.
expirationDatedateTimeNoThe expiration date of the SMS DNC entry.

Response Code: 201 Created

Body:

Key

Type

Mandatory?

Description

idInteger (ID)YesThe ID for the created entry.

Create an Email DNC entry for the client

#Request (JSON)
POST /compliance/sms/dnc
Host: localhost.com
Content-Type: application/json
Accept: application/json

{
  "sms": "9176754178",
  "contactGroupId": 1020229,
  "expirationDate": "2021-10-26"
}

#Response (JSON)
201 Created
Content-Type: application/json

{
  "id": 159475304
}
CODE

Create Multiple SMS DNC

Description: Creates multiple SMS DNC entries in a single request.

Method: POST /compliance/sms/dnc/bulk

Parameters:

None

Body:

Key

Type

Mandatory?

Description

dncEntriesArrayYes

An array of SMS DNC entries to create.

KeyTypeMandatory?Description
smsStringYesThe phone number for which you are creating the DNC entry. The format is a 10-digit string.
contactGroupIdInteger (ID)NoThe contact group assigned to the DNC entry.
expirationDatedateTimeNoThe expiration date of the SMS DNC entry.

Response Code: 200 OK

Body:

Key

Type

Mandatory?

Description

processedCountIntegerYesNumber of records processed

Create Multiple DNC Entries

#Request (JSON)
POST /compliance/sms/dnc/bulk
Host: localhost.com
Content-Type: application/json
Accept: application/json

{
  "dncEntries": [
    {
      "sms": "6503517497",
      "contactGroupId": 1020229,
      "expirationDate": "2021-10-27"
    },
    {
      "sms": "6505153873",
      "contactGroupId": 1020230,
      "expirationDate": "2021-10-26"
    },
    {
      "sms": "6178498807",
      "contactGroupId": 1020231,
      "expirationDate": "2021-10-28"
    }
  ]
}

#Response (JSON)
200 OK
Content-Type: application/json

{
  "processedCount": 3
}
CODE


Delete SMS DNC

Description: Deletes an SMS DNC entry.

Method: DELETE /compliance/sms/dnc/{dncId}

Parameters:

dncIddncIdIntegerYesSpecifies the SMS DNC entry ID to be deleted.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 204 No Content

Body:

None

Delete an Existing DNC Entry

#Request
DELETE /compliance/sms/dnc/159475304
Host: localhost.com
Content-Type: application/json
Accept: application/json  

#Response
204 No Content
CODE


Find Matching SMS DNC

Description: Finds matching SMS DNC entries.

Method: POST /compliance/sms/dnc/search?offset={n}&count={n}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
countnIntegerYesSpecify the number of items to return in the list. There is a limit of 1000 items.
offsetnIntegerYesSpecifies the offset from 0, based on the count, from which to start listing.


Body:

Key

Type

Mandatory?

Description

filterObjectYes

DNC entries to create with the following structure

KeyTypeMandatory?Description
smsStringNoThe digit(s) of a phone number to search for the SMS DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID to search.

Response Code: 200 OK

Body:

Key

Type

Mandatory?

Description

dncEntriesArrayYes

An array of SMS DNC entries that match the filter criteria in the request.

KeyTypeMandatory?Description
idInteger (ID)YesThe ID for the entry.
smsStringYesThe phone number of the SMS DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID of the SMS DNC entry.
expirationDatedateTimeNoThe expiration date of the SMS DNC entry.

Find Matching DNC entries

#Request (JSON)
GET /compliance/sms/dnc/search?offset=0&count=6
Host: localhost.com
Content-Type: application/json
Accept: application/json  

{
  "filter": {
    "sms": "6",
    "contactGroupId": 1020229
  }
}

#Response
200 OK
Content-Type: application/json

{
  "dncEntries": [
    {
      "sms": "9176754178",
      "contactGroupId": 1020229,
      "expirationDate": 1635825600000,
      "dncId": 159475304
    },
    {
      "sms": "6503517497",
      "contactGroupId": 1020229,
      "expirationDate": 1635307200000,
      "dncId": 159475306
    },
    {
      "sms": "6505153873",
      "contactGroupId": 1020229,
      "expirationDate": 1635307200000,
      "dncId": 159533878
    }
  ]
}
CODE


Get SMS DNC List Info

Description: Retrieves metadata for a list of SMS DNC entries.

Method: GET /compliance/sms/dnc/info 

Parameters:

None

Body:

None

Response Code: 200 OK

Body:


Key

Type

Mandatory?

Description

sizeIntegerYesThe number of SMS DNC entries currently loaded for that client.

Get the metadata for a list of DNC Entries

#Request (JSON)
GET /compliance/sms/dnc/info
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response (JSON)
200 OK
Content-Type: application/json

{
  "size": 7
}
CODE


List SMS DNC

Description: Lists SMS DNC entries.

Method: GET /compliance/sms/dnc?count={n}&offset={n}

Parameters:

countnIntegerYesSpecify the number of items to return in the list. There is a limit of 1000 items.
offsetnIntegerYesRequired for pagination. Specifies the offset from 0, based on the count parameter, from which to start listing.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
nextURIYesA URI for the next page of entries. If next is not present, or blank, then there are no pages after this one.
dncEntriesArrayYes

A container for a page of SMS DNC entries. The page size is controlled using count and offset in the request.

KeyTypeMandatory?Description
idInteger (ID)YesThe ID for the entry.
smsStringYesThe phone number of the SMS DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID of the SMS entry.
expirationDatedateTimeNoThe expiration date of the SMS DNC entry.

Get a List of DNC Entries

#Request (JSON)
GET /compliance/sms/dnc?offset=0&count=5
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response
200 OK
Content-Type: application/json

{
  "next": "compliance/sms/dnc?offset=5&count=5",
  "dncEntries": [
    {
      "sms": "9176754178",
      "contactGroupId": 1020229,
      "expirationDate": 1635825600000,
      "dncId": 159475304
    },
    {
      "sms": "6503517497",
      "contactGroupId": 1020229,
      "expirationDate": 1635307200000,
      "dncId": 159475306
    },
    {
      "sms": "6178498807",
      "contactGroupId": 1020231,
      "expirationDate": 1635393600000,
      "dncId": 159475308
    },
    {
      "sms": "6505153873",
      "contactGroupId": 1020229,
      "expirationDate": 1635307200000,
      "dncId": 159533878
    },
    {
      "sms": "9176754178",
      "contactGroupId": 1020231,
      "expirationDate": 1635393600000,
      "dncId": 159533880
    }
  ]
}
CODE


Read SMS DNC

Description: Reads information about an SMS DNC entry.

Method: GET /compliance/sms/dnc/{dncId}

Parameters:

dncIddncIdInteger (ID)YesSpecifies the DNC entry ID to be read.

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

Body:

None

Response Code: 200 OK

Response Body:

KeyTypeMandatory?Description
idInteger (ID)YesThe ID of the SMS DNC entry.
smsStringYesThe phone number of the SMS DNC entry.
contactGroupIdInteger (ID)NoThe contact group ID for the SMS DNC entry
expirationDatedateTimeNoThe expiration date of the SMS DNC entry.

Read a DNC Entry

#Request (JSON)
GET /compliance/sms/dnc/159475304
Host: localhost.com 
Content-Type: application/json
Accept: application/json   

#Response
200 OK
Content-Type: application/json

{
  "sms": "9176754178",
  "contactGroupId": 1020229,
  "expirationDate": 1635825600000,
  "dncId": 159475304
}
CODE

Update SMS DNC

Description: Updates an SMS DNC entry.

Method: PUT /compliance/sms/dnc/{dncId}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
dncIddncIdInteger (ID)YesSpecifies the SMS DNC entry to update.

Body:

KeyTypeMandatory?Description
smsStringYesThe phone number of the SMS DNC entry to update.
contactGroupIdInteger (ID)NoThe new contact group assigned to the SMS DNC entry.
expirationDatedateTimeNoThe new expiration date of the SMS DNC entry.

Response Code: 204 No Content

Body:

None

Update an Existing DNC Entry

#Request (JSON)
PUT /compliance/sms/dnc/21945274  
Host: localhost.com 
Content-Type: application/json
Accept: application/json    

{
  "sms": "9176754178",
  "contactGroupId": 1020229,
  "expirationDate": "2021-11-02"
}

#Response
204 No Content
Content-Type: application/json
CODE

DNC List Management

Currently, the Compliance API supports Create, Read, Delete, List, and Get List Info methods for DNC lists and entries. In addition, there is an IsBlocked method that allows you to determine if a particular phone number, account number, phone + account, or zip code should be blocked based on your DNC Lists.

The Phone DNC Type setting in config will determine which DNC methods you'll be allowed to use; if you use the wrong ones the API will return a 400 Bad Request error stating that you are not configured to use the particular method. If the Phone DNC Type setting is set to "Legacy DNC" you'll be able to use any method under the DNC category in the documentation, if you have it set to "Dial-Time Phone DNC" you'll only be able to use the methods under the Dialtime DNC category.

Changing this setting will affect the DNC list your site checks for dialing, we don't recommend changing this setting just to test the APIs.

Create DNC Entry

Description: Creates a new DNC entry.

Method: POST /compliance/dnc/

Parameters:

None

Body:

Key or AttributeTypeMandatory?Description
clientIdInteger (ID)NoAssociates the entry with this particular Client
typeEnumYesEither DAILY or PERMANENT
serviceIdInteger (ID)NoAssociates the entry with this particular Service. If not present, then the entry is treated as if it applies to all Services for this particular Client.
phoneStringNo*At least one phone, account, or zip must be present for the request to be valid. See DNC Rules for more information.
accountString
zipString

Response Code: 201 Created

Body:

Key or AttributeTypeMandatory?Description
idInteger (ID)YesThe ID of the newly created DNC entry

Create a DNC phone entry for the client

#Request (JSON)
POST /compliance/dnc/
Host: localhost.com
Content-Type: application/json
Accept: application/json

{"clientId": 12345,
 "type": "DAILY",
 "phone": "9195551212"} 

#Response (JSON)
201 Created
Content-Type: application/json

{"id": 99991}
CODE

Create a DNC phone+account entry for a Service

#Request (JSON)
POST /compliance/dnc/
Host: localhost.com
Content-Type: application/json
Accept: application/json

{"clientId": 12345,
 "type": "DAILY",
 "serviceId": 38012,
 "phone": "9195551400",
 "account": "99124" }

#Response (JSON)
201 Created
Content-Type: application/json

{"id": 99992} 
CODE

Invalid request

#Request (JSON)
POST /compliance/dnc/
Host: localhost.com
Content-Type: application/json
Accept: application/json

{"clientId": 12345,
 "type": "DAILY" }

#Response
400 Bad Request  
CODE

Delete DNC Entry

Description: Deletes an existing DNC entry.

Method: DELETE /compliance/dnc/{id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
iddncIdInteger (ID)YesID for DNC entry to delete

Body:

None

Response Code: 204 No Content

Body:

None

Delete an existing entry

#Request
DELETE /compliance/dnc/99991
Host: localhost.com 
Content-Type: application/json
Accept: application/json   

#Response
204 No Content
CODE

Attempt to delete a DNC entry that does not exist

#Request
DELETE /compliance/dnc/8000
Host: localhost.com
Content-Type: application/json
Accept: application/json   

#Response
404 Not Found
CODE

Find Matching DNC

Description: Finds DNC list entries that match specified criteria.

If Service ID(s) are included in the request only DNC entries for those Service(s) will be returned. If you do not include any Service IDs in the request you will be returned all Client and Service level DNC entries.

Method: POST /compliance/dnc/search?[client={clientId}&]count={n}&offset={n}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoIdentifies which Client the DNC list pertains to
countnIntegerYesSpecifies the number of items to return in the list. There is a hard cap of 1000 items.
offsetnIntegerYesRequired for pagination. Specifies the offset from 0, based on the count, to start listing from.

Body:

KeyTypeMandatory?Description
typeObjectYes

An object containing the DNC criteria to search for

KeyTypeMandatory?Description
typeEnumYesEither DAILY or PERMANENT.
modifiedAfterDateTimeYes

Date and time after which a DNC entry must have been created or modified, in order to be returned in the result.

serviceArrayNo

An array of Service IDs to further filter the list of matching DNC entries. If Service IDs are included in the request, only DNC entries associated with one of those Service IDs will be returned.

KeyTypeMandatory?Description
idInteger (ID)YesID of the Service by which you want to filter

Response Code: 200 OK

Body:

ElementTypeMandatory?Description
dncArrayNo

A container for a page of DNC entries. The page size is controlled via count and offset in the request.

KeyTypeMandatory?Description
idInteger (ID)YesInternal LiveVox ID of the DNC entry
clientIdInteger (ID)YesThe Client the DNC entry belongs to.
dncTypeEnumYesEither DAILY or PERMANENT
serviceIdInteger (ID)NoThe Service the DNC entry belongs to
phoneStringYes

At least one phone, account, or zip will be present.

accountString
zipString
nextURINoA URI for the next page of entries. If next is not present, or blank, then there are no pages after this one.

Find daily DNC entries created after 8:00 GMT on May 5, 2013

#Request (JSON)
POST /compliance/dnc/search?client=4199&count=100&offset=0
Host: localhost.com  
Content-Type: application/json
Accept: application/json   

{
	"type":
	{"service":[{"id":38184},{"id":43185}],
	"type":"DAILY",
	"modifiedAfter":1367740800000}
}

#Response (JSON)
200 OK
Content-Type: application/json

{
   "dnc":    [
            {
         "id": 22043695811,
         "clientId": 4199,
         "dncType": "DAILY",
         "serviceId": 38184,
         "phone": "5034539877",
         "account": null,
         "zip": null
      },
            {
         "id": 178873973723,
         "clientId": 4199,
         "dncType": "DAILY",
         "serviceId": 43185,
         "phone": null,
         "account": "UU73323432",
         "zip": null
      },
            {
         "id": 178873973733,
         "clientId": 4199,
         "dncType": "DAILY",
         "serviceId": 43185,
         "phone": null,
         "account": "3232112",
         "zip": null
      },
            {
         "id": 178873973743,
         "clientId": 4199,
         "dncType": "DAILY",
         "serviceId": 38184,
         "phone": null,
         "account": "45653232",
         "zip": null
      },
            {
         "id": 178873973753,
         "clientId": 4199,
         "dncType": "DAILY",
         "serviceId": 43185,
         "phone": null,
         "account": "JD934322",
         "zip": null
      }
   ],
   "next": null
}
CODE

Get DNC List Info

Description: Gets metadata concerning a DNC list

Method: GET /compliance/dnc/info?dncType={DAILY|PERMANENT}[&client={clientId}][&service={serviceId}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoIdentifies which Client the list pertains to
dncTypeDAILY or PERMANENTEnumYesEither DAILY or PERMANENT
serviceserviceIdInteger (ID)NoRestricts the list to entries that are specifically associated with this particular Service.

Body:

None

Response Code: 200 OK

Body:

Key or AttributeTypeMandatory?Description
sizeIntegerYesTotal number of entries in the list
lastModifiedDateTimeNoThe last date & time that the list was updated. This information might not be available. This is formatted according to the definition of dateTime in the XML Schema specification. For JSON responses, it is represented as the number of milliseconds since midnight on January 1, 1970 (GMT).

Get the metadata for the daily DNC list filtered by a Service

#Request (JSON)
GET /compliance/dnc/info/client=12345&dncType=DAILY&service=38012
Host: localhost.com  
Content-Type: application/json
Accept: application/json   

#Response (JSON)
200 OK
Content-Type: application/json

{"size": 4}
CODE

Is Legacy DNC Enabled

Description: Used to determine the Phone Type DNC setting for a Client.

Method: GET /compliance/dnc/isLegacyDncEnabled

Parameters:

None

Body:

None

Response Code: 200 OK

Body:


Key

Type

Mandatory?

Description

resultBooleanYesReturns true, if the Phone Type DNC is set to Legacy, otherwise will return false.

Check the Phone Type DNC Setting

#Request (JSON)
GET /compliance/dnc/isLegacyDncEnabled  
Host: localhost.com  
Content-Type: application/json
Accept: application/json    

#Response (JSON)
200 OK
Content-Type: application/json

{"result": "false"}
CODE

List DNC Entries

Description: Lists existing DNC entries

Method: GET /compliance/dnc?dncType={DAILY|PERMANENT}[&client={clientId}]&count={n}&offset={n}[&service={serviceId}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientIdInteger (ID)NoIdentifies which client the list pertains to
dncTypeDAILY or PERMANENTEnumYesEither DAILY or PERMANENT
serviceserviceIdInteger (ID)NoRestricts the list to entries that are specifically associated with this particular Service.
countnIntegerYesSpecifies the number of items to return in the list. There is a hard cap of 1000 items.
offsetnIntegerYesRequired for pagination. Specifies the offset from 0, based on the count, to start listing from.

Body:

None

Response Code: 200 OK

Body:

ElementTypeMandatory?Description
dncArrayNo

A container for a page of DNC entries. The page size is controlled via count and offset in the request.

KeyTypeMandatoryDescription
clientIdInteger (ID)NoThe Client the DNC entry belongs to.
idInteger (ID)YesThe ID of the DNC entry.
dncTypeEnumYesEither DAILY or PERMANENT
serviceIdInteger (ID)NoThe Service the DNC entry belongs to
phoneStringNo*

At least one phone, account, or zip must be present. See DNC Rules for more information.

accountString
zipString
nextURINoA URI for the next page of entries. If next is not present, or blank, then there are no pages after this one.

Get the daily DNC list filtered by a skill

#Request (JSON)
GET /compliance/dnc/client=12345&dncType=DAILY&service=38012
Host: localhost.com  
Content-Type: application/json
Accept: application/json    

#Response (JSON)
200 OK
Content-Type: application/json

{
   "dnc": [   {
   "id": 99991,
   "clientId": 12345,
   "dncType": "DAILY",
   "serviceId": 38012,
   "phone": "9195551212"},
...
  {"id": 99995,
   "clientId": 12345,
   "dncType": "DAILY",
   "serviceId": 38012,
   "phone": "9195551400"}
]}
CODE

Multiple Account Dnd

Description: Creates/Updates multiple account DND entries in a single request.

If an account DND entry already exists the entry is updated, if no entry exists a new one is created.

Method: POST /compliance/dnc/multipleAccountDnd[?client={client}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientInteger (ID)NoThe Client ID to create/update the account DND entries for.

Body:

KeyTypeMandatory?Description
accountDndEntryArrayYes

An array of account DND entries to create/update

KeyTypeMandatory?Description
accountStringYesThe account the user wants to create/update.
blockEnumYes

What type of blocking to apply to the account, valid values are:

  • PERMANENT
  • DAILY
  • NONE

The PERMANENT will block the account until the setting is disabled, DAILY will block the account for that day only and NONE will disable all blocking.

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
successfulEntriesIntegerNoThe number of successfully created/updated entries.
failedEntriesIntegerNoThe number of entries that failed to be created/updated.

Create/Update Multiple Account Dnd Entries

#Request (JSON)
POST /compliance/dnc/multipleAccountDnd?client=4199
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

{
  "accountDndEntry": [
    {
      "account": "2345678",
      "block": "DAILY"
    }
  ]
}
 
#Response
200 OK
Content-Type: application/json

{
   "successfulEntries": 1,
   "failedEntries": 0
}
CODE

Multiple Account Phone Dnd

Description: Creates/Updates multiple account phone combination DND entries in a single request.

  • If an account phone DND entry already exists the entry is updated, if no entry exists a new one is created. The entry is only updated if everything matches including the ordinal number; for example, if you include account 1234, phone number 1234567890, and ordinal 3 and the account has that same phone number in ordinal 1 the phone number will be added to ordinal 3 not updated in ordinal 1.
  • In the case of duplicate account phone entries where the DND 'phoneBlock' property is configured to different settings the options are enforced in the following order: daily, permanent, none. This means that if an account phone combination has the 'phoneBlock' set to 'DAILY' in ordinal 1 and a duplicate account phone combination set to 'PERMANENT' in ordinal 2 any attempt on that combination will be returned with a message stating the dial cannot be completed because it is on the do not dial list. This is true regardless of which ordinal phone number is attempted.

Method: POST /compliance/dnc/multipleAccountPhoneDnd[?client={client}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientInteger (ID)NoThe Client ID to create/update the account phone DND entries for.

Body:

KeyTypeMandatory?Description
accountPhoneDndEntryArrayYes

An array of account phone DND entries to create/update

KeyTypeMandatory?Description
accountStringYesThe account the user wants to create/update.
phonesArrayYes

An array of phone numbers to block for the specified account

KeyTypeMandatory?Description
phoneStringYesThe phone number to update.
ordinalIntegerYesThe position of the phone number.
phoneBlockEnumYes

What type of blocking to apply to the account phone combination, valid values are:

  • PERMANENT
  • DAILY
  • NONE

The PERMANENT will block the account until the setting is disabled, DAILY will block the account for that day only and NONE will disable all blocking.

Response Code: 204 No Content

Body:

None

Create/Update Multiple Account Phone Dnd Entries

#Request (JSON)
POST /compliance/dnc/multipleAccountPhoneDnd?client=4199
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

{
   "accountPhoneDndEntries":    [{
      "account": "1234567",
      "phones":       [{
         "phone": "4565553748",
         "ordinal": "1",
         "phoneBlock": "DAILY"
      }
     ]
   }
  ]
}
 
#Response
204 No Content
Content-Type: application/json
CODE

Multiple Phone DNC

Description: Creates/Updates multiple phone DNC entries in a single request

Unlike the Multiple Account Dnd method, phone numbers cannot be updated using this method. If a phone number is already in the DNC list it will be counted in the duplicateEntries property.

Method: POST /compliance/dnc/multiplePhoneDnc[?client={client}]

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
clientclientInteger (ID)NoThe Client ID to create the phone DNC entries for.

Body:

KeyTypeMandatory?Description
blockEnumYes

What type of blocking to apply to the phone(s), valid values are:

  • PERMANENT
  • DAILY

The PERMANENT will block the phone until the setting is disabled, DAILY will block the phone for that day only.

phoneDncEntryArrayNo

An array of phone DNC entries to create/update

KeyTypeMandatory?Description
phoneStringYesThe phone(s) the user wants to be added to the DNC.
serviceArrayNo

An array of services on which the phone number will be blocked

KeyTypeMandatory?Description
idInteger (ID)YesThe Service ID that phone(s) will be blocked on.

Response Code: 200 OK

Body:

KeyTypeMandatory?Description
successfulEntriesIntegerYesThe number of successfully created entries.
failedEntriesIntegerNo

The number of entries that failed to be created.

KeyTypeMandatory?Description
lineIntegerNoThe line of the entry that failed to be created.
reasonStringNoThe reason why the entry failed.
duplicateEntriesIntegerYesThe number of duplicate entries.

Multiple Phone DNC

#Request (JSON)
POST /compliance/dnc/multiplePhoneDnc?client=4199
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

{
  "block": "DAILY",
  "phoneDncEntry": [
    {
      "phone": "4085053893"
    },
    {
      "phone": "4156716004"
    },
    {
      "phone": "4155553848"
    }
  ],
  "service": [
    {
      "id": "62526"
    }
  ]
}

#Response
200 OK
Content-Type: application/json

{
   "failedEntries": [],
   "successfulEntries": 2,
   "duplicateEntries": 1
}
CODE

Read DNC

Description: Gets information from an existing DNC entry.

Method: GET /compliance/dnc/{id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
ididInteger (ID)YesID for DNC entry to obtain

Body:

None

Response Code: 200 OK

Body:

Key or AttributeTypeMandatory?Description
clientIdInteger (ID)NoThe Client the DNC entry belongs to.
typeEnumYesEither DAILY or PERMANENT
serviceIdInteger (ID)NoThe Service the DNC entry belongs to. If not present, then the entry is treated as if it applies to all Services for this particular Client.
filenameStringNoThe filename used to create the DNC entry if the \entry was created using the import method or automated through a job scheduler job.
phoneStringNo*At least one phone, account, or zip must be present. See DNC Rules for more information.
accountString
zipString

Get an existing entry

#Request (JSON)
GET /compliance/dnc/99991
Host: localhost.com 
Content-Type: application/json
Accept: application/json  

#Response
200 OK
Content-Type: application/json

{"clientId": 12345,
 "type": "DAILY",
 "serviceId": 38012,
 "phone": "9195551212"}
CODE

Attempt to get a DNC entry that does not exist

#Request
GET /compliance/dnc/8000
Host: localhost.com
Accept: application/json

#Response
404 Not Found
CODE

Recordings

The Recordings category allows users to Find Call Recordings, Delete Call Recordings and Get Call Recordings By Id.

The Find Matching Call Recording method was removed in v9.0, clients should use the Call Recording Report available in the Reporting API instead.

Delete Call Recording By Id

Description: Deletes Call Recording for a given Call recording id

User Roles: Sysadmin

Method: DELETE /compliance/recording/{id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
recordingrecordingIdStringYesThe recordingId, a unique identifier of the call recording that you wish to delete.

Body :

None

Response Code: 204 No Content

Body:

None

Delete a call recording based on unique call recording ID

#Request
DELETE /compliance/recording/adae2e80-0001-b950-2eaf-0178d9581c93
Host: localhost.com
Content-Type: application/json
Accept: application/json  

#Response 
204 No Content
CODE

Get Call Recording Info

Description: Retrieves metadata about a call recording based on unique Call Recording ID.

Method: GET /compliance/recording/info?recording={id}

Parameters:

Path/Query Parameter NameVariable NameTypeMandatory?Description
recordingrecordingIdStringYes

The recordingId, a unique identifier of the call recording for which you want to retrieve metadata.

You can obtain the 'recordingid' for a call recording using the Call Recording Report API method. 

Body:

None

Response Code: 200 OK

Body:

Key or AttributeTypeMandatory?Description
clientIdInteger (ID)YesThe Client the call recording belongs to.
callCenterIdInteger (ID)YesThe ID of the Call Center that the Agent who was recorded is associated with.
serviceIdInteger (ID)YesThe ID of the Service to which the Agent was logged in when the call was recorded.
agentIdInteger (ID)YesThe ID of the Agent involved in the recorded call.
campaignIdInteger (ID)YesThe ID of the Campaign that the recorded call was part of.
accountStringYesThe account of the consumer whose call was recorded.
phoneStringYesThe phone number of the consumer whose call was recorded.
termCodeIdInteger (ID)YesThe Term Code of the recorded call.
fromDateDateTimeYesThe date and time that the call recording started.
toDateDateTimeYesThe date and time that the call recording ended.
originalAccountNumberStringNo

The original account number associated with the call recording.

The originalAccountNumber will only be returned if you are on Reporting 3.0 or above.

durationIntegerYesThe duration of the call recording, in seconds.


Retrieve metadata for a call recording based on unique ID

#Request (JSON)
GET/compliance/recording/info?recording=8b4e88fe-2b9c-b6b1-d211-016c4d1b3ec6
Host: localhost.com
Content-Type: application/json
Accept: application/json

#Response (JSON)
200 OK
Content-Type: application/json

{
   "clientId": 4199,
   "callCenterId": 1191,
   "serviceId": 11846,
   "agentId": 45365,
   "campaignId": 1,
   "account": "002723754",
   "phone": "8015442100",
   "termCodeId": 200801,
   "fromDate": 1375727329697,
   "toDate": 1375727389697,
   "duration": 60
}
CODE

Get Call Recording By Id

Description: Returns Call Recording for a given customer session Id

Method: GET /compliance/recording/{id}

Path/Query Parameter Name

Variable Name

Type

Mandatory?

Description

recordingrecordingIdStringYes

The recordingId, a unique identifier of the call recording that you wish to lookup.

You can obtain the 'recordingid' for a call recording using the Call Recording Report API method. 

Body :

None

Response Code: 200 OK

Body:

The body of this response is binary data that comprises the call recording (mp3).

CampaignDetails

#Request
GET /compliance/recording/8b4e88fe-2b9c-b6b1-d211-016c4d1b3ec6
Host: localhost.com
Content-Type: application/json
Accept: audio/mpeg
 
#Response
200 OK
Content-Type: audio/mpeg
 
[binary data]
XML

Errors

For more information, see the Errors topic on the REST APIs page.

Top of Page