Voice
Voice Admin API
Overview
The Voice provider APIs are used to manage information about voice specific elements and different voice related entities e.g. Phone numbers, Hybrid reason codes.
An Element is a server instance which provides feature capability. Some examples of elements are Avaya Cloud Office, Chat Connector, Microsoft Teams, Hybrid Cloud Gateway and so on, Avaya Experience Platform™ allows management of elements.
An Element Type is type of element which gets registered with Inventory Service where we can install multiple instances of the elements.
Voice Service ownes and provides ability to manage different Elements such as Avaya Cloud Office, Microsoft Teams, Hybrid Cloud Gateway etc.
A phone numbers is the entry point for contact center voice engagements.
- A privileged User creates the Avaya Cloud Office Element or Microsoft Teams Element and the phone number via Voice Administration APIs.
Before you begin
Refer to How to Authenticate with Avaya Experience Platform™ APIs required to invoke any APIs.
Voice APIs require the Account Administrator role for access and Hybrid Voice should be enabled for these APIs.
1. Voice Elements Info
Creating an Avaya Cloud Office Element
To create a new Avaya Cloud Office Element you should invoke Create Avaya Cloud Office. You should provide basic details such as a name
, environment
and didNumbers
. It is recommended to have descriptive and meaningful names that convey the Avaya Cloud Office's purpose. For example, Avaya Cloud Office For Production
etc.
POST /aco-elements
/api/admin/voice/v1/accounts/ABCDEF/aco-elements
Request Body:
{
"description": "Avaya Cloud Office Description",
"name": "Avaya Cloud Office",
"environment": "Production",
"didNumbers": [
"+16062128688",
"+12702289911"
]
}
After the Avaya Cloud Office Element request has been accepted an async process will be triggered to configure the element, the status of which should be monitored via /aco-elements/{elementId}.
After the Avaya Cloud Office Element has been created you will receive a elementId
in the response that you should use in all subsequent requests related to that Avaya Cloud Office.
HTTP 202 Accepted
{
"elementId": "ce8042a2-12f8-406f-5fd3-86c1c16d3a77",
"description": "Avaya Cloud Office Description",
"name": "Avaya Cloud Office",
"environment": "Production",
"didNumbers": [
"+16062128688",
"+12702289911"
],
"elementType": "ACO",
"status": "SUCCESS"
}
Updating an Avaya Cloud Office Element
To update an Avaya Cloud Office Element you should invoke Update Avaya Cloud Office. You should include all the details of the Avaya Cloud Office Element. Fields that are omitted from the update that were previously present will be removed.
The same basic principle applies to any updates made to the Avaya Cloud Office Element. It is treated as a complete replacement.
PUT /aco-elements/{elementId}
/v1/accounts/ABCDEF/aco-elements/c8c2909d-75e9-484a-94c0-b7e8d29771fe
Request Body:
{
"description": "Avaya Cloud Office Description",
"name": "Avaya Cloud Office",
"environment": "Production",
"didNumbers": [
"+16062128688",
"+12702289911"
]
}
HTTP 202 Accepted
{
"elementId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"description": "Avaya Cloud Office Description",
"name": "Avaya Cloud Office",
"environment": "Production",
"didNumbers": [
"+16062128688",
"+12702289911"
],
"elementType": "ACO",
"status": "SUCCESS"
}
Deleting an Avaya Cloud Office Element
To delete an Avaya Cloud Office Element you should invoke Delete Avaya Cloud Office. No response body is returned from this request.
DELETE /aco-elements/{elementId}
/api/admin/voice/v1/accounts/ABCDEF/aco-elements/c8c2909d-75e9-484a-94c0-b7e8d29771fe
HTTP 204 No Content
After an Avaya Cloud Office Element has been deleted Get an Avaya Cloud Office will return 204 if it is successfully deleted.
Creating a Microsoft Teams Element
To create a new Microsoft Teams Element you should invoke Create MS Teams. You should provide basic details such as a name
, domain
and didNumbers
. It is recommended to have descriptive and meaningful names that convey the Microsoft Teams's purpose. For example, Microsoft Teams For Production
etc.
POST /msteams-elements
/api/admin/voice/v1/accounts/ABCDEF/msteams-elements
Request Body:
{
"description": "MS Teams Server description",
"name": "MS Teams Server",
"domain": "exchange.com",
"didNumbers": [
"+16062128688",
"+12702289911"
]
}
After the Microsoft Teams Element request has been accepted an async process will be triggered to configure the element, the status of which should be monitored via /msteams-elements/{elementId}.
After the Microsoft Teams Element has been created you will receive a elementId
in the response that you should use in all subsequent requests related to that Microsoft Teams.
HTTP 202 Accepted
{
"elementId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"description": "MS Teams Server description",
"name": "MS Teams Server",
"domain": "exchange.com",
"didNumbers": [
"+16062128688",
"+12702289911"
],
"elementType": "MSTeams",
"status": "SUCCESS"
}
Updating a Microsoft Teams Element
To update a Microsoft Teams Element you should invoke Update MS Teams. You should include all the details of the Microsoft Teams Element. Fields that are omitted from the update that were previously present will be removed.
The same basic principle applies to any updates made to the Microsoft Teams Element. It is treated as a complete replacement.
PUT /msteams-elements/{elementId}
/api/admin/voice/v1/accounts/ABCDEF/msteams-elements/c8c2909d-75e9-484a-94c0-b7e8d29771fe
Request Body:
{
"description": "MS Teams Server description",
"name": "MS Teams Server",
"domain": "exchange.com",
"didNumbers": [
"+16062128688",
"+12702289911"
]
}
HTTP 202 Accepted
{
"elementId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"description": "MS Teams Server description",
"name": "MS Teams Server",
"domain": "exchange.com",
"didNumbers": [
"+16062128688",
"+12702289911"
],
"elementType": "MSTeams",
"status": "SUCCESS"
}
Deleting a Microsoft Teams Element
To delete a Microsoft Teams Element you should invoke Delete MS Teams. No response body is returned from this request.
DELETE /msteams-elements/{elementId}
/api/admin/voice/v1/accounts/ABCDEF/msteams-elements/c8c2909d-75e9-484a-94c0-b7e8d29771fe
HTTP 204 No Content
After a Microsoft Teams Element has been deleted Get an MS Teams will return HTTP 404 Not Found
.
2. Phone Numbers Info
Add Phone Number
To add new Phone Number you should invoke Add Number. You should provide basic details such as a phoneNumber
, displayName
, countryCode
and isCallingPartyNumber
. It is recommended to have purposeful displayName. For example, Toll Free number
etc.
POST /phone-numbers
/api/admin/voice/v1/accounts/{accountId}/phone-numbers
Request Body:
{
"phoneNumber": "+16479308804",
"displayName": "private Number",
"countryCode": "US",
"isCallingPartyNumber": true
}
After the phone number request has been accepted an async process will be triggered to configure the number, the status of which should be monitored via /phone-numbers/{phoneNumberId}.
Once been created you will receive a phoneNumberId
in the response that you should use in all subsequent requests related to that Number.
HTTP 202 Accepted
{
"phoneNumberId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"phoneNumber": "+16479308804",
"displayName": "private Number",
"isCallingPartyNumber": true,
"countryCode": "US",
"type": "UNKNOWN",
"accountId": "ABCDEF",
"status": "INPROGRESS"
}
Updating a Phone Number
To update a Phone Number you should invoke Update Number.
You should include all the details of the number. Fields that are omitted from the update that were previously present will be removed.
The same basic principle applies to any updates made to the Number. It is treated as a complete replacement.
PUT /phone-numbers/{phoneNumberId}
/api/admin/voice/v1/accounts/{accountId}/phone-numbers/c8c2909d-75e9-484a-94c0-b7e8d29771fe
Request Body:
{
"displayName": "private Number",
"isCallingPartyNumber": true,
"preferredMediaLocation": "US-LA"
}
HTTP 202 Accepted
{
"phoneNumberId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"phoneNumber": "+16479308804",
"displayName": "private Number",
"countryCode": "US",
"type": "LOCAL",
"isCallingPartyNumber": true,
"accountId": "ABCDEF",
"status": "INACTIVE",
"statusMessage": "Verification needed. Please send the necessary documents to [email protected] to activate it.",
"preferredMediaLocation": "US-LA"
}
Releasing a Phone Number
To release a Phone Number you should invoke Delete Number.
No response body is returned from this request.
DELETE /phone-numbers/{phoneNumberId}
/api/admin/voice/v1/accounts/{accountId}/phone-numbers/c8c2909d-75e9-484a-94c0-b7e8d29771fe
HTTP 204 No Content
After a number has been deleted Get Number.
will return HTTP 404 Not Found
.
List Phone Numbers By phone number Ids
To get list of Phone Numbers by phone number Ids you should invoke List Phone Number Api.
You need to provide request body as list of phone number Ids and it will return phone number which is not DISABLED.
POST /phone-numbers:list
/api/admin/voice/v1/accounts/{accountId}/phone-numbers:list
Request Body:
[
"c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"c8c2909d-75e9-484a-94c0-b7e8d29771fe"
]
HTTP 200 OK
[
{
"phoneNumberId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"phoneNumber": "+16479308804",
"displayName": "private Number",
"isCallingPartyNumber": true,
"countryCode": "US",
"type": "LOCAL",
"accountId": "ABCDEF",
"status": "ACTIVE",
"statusMessage": "",
"preferredMediaLocation": "US-LA"
},
{
"phoneNumberId": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"phoneNumber": "+16479902347",
"displayName": "private Number",
"isCallingPartyNumber": true,
"countryCode": "US",
"type": "LOCAL",
"accountId": "ABCDEF",
"status": "INACTIVE",
"statusMessage": "Verification needed. Please send the necessary documents to [email protected] to activate it.",
"preferredMediaLocation": "US-LA"
}
]
Validate list of phone numbers
To validate list of phone number ids, you should invoke Validate Phone Numbers api.
POST /phone-numbers:validate
/api/admin/voice/v1/accounts/{accountId}/phone-numbers:validate
Request Body:
[
"c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"1f15835f-1365-4913-acf3-0ffd0767ad6e",
"1d033683-f1cc-477d-a190-a6d10d8a686d",
"c96c4d34-57fa-4256-8dc3-5f66252acb99"
]
HTTP 200 OK
{
"valid": [
{
"id": "c8c2909d-75e9-484a-94c0-b7e8d29771fe"
},
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e"
}
],
"invalid": [
{
"id": "1d033683-f1cc-477d-a190-a6d10d8a686d",
"message": "Phone number doesn't exist or disabled"
},
{
"id": "c96c4d34-57fa-4256-8dc3-5f66252acb99",
"message": "Phone number doesn't exist or disabled"
}
]
}
Get Phone Numbers Payloads By phone numbers list
To get list of Phone Numbers details by phone numbers list you should invoke Get by Phone Number Api.
You need to provide request body as list of phone numbers and it will return phone number payload(s) which is/are not DISABLED.
POST /phone-numbers:getByPhoneNumbers
/api/admin/voice/v1/accounts/{accountId}/phone-numbers:getByPhoneNumbers
Request Body:
[
"+1675904984",
"+1923678899"
]
HTTP 200 OK
[
{
"phoneNumberId": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"phoneNumber": "+16479308804",
"displayName": "private Number",
"isCallingPartyNumber": true,
"countryCode": "US",
"type": "LOCAL",
"accountId": "ABCDEF",
"status": "INACTIVE",
"statusMessage": "Verification needed. Please send the necessary documents to [email protected] to activate it.",
"preferredMediaLocation": "US-LA"
},
{
"phoneNumberId": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"phoneNumber": "+16479902347",
"displayName": "private Number",
"isCallingPartyNumber": true,
"countryCode": "US",
"type": "LOCAL",
"accountId": "ABCDEF",
"status": "INACTIVE",
"statusMessage": "Verification needed. Please send the necessary documents to [email protected] to activate it.",
"preferredMediaLocation": "US-LA"
}
]
Available Phone Numbers
To get Available numbers you should invoke Available Phone Numbers after a number has been deleted.
The available phone numbers that can be added to the contact center will be listed.
GET /available-phone-numbers
/api/admin/voice/v1/accounts/{accountId}/available-phone-numbers?countryCode=US&type=TOLLFREE&areaCode=330&phoneNumber=%2B16479308804&pageNumber=1&pageSize=5
HTTP 200 OK
{
"pagination": {
"pageNumber": 2,
"pageSize": 10,
"total": 45
},
"phoneNumbers": [
{
"phoneNumber": "+16479308804",
"countryCode": "US",
"type": "LOCAL",
"documentationRequired": true
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/ABCDEF/available-phone-numbers?pageNumber=1&pageSize=10",
"next": "/api/admin/voice/v1/accounts/ABCDEF/available-phone-numbers?pageNumber=3&pageSize=10"
}
}
as you will notice from response, There is a field documentationRequired
which indicates if the activation of this number will be required. you should send necessary documents to [email protected] to activate it.
3. Hybrid Voice Elements Info
Avaya Aura Device Services - Element Management
Creating an Avaya Aura Device Services Element
To create a new Avaya Aura Device Services Element you should invoke Create Avaya Aura Device Services. You should provide basic details such as a name
, description
, hostname
and port
. It is recommended to have descriptive and meaningful names that convey the Avaya Aura Device Services's purpose. For example, Avaya Aura Device Services For Production
etc.
POST /avaya-aura-device-services
/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services
Request Body:
{
"name": "AADS",
"hostname": "aads.avaya.com",
"port": 443,
"description": "AADS Server"
}
After the Avaya Aura Device Services Element request has been accepted an async process will be triggered to configure the element, the status of which should be monitored via /avaya-aura-device-services/{avayaAuraDeviceServiceId}.
After the Avaya Aura Device Services Element has been created you will receive a id
in the response that you should use in all subsequent requests related to that Avaya Aura Device Services.
HTTP 202 Accepted
{
"url": "/v1/accounts/ABCDEF/avaya-aura-device-services/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Updating an Avaya Aura Device Services
To update an Avaya Aura Device Services Element you should invoke Update Avaya Aura Device Services. You should include all the details of the Avaya Aura Device Services Element.
The same basic principle applies to any updates made to the Avaya Aura Device Services Element.
PUT /avaya-aura-device-services/{avayaAuraDeviceServiceId}
/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
Request Body:
{
"name": "AADS",
"hostname": "aads.avaya.com",
"port": 443,
"description": "AADS Server updated"
}
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64"
}
Get an Avaya Aura Device Services
To get an Avaya Aura Device Services Element you should invoke Get an Avaya Aura Device Services. The response body will return an Avaya Aura Device Services Element.
GET /avaya-aura-device-services/{avayaAuraDeviceServiceId}
/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services/5e9be49a-32d3-4927-83c7-7b0952798028
HTTP 200 OK
{
"id": "5e9be49a-32d3-4927-83c7-7b0952798028",
"name": "AADS",
"hostname": "aads.avaya.com",
"port": 443,
"description": "AADS Server",
"oidcDiscoveryUrl" : "https://{{REGION}}.cc.avayacloud.com/auth/realms/ABCDEF/.well-known/openid-configuration"
}
Get All Avaya Aura Device Services
To get all Avaya Aura Device Services you should invoke Get All Avaya Aura Device Services. The response body will return all the Avaya Aura Device Services for that account.
GET /avaya-aura-device-services
/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services/
HTTP 200 OK
{
"resources" : [
{
"id": "5e9be49a-32d3-4927-83c7-7b0952798028",
"name": "AADS",
"hostname": "aads.avaya.com",
"port": 443,
"description": "AADS Server",
"oidcDiscoveryUrl" : "https://{{REGION}}.cc.avayacloud.com/auth/realms/ABCDEF/.well-known/openid-configuration"
}
]
}
Deleting an Avaya Aura Device Services Element
To delete an Avaya Aura Device Services Element you should invoke Delete Avaya Aura Device Services. No response body is returned from this request.
DELETE /avaya-aura-device-services/{avayaAuraDeviceServiceId}
/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
HTTP 202 Accepted
After an Avaya Aura Device Services Element has been deleted Get an Avaya Aura Device Services will return HTTP 404 Not Found
.
OpenID Connect Discovery URL
Get OpenID Connect Discovery URL
To get OpenID Connect Discovery URL you should invoke Get OpenID Connect Discovery URL. The response body will return OpenID Connect Discovery URL.
GET /avaya-aura-device-services:discoveryUrl
/api/admin/voice/v1/accounts/ABCDEF/avaya-aura-device-services:discoveryUrl
HTTP 200 OK
{
"oidcDiscoveryUrl" : "https://{{REGION}}.cc.avayacloud.com/auth/realms/ABCDEF/.well-known/openid-configuration"
}
Communication Manager - Element Management
Creating a Communication Manager Element
To create a new Communication Manager Element you should invoke Create Communication Manager. You should provide basic details such as a name
, description
, hostname
, port
, username
, password
and hybridCloudGatewayId
. If an account is configured with either the AXP Private or AXP Private Extended Scale deployment type under the Hybrid Voice feature, then hostname
, port
, username
, password
fields are optional and do not need to be configured.
It is recommended to have descriptive and meaningful names that convey the Communication Manager's purpose. For example, Communication Manager For Production
etc.
POST /communication-managers
/api/admin/voice/v1/accounts/ABCDEF/communication-managers
Request Body:
{
"name": "Communication Manager For Production",
"description": "This is testing Communication Manager.",
"hostname": "dc1-cm96.avayacloud.stage",
"port": "5022",
"username": "cust",
"password": "testpassword",
"version": "V10_X",
"hybridCloudGatewayId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23"
}
After the Communication Manager Element create request has been accepted an async process will be triggered to configure the element, the status of which should be monitored via /communication-managers/{communicationManagerId}.
After invoking the Communication Manager Element create API, you will receive a communicationManagerId
in the response that you should use in all subsequent requests related to that Communication Manager.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Updating a Communication Manager Element
To update an Communication Manager Element you should invoke Update Communication Manager. You should include all the details of the Communication Manager Element. If an account is configured with either the AXP Private or AXP Private Extended Scale deployment type under the Hybrid Voice feature, then hostname
, port
, username
, password
fields are optional and do not need to be configured.
The same basic principle applies to any updates made to the Communication Manager Element. It is treated as a complete replacement.
PUT /communication-managers/{communicationManagerId}
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
Request Body:
{
"name": "CM4696",
"description": "This is testing Communication Manager.",
"hostname": "dc1-cm96.avayacloud.stage",
"port": "5022",
"username": "cust",
"password": "testpassword",
"version": "V10_X",
"hybridCloudGatewayId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23"
}
After the Communication Manager Element update request has been accepted an async process will be triggered to update the configured element, the status of which should be monitored via /communication-managers/{communicationManagerId}.
After invoking the Communication Manager Element update API, you will receive a communicationManagerId
in the response that you should use in all subsequent requests related to that Communication Manager.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Deleting a Communication Manager Element
To delete an Communication Manager Element you should invoke Delete Communication Manager. No response body is returned from this request.
DELETE /communication-managers/{communicationManagerId}
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
After the Communication Manager Element delete request has been accepted an async process will be triggered to delete the configured element, the status of which should be monitored via /communication-managers/{communicationManagerId}. Once this returns a 404-Not Found error, it can be assumed that the element is deleted successfully.
HTTP 202 Accepted
After an Communication Manager Element has been deleted Get an Communication Manager will return HTTP 404 Not Found
.
Get a Communication Manager Element
To get a single Communication Manager Element you should invoke Get a Communication Manager Element. The response body will return a single Communication Manager Element with specified id. If an account is configured with either the AXP Private or AXP Private Extended Scale deployment type under the Hybrid Voice feature, then hostname
, port
, username
, password
fields are optional and may not be contain the value.
GET /communication-managers/{communicationManagerId}
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/c8c2909d-75e9-484a-94c0-b7e8d29771fe
HTTP 200 OK
{
"id": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"name": "CM4696",
"description": "This is staging Communication Manager.",
"hostname": "dc1-cm96.avayacloud.stage",
"port": "5022",
"username": "cust",
"password": "testpassword",
"version": "V10_X",
"hybridCloudGatewayId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"status": "IN_PROGRESS"
}
Get list of Communication Manager Elements
To get all Communication Manager Elements you should invoke Get all Communication Manager Elements. The response body will return a list of all Communication Manager Elements associated with specified account id.
GET /communication-managers
/api/admin/voice/v1/accounts/SQVYVE/communication-managers
HTTP 200 OK
{
"pagination": {
"pageNumber": 2,
"pageSize": 10,
"total": 20
},
"resources": [
{
"id": "fa703a3a-3dfb-4606-ae79-fd0fe0be3e64",
"name": "CM4696",
"description": "This is testing Communication Manager.",
"hostname": "dc1-cm96.avayacloud.stage",
"port": "5022",
"username": "cust",
"password": "testpassword",
"version": "V10_X",
"hybridCloudGatewayId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"status": "IN_PROGRESS"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/{accountId}/communication-managers?pageNumber=1&pageSize=10",
"next": "/api/admin/voice/v1/accounts/{accountId}/communication-managers?pageNumber=3&pageSize=10"
}
}
Avaya Hybrid Cloud Gateway - Element Management
Creating an Avaya Hybrid Cloud Gateway Element
To create a new Avaya Hybrid Cloud Gateway Element you should invoke Create Avaya Hybrid Cloud Gateway. You should provide basic details such as a systemId
,name
, description
, systemId
, publicKey
, publicKeyAlgorithm
, locationCode
, sessionManagerFqdnList
and isTermsAndConditionsAccepted
. It is recommended to have descriptive and meaningful names that convey the Avaya Hybrid Cloud Gateway purpose. For example, Avaya Hybrid Cloud Gateway For Production
etc.
POST /hybrid-cloud-gateways
/api/admin/voice/v1/accounts/ABCDEF/hybrid-cloud-gateways
Request Body:
{
"name": "AHCG123",
"description": "Description of the Avaya Hybrid Cloud Gateway",
"systemId": "fa703a3a-3dfb-4606-ae79-fd0fe0be3e64",
"publicKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8QuKUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm",
"publicKeyAlgorithm": "ES256",
"locationCode": "IN-MH",
"sessionManagerFqdnList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isTermsAndConditionsAccepted": true
}
After the Avaya Hybrid Cloud Gateway Element create request has been accepted an async process will be triggered to configure the element, the status of which should be monitored via /hybrid-cloud-gateways/{hybridCloudGatewayId}.
After invoking the Avaya Hybrid Cloud Gateway Element create API, you will receive a hybridCloudGatewayId
in the response that you should use in all subsequent requests related to that Avaya Hybrid Cloud Gateway.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/hybrid-cloud-gateways/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Updating an Avaya Hybrid Cloud Gateway Element
To update a Avaya Hybrid Cloud Gateway Element you should invoke Update Avaya Hybrid Cloud Gateway. You should include all the details of the Avaya Hybrid Cloud Gateway Element.
The same basic principle applies to any updates made to the Avaya Hybrid Cloud Gateway Element. It is treated as a complete replacement.
PUT /hybrid-cloud-gateways/{hybridCloudGatewayId}
/api/admin/voice/v1/accounts/ABCDEF/hybrid-cloud-gateways/41c6ef0d-5470-406e-ace2-6dc442b99318
Request Body:
{
"name": "AHCG123",
"description": "Description of the Avaya Hybrid Cloud Gateway",
"publicKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8QuKUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm",
"publicKeyAlgorithm": "ES256",
"locationCode": "IN-MH",
"sessionManagerFqdnList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
]
}
After the Hybrid Cloud Gateway Element update request has been accepted an async process will be triggered to update the configured element, the status of which should be monitored via /hybrid-cloud-gateways/{hybridCloudGatewayId}.
After invoking the Hybrid Cloud Gateway Element update API, you will receive a hybridCloudGatewayId
in the response that you should use in all subsequent requests related to that Hybrid Cloud Gateway.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/hybrid-cloud-gateways/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Deleting an Avaya Hybrid Cloud Gateway Element
To delete a Avaya Hybrid Cloud Gateway Element you should invoke Delete Avaya Hybrid Cloud Gateway. No response body is returned from this request.
DELETE /hybrid-cloud-gateways/{hybridCloudGatewayId}
/api/admin/voice/v1/accounts/ABCDEF/hybrid-cloud-gateways/41c6ef0d-5470-406e-ace2-6dc442b99318
After the Hybrid Cloud Gateway Element delete request has been accepted an async process will be triggered to delete the configured element, the status of which should be monitored via /hybrid-cloud-gateways/{hybridCloudGatewayid}.
HTTP 202 Accepted
After a Avaya Hybrid Cloud Gateway Element has been deleted Get an Avaya Hybrid Cloud Gateway will return HTTP 404 Not Found
.
Get an Avaya Hybrid Cloud Gateway Element
To get a single Avaya Hybrid Cloud Gateway Element you should invoke Get a Avaya Hybrid Cloud Gateway. The response body will return a single Avaya Hybrid Cloud Gateway with specified id.
GET /hybrid-cloud-gateways/{hybridCloudGatewayId}
/api/admin/voice/v1/accounts/SQVYVE/hybrid-cloud-gateways/41c6ef0d-5470-406e-ace2-6dc442b99318
HTTP 200 OK
{
"id": "41c6ef0d-5470-406e-ace2-6dc442b99318",
"name": "AHCG123",
"description": "Description of the Avaya Hybrid Cloud Gateway",
"systemId": "fa703a3a-3dfb-4606-ae79-fd0fe0be3e64",
"publicKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8QuKUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm",
"publicKeyAlgorithm": "ES256",
"locationCode": "IN-MH",
"sessionManagerFqdnList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isTermsAndConditionsAccepted": true,
"status": "IN_PROGRESS"
}
Get list of Avaya Hybrid Cloud Gateway Elements
To get all Avaya Hybrid Cloud Gateway Elements you should invoke Get all Avaya Hybrid Cloud Gateway Elements. The response body will return a list of all Avaya Hybrid Cloud Gateway Elements associated with specified account id.
GET /hybrid-cloud-gateways
/api/admin/voice/v1/accounts/SQVYVE/hybrid-cloud-gateways
HTTP 200 OK
{
"resources": [
{
"id": "41c6ef0d-5470-406e-ace2-6dc442b99318",
"name": "AHCG123",
"description": "Description of the Avaya Hybrid Cloud Gateway",
"systemId": "fa703a3a-3dfb-4606-ae79-fd0fe0be3e64",
"publicKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8QuKUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm",
"publicKeyAlgorithm": "ES256",
"locationCode": "IN-MH",
"sessionManagerFqdnList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isTermsAndConditionsAccepted": true,
"status": "IN_PROGRESS"
}
]
}
System Manager - Element Management
If an account is configured with AXP Private Extended Scale deployment type under the Hybrid Voice feature, then configuring System Manager element is not supported.
Creating a System Manager Element
To create a new System Manager Element you should invoke Create System Manager. You should provide basic details such as a name
, description
, primaryHostname
, secondaryHostname
, username
, password
, enrollmentPassword
, activeSystemManager
and useForCerts
. It is recommended to have descriptive and meaningful names that convey the System Manager purpose. For example, System Manager For Production
etc.
POST /system-managers
/api/admin/voice/v1/accounts/ABCDEF/system-managers
Request Body:
{
"name": "SMGR for Production",
"description": "Description of the System Manager in production",
"primaryHostname": "dc1-smgr96.avayacloud.stage",
"username": "dummyUser",
"password": "dummypassword",
"enrollmentPassword": "testpassword",
"secondaryHostname": "dc2-smgr97.avayacloud.stage",
"activeSystemManager": "PRIMARY",
"useForCerts": true
}
After the System Manager Element create request has been accepted an async process will be triggered to configure the element, the status of which should be monitored via /system-managers/{systemManagerId}.
After invoking the System Manager Element create API, you will receive a systemManagerId
in the response that you should use in all subsequent requests related to that System Manager.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/system-managers/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Updating a System Manager Element
To update a System Manager Element you should invoke Update System Manager. You should include all the details of the System Manager Element.
The same basic principle applies to any updates made to the System Manager Element. It is treated as a complete replacement.
PUT /system-managers/{systemManagerId}
/api/admin/voice/v1/accounts/ABCDEF/system-managers/41c6ef0d-5470-406e-ace2-6dc442b99318
Request Body:
{
"name": "SMGR for Production",
"description": "Description of the System Manager in production",
"primaryHostname": "dc1-smgr96.avayacloud.stage",
"username": "dummyUser",
"password": "dummypassword",
"enrollmentPassword": "testpassword",
"secondaryHostname": "dc2-smgr97.avayacloud.stage",
"activeSystemManager": "PRIMARY"
}
After the System Manager Element update request has been accepted an async process will be triggered to update the configured element, the status of which should be monitored via /system-managers/{systemManagerId}.
After invoking the System Manager Element update API, you will receive a systemManagerId
in the response that you should use in all subsequent requests related to that System Manager.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/system-managers/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Deleting a System Manager Element
To delete a System Manager Element you should invoke Delete System Manager. No response body is returned from this request.
DELETE /system-managers/{systemManagerId}
/api/admin/voice/v1/accounts/ABCDEF/system-managers/41c6ef0d-5470-406e-ace2-6dc442b99318
After the System Manager Element delete request has been accepted an async process will be triggered to delete the configured element, the status of which should be monitored via /system-managers/{systemManagerId}.
HTTP 202 Accepted
After a System Manager Element has been deleted Get a System Manager will return HTTP 404 Not Found
.
Get a System Manager Element
To get a single System Manager Element you should invoke Get a System Manager. The response body will return a single System Manager Element with specified id.
GET /system-managers/{systemManagerId}
/api/admin/voice/v1/accounts/SQVYVE/system-managers/41c6ef0d-5470-406e-ace2-6dc442b99318
HTTP 200 OK
{
"id": "63c6ff9d-3370-090e-bkb2-7gh442b99985",
"name": "SMGR for Production",
"description": "Description of the System Manager in production",
"primaryHostname": "dc1-smgr96.avayacloud.stage",
"username": "dummyUser",
"password": "dummypassword",
"enrollmentPassword": "testpassword",
"secondaryHostname": "dc2-smgr97.avayacloud.stage",
"activeSystemManager": "PRIMARY",
"useForCerts": true,
"status": "IN_PROGRESS"
}
Get list of System Manager Elements
To get all System Manager Elements you should invoke Get all System Manager Elements. The response body will return a list of all System Manager Elements associated with specified account id.
GET /system-managers
/api/admin/voice/v1/accounts/SQVYVE/system-managers
HTTP 200 OK
{
"resources": [
{
"id": "63c6ff9d-3370-090e-bkb2-7gh442b99985",
"name": "SMGR for Production",
"description": "Description of the System Manager in production",
"primaryHostname": "dc1-smgr96.avayacloud.stage",
"username": "dummyUser",
"password": "dummypassword",
"enrollmentPassword": "testpassword",
"secondaryHostname": "dc2-smgr97.avayacloud.stage",
"activeSystemManager": "PRIMARY",
"useForCerts": true,
"status": "IN_PROGRESS"
}
]
}
Feature Toggles Webhook
Overview
Feature Toggles Webhook API allows to get real time events if any modification happens in feature toggle.
Voice service has the ability to receive these real time modifications in feature toggle via Hybrid AXP-Elite Voice Provider APIs
Before you begin
Refer to How to Authenticate with AXP APIs required to invoke Voice APIs.
Voice APIs require the Account Administrator role for access.
Updating Feature Toggle
To update any modification happened in feature toggle you should invoke Update Feature Toggle. You should provide required details like featureToggleId
, featureToggleName
, defaultState
, accounts
, deprecated
and operation
.
PUT /voice-service-webhook
/api/admin/voice/v1/voice-service-webhook
Request Body:
{
"featureToggleId": "ce8042a2-12f8-406f-5fd3-86c1c16d3a54",
"featureToggleName": "enableHCMIntegration",
"displayName": "Enable HCM Integration",
"description": "Enable HCM Integration",
"type": "Boolean",
"defaultValue": "MPC",
"defaultState": false,
"deprecated": false,
"operation": "UPDATED",
"accounts": [
{
"accountId": "ALL",
"enabled": true,
"value": false
},
{
"accountId": "PFRSTS",
"enabled": true,
"value": true
}
]
}
HTTP 204 No Content
4. Hybrid Voice Entities Info
Reason Code Configuration
Overview
Reason codes are a set of codes that agents can select from agent desktop clients to further describe their current activity or state. Reason Codes consist of a unique codeName, codeNumber and codeType combination. This API is used to create, update, retrieve and delete NOT_READY, LOGOUT reason codes and CALL_WORK_CODES codes.
The agents can use the Not Ready Reason Code while moving into Not Ready state. Logout reason codes are used to indicate reason for logging out of the system. A Call Work Code is used to track customer-defined events. The type of Call Work Code depends on the call center usage. Some examples of call work code can be a social security number or your account code.
Voice Service owns and provides ability to manage different Reason Codes such as Not Ready, Logout and Call Word Codes against a Communication Manager element.
- An account administrator creates the Reason Code via Hybrid AXP-Elite Voice Provider APIs.
Reason Code Management
Creating a Reason Code
To create a new Reason Code you should invoke Create Reason Code. You should provide basic details such as a name
, number
, type
,interruptible
and system Defined Attributes
. It is recommended to have descriptive and meaningful names that convey the Reason Code's purpose. For example, Not Ready Reason code can be LunchBreak
etc.
The systemDefinedAttributes
field indicates if the Reason Code has additional system defined behavior. This is applicable to NOT READY Reason Codes. Only one Not Ready Reason Code shall be allowed to be marked as 'Work on Digital'. If a Not Ready Reason Code is marked as 'Work on Digital', it cannot be assigned any other system-defined attribute. At least one Not Ready Reason Code needs to be marked as 'Work on Digital'.
POST /reason-codes
/api/admin/voice/v1/accounts/{accountId}/communication-managers/{communicationManagerId}/reason-codes
Request Body:
{
"codeName": "Lunch",
"description": "Note Ready reason code for lunch break.",
"codeNumber": "89",
"codeType": "NOT_READY",
"isInterruptible": false,
"systemDefinedAttributes": ["WORKING_ON_DIGITAL"],
"organizationNodeId": "XPEGJK"
}
After the Reason Code request has been accepted an async process will be triggered to configure the reason code, the status of which should be monitored via GET /reason-codes/{reasonCodeId} API. This is async process since Reason Codes is planned to be propagated to the relevant Communication Manager at some point in time.
After the Reason Code has been created you will receive a reasonCodeId
in the response that you should use in all subsequent requests related to that Reason Code.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/XPEGJK/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/reason-codes/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64"
}
Updating a Reason Code
To update a Reason Code you should invoke Update Reason Code. You should include all the details of the Reason Code. Fields that are omitted from the update that were previously present will be removed.
The same basic principle applies to any updates made to the Reason Code. It is treated as a complete replacement.
PUT /reason-codes/{reasonCodeId}
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/reason-codes/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
Request Body:
{
"codeName": "Lunch",
"description": "Note Ready reason code for lunch break.",
"isInterruptible": false,
"systemDefinedAttributes": ["WORKING_ON_DIGITAL"],
"organizationNodeId": "XPEGJK"
}
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/ABCDEF/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/reason-codes/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64"
}
Deleting a Reason Code
To delete a Reason Code you should invoke Delete Reason Code. No response body is returned from this request.
DELETE /reason-codes/{reasonCodeId}
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/reason-codes/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
HTTP 202 Accepted
After a Reason Code has been deleted Get a Reason Code will return HTTP 404 Not Found
.
Get a Reason Code
To get a single Reason Code you should invoke Get Reason Code. The response body will return a Reason Code with specified id.
GET /reason-codes/{reasonCodeId}
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/reason-codes/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
HTTP 200 OK
{
"reasonCodeId": "fa703a3a-3dfb-4606-ae79-fd0fe0be3e64",
"codeName": "Lunch",
"description": "Note Ready reason code for lunch break.",
"codeNumber": "89",
"codeType": "NOT_READY",
"isInterruptible": false,
"systemDefinedAttributes": ["WORKING_ON_DIGITAL"],
"organizationNodeId" : "EXMPLE",
"status": "IN_PROGRESS"
}
Get list of Reason Codes
To get all Reason Codes you should invoke Get all Reason Codes . The response body will return a list of all reason codes associated with specified account id and communication-managers server id.
GET /reason-codes
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/reason-codes/
HTTP 200 OK
{
"pagination": {
"pageNumber": 2,
"pageSize": 10,
"total": 20
},
"resources": [
{
"reasonCodeId": "fa703a3a-3dfb-4606-ae79-fd0fe0be3e64",
"codeName": "Lunch",
"description": "Note Ready reason code for lunch break.",
"codeNumber": "89",
"codeType": "NOT_READY",
"isInterruptible": false,
"systemDefinedAttributes": ["WORKING_ON_DIGITAL"],
"organizationNodeId" : "EXMPLE",
"status": "IN_PROGRESS"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/{accountId}/communication-managers/{communicationManagerId}/reason-codes?pageNumber=1&pageSize=10",
"next": "/api/admin/voice/v1/accounts/{accountId}/communication-managers/{communicationManagerId}/reason-codes?pageNumber=3&pageSize=10"
}
}
Voice Plan Management
Overview
The Voice Plan is associated with Communication Manager. Each voice plan will be holding one or more entity ranges from Communication Manager, which is assigned to tenant and during sync entities of only those specific ranges will get synced to the tenant.
Voice Service owns and provides ability to configure, update and delete Voice Plan associated with Communication Manager Server.
- An account administrator creates the voice plan Voice Administration APIs.
Before you begin
Refer to How to Authenticate with AXP APIs required to invoke Voice APIs.
There are 2 different types of Voice Plan: User Voice Plan
and System Range
. At least one System Range is required to be configured, before configuring a User Voice Plan.
Voice APIs require the Account Administrator role for access.
Creating a Voice Plan
To create a new Voice Plan you should invoke Create Voice Plan. You should provide basic details such as a name
, type
, userProfileId
and provide ranges to extension, agent, reason codes (depending on type of Voice Plan). It is recommended to have descriptive and meaningful names that convey the Voice Plan for particular Communication Manager. For example, Voice Plan 1 For Production
etc.
If an account is configured with AXP Private Extended Scale deployment type under the Hybrid Voice feature, then Voice Plan is supposed to be configured via Mega Configuration Server user interface.
POST /voice-plans
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/voice-plans
Request Body (System Range):
{
"name": "System Range for Production",
"type": "SYSTEM",
"userProfileId": "ASEDFG",
"description": "System Range for production Communication Manager",
"reasonCodeNotReadyRange": [
"1:20",
"50:99"
],
"reasonCodeLogOutRange": [
"1:9"
]
}
Request Body (User Voice Plan):
{
"name": "User Voice Plan for Production",
"type": "USER",
"userProfileId": "ASEDFG",
"description": "User Voice plan for production Communication Manager",
"agentDialPlanRange": [
"20000:20100"
],
"extensionDialPlanRange": [
"30000:30100",
"8000000:9000000"
]
}
After the Voice Plan has been created successfully, you will receive a voicePlanId
in the response that should be used in all subsequent requests related to that Voice Plans.
HTTP 201 Created (System Range)
{
"voicePlanId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"name": "System Range for Production",
"type": "SYSTEM",
"userProfileId": "ASEDFG",
"description": "System Range for production Communication Manager",
"reasonCodeNotReadyRange": [
"1:20",
"50:99"
],
"reasonCodeLogOutRange": [
"1:9"
]
}
HTTP 201 Created (User Voice Plan)
{
"voicePlanId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"name": "User Voice Plan for Production",
"type": "USER",
"userProfileId": "ASEDFG",
"description": "User Voice plan for production Communication Manager",
"agentDialPlanRange": [
"20000:20100"
],
"extensionDialPlanRange": [
"30000:30100",
"8000000:9000000"
]
}
Updating a Voice Plan
To update a Voice Plan you should invoke Update Voice Plan. You should include all the details of the Voice Plan.
PUT /voice-plans/{voicePlanId}
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/voice-plans/3987iuy7-3dfb-4606-ae79-fd0te0be3e23
Request Body (System Range):
{
"name": "System Range for Production",
"type": "SYSTEM",
"userProfileId": "ASEDFG",
"description": "System Range for production Communication Manager",
"reasonCodeNotReadyRange": [
"1:20",
"50:99"
],
"reasonCodeLogOutRange": [
"1:9"
]
}
Request Body (User Voice Plan):
{
"name": "User Voice Plan for Production",
"type": "USER",
"userProfileId": "ASEDFG",
"description": "User Voice plan for production Communication Manager",
"agentDialPlanRange": [
"20000:20100"
],
"extensionDialPlanRange": [
"30000:30100",
"8000000:9000000"
]
}
HTTP 200 OK (System Range)
{
"voicePlanId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"name": "System Range for Production",
"type": "SYSTEM",
"userProfileId": "ASEDFG",
"description": "System Range for production Communication Manager",
"reasonCodeNotReadyRange": [
"1:20",
"50:99"
],
"reasonCodeLogOutRange": [
"1:9"
]
}
HTTP 200 OK (User Voice Plan)
{
"voicePlanId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"name": "User Voice Plan for Production",
"type": "USER",
"userProfileId": "ASEDFG",
"description": "User Voice plan for production Communication Manager",
"agentDialPlanRange": [
"20000:20100"
],
"extensionDialPlanRange": [
"30000:30100",
"8000000:9000000"
]
}
Get a Voice Plan
To get a single Voice Plan you should invoke Get Voice Plan. The response body will return a Voice Plan with specified id.
GET /voice-plans/{voicePlanId}
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/voice-plans/3987iuy7-3dfb-4606-ae79-fd0te0be3e23
HTTP 200 OK
{
"voicePlanId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"name": "User Voice Plan",
"type": "USER",
"userProfileId": "ASEDFG",
"description": "User Voice plan for Communication Manager",
"agentDialPlanRange": [
"20000:20100"
],
"extensionDialPlanRange": [
"30000:30100",
"8000000:9000000"
]
}
Get list of Voice Plans
To get all Voice Plans you should invoke Get all Voice Plans. The response body will return a list of all voice plans associated with specified account id and communication-managers server id.
GET /voice-plans
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/voice-plans
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 2
},
"resources": [
{
"voicePlanId": "3987iuy7-3dfb-4606-ae79-fd0te0be3e23",
"name": "User Voice Plan for Production",
"type": "USER",
"userProfileId": "ASEDFG",
"description": "User Voice plan for production Communication Manager",
"agentDialPlanRange": [
"20000:20100"
],
"extensionDialPlanRange": [
"30000:30100",
"8000000:9000000"
]
},
{
"voicePlanId": "8726iuz7-5djh-9876-tr98-fd0te0be783",
"name": "System Range for Production",
"type": "SYSTEM",
"userProfileId": "ASEDFG",
"description": "System Range for production Communication Manager",
"reasonCodeNotReadyRange": [
"1:20",
"50:99"
],
"reasonCodeLogOutRange": [
"1:9"
]
}
],
"links": {
"next": "/api/admin/voice/v1/accounts/GHFDWE/communication-managers/18e4f754-5e42-4387-ae13-e9b4fe4aed29/voice-plans?pageNumber=3&pageSize=10",
"previous": "/api/admin/voice/v1/accounts/GHFDWE/communication-managers/18e4f754-5e42-4387-ae13-e9b4fe4aed29/voice-plans?pageNumber=1&pageSize=10"
}
}
Deleting a Voice Plan
To delete a voice plan you should invoke Delete Voice Plan. No response body is returned for this request.
DELETE /voice-plans/{voicePlanId}
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/c8c2909d-75e9-484a-94c0-b7e8d29771fe/voice-plans/3987iuy7-3dfb-4606-ae79-fd0te0be3e23
HTTP 204 No Content
After a Voice Plan has been deleted Get Voice Plan will return HTTP 404 Not Found
.
Route Points Management
Get List of Route Points
To get all Route Points you should invoke Get Extensions. The response body will return a list of all Route Points associated with specified account id.
GET /extensions
/api/admin/voice/v1/accounts/SQVYVE/extensions
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 2
},
"resources": [
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": 50003456,
"name": "Jon Extension"
},
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6f",
"number": 500034566,
"name": "My Extension"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/ASDJGE/extensions?pageNumber=1&pageSize=10",
"next": "/api/admin/voice/v1/accounts/ASDJGE/extensions?pageNumber=2&pageSize=10"
}
}
Create Route Point
To Create Route Point you should invoke Create Extension. The response body will return a created Route Point associated with specified account id.
POST /extensions
/api/admin/voice/v1/accounts/SQVYVE/extensions
Request Body:
{
"number": 50003456,
"name": "Jon Extension"
}
HTTP 200 OK
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": 50003456,
"name": "Jon Extension"
}
Get Route Point
To Get Route Point you should invoke Get Extension. The response body will return a Route Point associated with specified account id and ExtensionId.
Get /extensions/{ExtensionId}
/api/admin/voice/v1/accounts/SQVYVE/extensions/1f15835f-1365-4913-acf3-0ffd0767ad6e
HTTP 200 OK
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": 50003456,
"name": "Jon Extension"
}
Update Route Point
To Update Route Point you should invoke Update Extension. The response body will return a Updated Route Point associated with specified account id and ExtensionId.
PUT /extensions/{ExtensionId}
/api/admin/voice/v1/accounts/SQVYVE/extensions/1f15835f-1365-4913-acf3-0ffd0767ad6e
Request Body:
{
"number": 50003456,
"name": "Jon Extension"
}
HTTP 200 OK
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": 50003456,
"name": "Jon Extension"
}
Delete Route Point
To Delete Route Point you should invoke Delete Extension No response body is returned from this request.
DELETE /extensions/{ExtensionId}
/api/admin/voice/v1/accounts/SQVYVE/extensions/1f15835f-1365-4913-acf3-0ffd0767ad6e
HTTP 204 No Content
Hybrid Extension Management
Get list of Extensions
To get all extensions you should invoke Get all Extensions. The response body will return a list of all extensions associated with specified account id and communication-managers server id.
GET /extensions
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/extensions
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 2
},
"resources": [
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": 50003456,
"name": "Jon Extension",
"loginId": [
"[email protected]"
]
},
{
"id": "a4c2c9b5-0e47-491d-b139-dc48cccdea72",
"number": 500034567,
"name": "New Extension",
"loginId": [
"[email protected]"
]
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/ASDJGE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/extensions?pageNumber=1&pageSize=10",
"next": "/api/admin/voice/v1/accounts/ASDJGE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/extensions?pageNumber=2&pageSize=10"
}
}
Deleting a Extension
To delete a extension you should invoke Delete Extension. No response body is returned for this request.
DELETE /extensions/{extensionId}
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/extensions/fa703a3a-3dfb-4606-ae79-fd0fe0be3e64
HTTP 202 Accepted
Sync Aura Entities
Overview
Sync APIs are used to initiate synchronization of data from Aura to AXP connect admin and show the status of sync jobs. There are 4 entities available for synchronization
Agents , Extensions, Not Ready Reason Codes, System Parameter Features.
Before you begin
At least one System defined and User defined Voice plan required to be configured to perform synchronization.
Trigger Sync Job
To trigger a sync job you should invoke Trigger Sync. You should provide arrays of entities AGENT
, EXTENSION
, REASONCODE_AUX
, SYSTEM_PARAMETER_FEATURES
. It is recommended to have descriptive and meaningful job name.
POST /{communicationManagerId}:sync
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77:sync
Request Body:
{
"entities": [
"EXTENSION",
"AGENT",
"REASONCODE_AUX",
"SYSTEM_PARAMETER_FEATURES"
],
"name": "Test_Full_Sync"
}
After the sync job has been created successfully, you will receive a jobId
in the response along with url.
If an account is configured with either the AXP Private or AXP Private Extended Scale deployment type under the Hybrid Voice feature, then triggering Synchronization option is not supported.
HTTP 202 Accepted
{
"jobId": "55b1dc7f-38c3-48cf-9146-8cbed5622735",
"url": "/api/admin/voice/v1/accounts/HGEOAV/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/jobs/55b1dc7f-38c3-48cf-9146-8cbed5622735"
}
Get a Sync Job
To get a single synchronization job you should invoke Get Sync Job. The response body will return a Sync job with specified jobId.
GET /jobs/{jobId}
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/jobs/3987iuy7-3dfb-4606-ae79-fd0te0be3e23
HTTP 200 OK
{
"id": "ebce96ac-db7d-49ed-9007-2ce716333fe8",
"name": "FullSync_SYNC_Fri Dec 08 11_59_20 GMT 2023",
"type": "SYNC",
"statusCode": "FAILED",
"statusMessage": "Synchronization job timed out. No connection found with on premises Aura servers.",
"createdAt": "2023-12-08T11:59:20.306Z",
"updatedAt": "2023-12-08T12:14:36.593Z"
}
Get list of Synchronization Jobs
To get all synchronization jobs you should invoke Get all Sync Jobs. The response body will return a list of sync jobs associated with specified account id and communication-managers server id.
GET /jobs
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/a4c2c9b5-0e47-491d-b139-dc48cccdea72/jobs
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 3
},
"jobs": [
{
"id": "ebce96ac-db7d-49ed-9007-2ce716333fe8",
"name": "FullSync_SYNC_Fri Dec 08 11_59_20 GMT 2023",
"type": "SYNC",
"statusCode": "FAILED",
"statusMessage": "Synchronization job timed out. No connection found with on premises Aura servers.",
"createdAt": "2023-12-08T11:59:20.306Z",
"updatedAt": "2023-12-08T12:14:36.593Z"
},
{
"id": "89926278-340e-4417-9cee-64898e511514",
"name": "FullSync_SYNC_Fri Dec 08 11_23_20 GMT 2023",
"type": "SYNC",
"statusCode": "FAILED",
"statusMessage": "Synchronization job timed out. No connection found with on premises Aura servers.",
"createdAt": "2023-12-08T11:23:20.84Z",
"updatedAt": "2023-12-08T11:51:11.256Z"
},
{
"id": "8be5abf3-d443-49ad-b3e0-69172d092115",
"name": "FullSync_SYNC_Thu Dec 07 10_26_17 GMT 2023",
"type": "SYNC",
"statusCode": "COMPLETED",
"statusMessage": "Synchronization job completed successfully.",
"createdAt": "2023-12-07T10:26:17.645Z",
"updatedAt": "2023-12-07T10:26:53.11Z"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/SEFILD/communication-managers?pageNumber=1&pageSize=10&orderBy=createdAt%20desc",
"next": "/api/admin/voice/v1/accounts/SEFILD/communication-managers?pageNumber=2&pageSize=10&orderBy=createdAt%20desc"
}
}
Get a Sync Job Details
To get details of a synchronization job you should invoke Get Sync Job Details. The response body will return a Sync job with summary details with Entity Name, Status and Total Count of synced .
GET /jobs/{jobId}:details
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/jobs/3987iuy7-3dfb-4606-ae79-fd0te0be3e23:details
HTTP 200 OK
{
"jobEntityDetails": [
{
"entityType": "EXTENSION",
"entitySyncDetails": [
{
"entityCount": 5000,
"statusCode": "COMPLETED"
},
{
"entityCount": 0,
"statusCode": "FAILED"
},
{
"entityCount": 0,
"statusCode": "IN_PROGRESS"
}
]
},
{
"entityType": "REASONCODE_AUX",
"entitySyncDetails": [
{
"entityCount": 8,
"statusCode": "COMPLETED"
},
{
"entityCount": 2,
"statusCode": "FAILED"
},
{
"entityCount": 0,
"statusCode": "IN_PROGRESS"
}
]
},
{
"entityType": "SYSTEM_PARAMETER_FEATURES",
"entitySyncDetails": [
{
"entityCount": 7,
"statusCode": "COMPLETED"
},
{
"entityCount": 0,
"statusCode": "FAILED"
},
{
"entityCount": 0,
"statusCode": "IN_PROGRESS"
}
]
},
{
"entityType": "AGENT",
"entitySyncDetails": [
{
"entityCount": 4996,
"statusCode": "COMPLETED"
},
{
"entityCount": 0,
"statusCode": "FAILED"
},
{
"entityCount": 0,
"statusCode": "IN_PROGRESS"
}
]
}
]
}
Get entity details of sync Job
To get details of a synchronization job you should invoke Get Sync Job Entity Details. The response body will return a entity details of specific entity. For example Agent Entity will show synced agents details.
GET /jobs/{jobId}:entity-details
/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/jobs/3987iuy7-3dfb-4606-ae79-fd0te0be3e23:entity-details
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 7
},
"syncEntityDetails": [
{
"id": "215a563c-b03a-401a-97db-66404364dc88",
"entityType": "SYSTEM_PARAMETER_FEATURES",
"entityData": {
"systemParameterFeatures": {
"name": "roofAuxWorkReasonCode",
"value": "4"
}
},
"createdAt": "2023-12-08T11:59:36.684Z",
"updateAt": "2023-12-08T11:59:36.691Z",
"statusCode": "COMPLETED"
},
{
"id": "f70b4026-f25b-4f9b-a4ee-35109f8ef83a",
"entityType": "SYSTEM_PARAMETER_FEATURES",
"entityData": {
"systemParameterFeatures": {
"name": "ronaAuxWorkReasonCode",
"value": "3"
}
},
"createdAt": "2023-12-08T11:59:36.683Z",
"updateAt": "2023-12-08T11:59:36.691Z",
"statusCode": "COMPLETED"
},
{
"id": "0075f0eb-40db-427e-ba63-335187b2ca4e",
"entityType": "SYSTEM_PARAMETER_FEATURES",
"entityData": {
"systemParameterFeatures": {
"name": "iPFailureAuxWorkReasonCodeType",
"value": "6"
}
},
"createdAt": "2023-12-08T11:59:36.682Z",
"updateAt": "2023-12-08T11:59:36.691Z",
"statusCode": "COMPLETED"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/jobs/3987iuy7-3dfb-4606-ae79-fd0te0be3e23/entity-details?pageNumber=1&pageSize=10&orderBy=createdAt%20desc&entityType=SYSTEM_PARAMETER_FEATURES",
"next": "/api/admin/voice/v1/accounts/SQVYVE/communication-managers/ce8042a2-12f8-406f-5fd3-86c1c16d3a77/jobs/3987iuy7-3dfb-4606-ae79-fd0te0be3e23/entity-details?pageNumber=2&pageSize=10&orderBy=createdAt%20desc&entityType=SYSTEM_PARAMETER_FEATURES"
}
}
Hybrid Cloud Gateway Systems
Overview
Hybrid Cloud gateways systems APIs are used to Initiate Push Config to Voice Service and update public key at voice service when HCG Cluster is recovered
Initiate Push Config
To initiate push config you should invoke Initiate Push Config. The response will return a status code 200 OK.
POST /hybrid-cloud-gateway-systems/{systemId}:pushConfig
/api/admin/voice/v1/accounts/SQVYVE/hybrid-cloud-gateway-systems/ce8042a2-12f8-406f-5fd3-86c1c16d3a77:pushConfig
HTTP 200 OK
Update Public Key
To update public key you should invoke Update Public Key. The response will return a status code 200 OK.
PUT /hybrid-cloud-gateway-systems/{systemId}
/api/admin/voice/v1/accounts/SQVYVE/hybrid-cloud-gateway-systems/ce8042a2-12f8-406f-5fd3-86c1c16d3a77
Request Body:
{
"publicKey": "MIIBOgIBAAJBAKj34GkxFhD90vcNLYLInFEX6Ppy1tPf9Cnzj4p4WGeKLs1Pt8QuKUpRKfFLfRYC9AIKjbJTWit+CqvjWYzvQwECAwEAAQJAIJLixBy2qpFoS4DSmoEm",
"publicKeyAlgorithm": "ES256"
}
HTTP 200 OK
{
"status": "success",
"message": "Hybrid Cloud Gateway System updated successfully."
}
Location Profile
Creating a Location Profile
To create a Location Profile you should invoke Create Location Profile. You should provide basic details such as a name
, description
, locationCode
, isMediaLatchingEnabled
and sipServerAddressList
. It is recommended to have descriptive and meaningful names that convey the Location Profile purpose. For example, Location Profile For India Maharashtra
etc.
POST /location-profiles
/api/admin/voice/v1/accounts/ABCDEF/location-profiles
Request Body:
{
"name": "Location Profile IN",
"description": "Location Profile for IN",
"locationCode": "IN-MH",
"sipServerAddressList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isMediaLatchingEnabled": true
}
After the Location Profile create request has been accepted an async process will be triggered to process and send location profile payload to all configured HCG for that tenant and if it fails to push to any of the HCG, Location Profile will be put in to FAILED status, the status of which should be monitored via /location-profiles/{locationProfileId}.
After invoking the Location Profile create API, you will receive a locationProfileId
in the response that you should use in all subsequent requests related to that Location Profile.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/location-profiles/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Updating a Location Profile
To update a Location Profile you should invoke Update Location Profile. You should include all the details of the Location Profile.
The same basic principle applies to any updates made to the Location Profile. It is treated as a complete replacement.
PUT /location-profiles/{locationProfileId}
/api/admin/voice/v1/accounts/ABCDEF/location-profiles/41c6ef0d-5470-406e-ace2-6dc442b99318
Request Body:
{
"name": "Location Profile IN",
"description": "Location Profile for IN",
"locationCode": "IN-MH",
"sipServerAddressList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isMediaLatchingEnabled": true
}
After the Location Profile update request has been accepted an async process will be triggered to process and send location profile payload to all configured HCG for that tenant and if it fails to push to any of the HCG, Location Profile will be put in to FAILED status, the status of which should be monitored via /location-profiles/{locationProfileId}.
After invoking the Location Profile update API, you will receive a locationProfileId
in the response that you should use in all subsequent requests related to that Location Profile.
HTTP 202 Accepted
{
"url": "/api/admin/voice/v1/accounts/NCWBNY/location-profiles/5e9be49a-32d3-4927-83c7-7b0952798028"
}
Deleting a Location Profile
To delete a Location Profile you should invoke Delete Location Profile. No response body is returned from this request.
DELETE /location-profiles/{locationProfileId}
/api/admin/voice/v1/accounts/ABCDEF/location-profiles/41c6ef0d-5470-406e-ace2-6dc442b99318
After the Location Profile delete request has been accepted an async process will be triggered to delete the location profile from all configured HCG and if it fails to delete from any of the HCG then location profile from Application Center Administation will not be deleted and it will be put in to PENDING_DELETE status, the status of which should be monitored via /location-profiles/{locationProfileId}.
HTTP 202 Accepted
After a Location Profile has been deleted Get a Location Profile will return HTTP 404 Not Found
.
Deleting a Location Profile Forecefully
To forcefully delete a Location Profile you should invoke Delete Location Profile. with query parameter forceDelete=true No response body is returned from this request.
DELETE /location-profiles/{locationProfileId}
/api/admin/voice/v1/accounts/ABCDEF/location-profiles/41c6ef0d-5470-406e-ace2-6dc442b99318?forceDelete=true
After the Location Profile delete request has been accepted an async process will be triggered to try deletion of the location profile from all configured HCG and finally it will delete location profile from Application Center Administation irrespective of deleteion status from HCG. the status of which should be monitored via /location-profiles/{locationProfileId}.
HTTP 202 Accepted
After a Location Profile has been deleted Get a Location Profile will return HTTP 404 Not Found
.
Get a Location Profile
To get a single Location Profile you should invoke Get a Location Profile. The response body will return a single Location Profile with specified id.
GET /location-profiles/{locationProfileId}
/api/admin/voice/v1/accounts/SQVYVE/location-profiles/41c6ef0d-5470-406e-ace2-6dc442b99318
HTTP 200 OK
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Location Profile IN",
"description": "Location Profile for IN",
"locationCode": "IN-MH",
"sipServerAddressList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isMediaLatchingEnabled": true,
"status": "FAILED"
}
Get list of Location Profiles
To get all Location Profiles you should invoke Get all Location Profiles. The response body will return a list of all Location Profiles associated with specified account id.
GET /location-profiles
/api/admin/voice/v1/accounts/SQVYVE/location-profiles
HTTP 200 OK
{
"pagination": {
"pageNumber": 2,
"pageSize": 3,
"total": 10
},
"profiles": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Location Profile1",
"description": "Location Profile 1",
"locationCode": "IN-MH",
"sipServerAddressList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isMediaLatchingEnabled": true,
"status": "SUCCESS"
},
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"name": "Location Profile2",
"description": "Location Profile 2",
"locationCode": "IN-MH",
"sipServerAddressList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isMediaLatchingEnabled": true,
"status": "IN_PROGRESS"
},
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed31",
"name": "Location Profile3",
"description": "Location Profile 3",
"locationCode": "IN-MH",
"sipServerAddressList": [
"sm1906.avaya.com",
"sm-stage224.avaya.com",
"sm_prod2201.avaya.com"
],
"isMediaLatchingEnabled": true,
"status": "FAILED"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/ASDJGE/location-profiles?pageNumber=1&pageSize=3",
"next": "/api/admin/voice/v1/accounts/ASDJGE/location-profiles?pageNumber=3&pageSize=3"
}
}
Get list of Sip Trunks
To get all Sip Trunks you should invoke Get all Sip Trunks. The response body will return a list of all Sip Trunks associated with specified account id.
GET /sip-trunks
/api/admin/voice/v1/accounts/SQVYVE/sip-trunks
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 3,
"total": 10
},
"sipTrunks": [
{
"id": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"type": "BYOC",
"seqNumber": 1,
"provider": "umhgjt.eu.cc.avayacloud.com",
"providerDomain": "ringcentral.eu.cc.avayacloud.com",
"trunkName": "trunk1.umhgjt.eu.cc.avayacloud.com",
"outboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"inboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"releaseMediaAnchorDuringTransfer": false,
"preferredMediaLocation": "AL-01",
"callerId": "c8c2909d-75e9-484a-94c0-b7e8d297735f"
},
{
"id": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"type": "BYOC",
"seqNumber": 1,
"provider": "umhgjt.eu.cc.avayacloud.com",
"providerDomain": "ringcentral.eu.cc.avayacloud.com",
"trunkName": "trunk1.umhgjt.eu.cc.avayacloud.com",
"outboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"inboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"releaseMediaAnchorDuringTransfer": false,
"preferredMediaLocation": "AL-01",
"callerId": "c8c2909d-75e9-484a-94c0-b7e8d29771f8"
},
{
"id": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"type": "MSTEAMS_SIP_TRUNK",
"provider": "umhgjt.eu.cc.avayacloud.com",
"providerDomain": "ringcentral.eu.cc.avayacloud.com",
"trunkName": "trunk1.umhgjt.eu.cc.avayacloud.com",
"outboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"inboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"preferredMediaLocation": "AL-01",
"callerId": "c8c2909d-75e9-484a-94c0-b7e8d29771fg"
}
],
"links": {
"prev": "/api/admin/v1/accounts/ASDJGE/location-profiles?pageNumber=1&pageSize=3",
"next": "/api/admin/v1/accounts/ASDJGE/location-profiles?pageNumber=2&pageSize=3"
}
}
Update an SIP Trunks Caller ID
To update an SIP Trunks Caller ID you should invoke Update SIP Trunk Caller ID. As a part of request callerId UUID needs to be paased as part of payload and it will update the caller Id of Sip Trunk and return Sip Trunk as response.
PUT /sip-trunks/{sipTrunkId}
/api/admin/voice/v1/accounts/ABCDEF/sip-trunks/c8c2909d-75e9-484a-94c0-b7e8d29771fe
Request Body:
{
"callerId": "c8c2909d-75e9-484a-94c0-b7e8d29771fg"
}
HTTP 200 Accepted
{
"id": "c8c2909d-75e9-484a-94c0-b7e8d29771fe",
"type": "BYOC",
"seqNumber": 1,
"provider": "umhgjt.eu.cc.avayacloud.com",
"providerDomain": "ringcentral.eu.cc.avayacloud.com",
"trunkName": "trunk1.umhgjt.eu.cc.avayacloud.com",
"outboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"inboundDomain": "trunk1.umhgjt.eu.cc.avayacloud.com",
"releaseMediaAnchorDuringTransfer": false,
"preferredMediaLocation": "AL-01",
"callerId": "c8c2909d-75e9-484a-94c0-b7e8d29771fg"
}
Routing Rules
Creating a Routing Rule
To create a Routing Rule you should invoke Create Routing Rule. You should provide basic details such as a type
, priority
, prefix
, minLength
and maxLength
and optional fields as sipTrunkId
,callerId
,isoCountry
. It is recommended to have unique priority for each routing rule.
POST /outbound-routing-rules
/api/admin/voice/v1/accounts/ABCDEF/outbound-routing-rules
Request Body:
{
"type": "NUMBER_PREFIX",
"priority": 92,
"prefix": "+1",
"minLength": 1,
"maxLength": 45,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
HTTP 200 OK
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 92,
"prefix": "+1",
"minLength": 1,
"maxLength": 45,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
Updating a Routing Rule
To update a Routing Rule you should invoke Update Routing Rule. You should include all the details of the Routing Rule including the mandatory priority field.
PUT /outbound-routing-rules/{routingRuleId}
/api/admin/voice/v1/accounts/ABCDEF/outbound-routing-rules/27fa632f-3dd1-4192-8b72-b58689be6140
Request Body:
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 95,
"prefix": "+1",
"minLength": 1,
"maxLength": 45,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
HTTP 202 OK
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 95,
"prefix": "+1",
"minLength": 1,
"maxLength": 45,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
Deleting a Routing Rule
To delete a Routing Rule you should invoke Delete Routing Rule. No response body is returned from this request.
DELETE /outbound-routing-rules/{routingRuleId}
/api/admin/voice/v1/accounts/ABCDEF/outbound-routing-rules/27fa632f-3dd1-4192-8b72-b58689be6140
HTTP 204 No Content
Get a Routing Rule
To get a single Routing Rule you should invoke Get a Routing Rule. The response body will return a single Routing Rule with specified id.
GET /outbound-routing-rules/{routingRuleId}
/api/admin/voice/v1/accounts/SQVYVE/outbound-routing-rules/27fa632f-3dd1-4192-8b72-b58689be6140
HTTP 200 OK
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 95,
"prefix": "+1",
"minLength": 1,
"maxLength": 45,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
Get list of Routing Rules
To get all Routing Rules you should invoke List Outbound Routing Rules. The response body will return a list of all Routing Rules associated with specified account id.
GET /outbound-routing-rules
/api/admin/voice/v1/accounts/SQVYVE/outbound-routing-rules
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 6
},
"outboundRoutingRules": [
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 93,
"prefix": "+1",
"minLength": 1,
"maxLength": 46,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
},
{
"id": "b214f46b-8c89-4689-b82d-d0842eafac6f",
"type": "NUMBER_PREFIX",
"priority": 25,
"prefix": "+1",
"minLength": 1,
"maxLength": 50,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-MH",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
],
"links": {
"prev": "",
"next": ""
}
}
Update Bulk Routing Rules
To update pririty for bulk Routing Rules you should invoke Update Bulk Routing Rules. The response body will return a list of all Routing Rules with updated priority.
PUT /outbound-routing-rules
/api/admin/voice/v1/accounts/ABCDEF/outbound-routing-rules
Request Body:
[
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 25,
"prefix": "+1",
"minLength": 1,
"maxLength": 46,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
},
{
"id": "0b7be2ee-6078-4d96-97a9-1a69c2980c6e",
"type": "NUMBER_PREFIX",
"priority": 21,
"prefix": "+1",
"minLength": 1,
"maxLength": 48,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
},
{
"id": "b214f46b-8c89-4689-b82d-d0842eafac6f",
"type": "NUMBER_PREFIX",
"priority": 82,
"prefix": "+1",
"minLength": 1,
"maxLength": 50,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-MH",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
]
HTTP 200 OK
[
{
"id": "0b7be2ee-6078-4d96-97a9-1a69c2980c6e",
"type": "NUMBER_PREFIX",
"priority": 21,
"prefix": "+1",
"minLength": 1,
"maxLength": 48,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
},
{
"id": "27fa632f-3dd1-4192-8b72-b58689be6140",
"type": "NUMBER_PREFIX",
"priority": 25,
"prefix": "+1",
"minLength": 1,
"maxLength": 46,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-UP",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
},
{
"id": "b214f46b-8c89-4689-b82d-d0842eafac6f",
"type": "NUMBER_PREFIX",
"priority": 82,
"prefix": "+1",
"minLength": 1,
"maxLength": 50,
"sipTrunkId": "9d70a86a-4f04-4cc4-8de7-363ee8f82726",
"isoCountry": "IN-MH",
"locationIds": [ "c8c2909d-75e9-484a-94c0-b7e8d29771fe" ]
}
]
Agent Location
Create Agent Location
To Create Agent Location you should invoke Create Agent Location. You should provide basic details such as a name
, isDialingRestrictionEnabled
and optional field description
. The agent location name must be unique. The users
and outboundRoutingRules
fields are read-only.
POST /agent-locations
/api/admin/voice/v1/accounts/ABCDEF/agent-locations
Request Body:
{
"name": "uk-1-location-id",
"description": "UK Agent Location 1",
"isDialingRestrictionEnabled": true,
"users": [
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"loginId": "[email protected]"
},
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"loginId": "[email protected]"
}
],
"outboundRoutingRules": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Outbound Rule"
}
]
}
HTTP 200 OK
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "uk-1-location-id",
"description": "UK Agent Location 1",
"isDialingRestrictionEnabled": true,
"users": [
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"loginId": "[email protected]"
},
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"loginId": "[email protected]"
}
],
"outboundRoutingRules": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Outbound Rule"
}
]
}
Update Agent Location
To Update an Agent Location you should invoke Update Agent Location. You should provide basic details such as a name
, isDialingRestrictionEnabled
and optional field description
. The agent location name must be unique. The users
and outboundRoutingRules
fields are read-only.
PUT /agent-locations
/api/admin/voice/v1/accounts/ABCDEF/agent-locations/18e4f754-5e42-4387-ae13-e9b4fe4aed29
Request Body:
{
"name": "uk-1-location-id",
"description": "UK Agent Location 1",
"isDialingRestrictionEnabled": true,
"users": [
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"loginId": "[email protected]"
},
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"loginId": "[email protected]"
}
],
"outboundRoutingRules": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Outbound Rule"
}
]
}
HTTP 200 OK
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "uk-1-location-id",
"description": "UK Agent Location 1",
"isDialingRestrictionEnabled": true,
"users": [
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"loginId": "[email protected]"
},
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"loginId": "[email protected]"
}
],
"outboundRoutingRules": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Outbound Rule"
}
]
}
Get Agent Location
To Get Agent Location you should invoke Get Agent Location. You should provide locationId as path parameter. The users
and outboundRoutingRules
fields are read-only.
GET /agent-locations
/api/admin/voice/v1/accounts/ABCDEF/agent-locations/18e4f754-5e42-4387-ae13-e9b4fe4aed29
HTTP 200 OK
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "uk-1-location-id",
"description": "UK Agent Location 1",
"isDialingRestrictionEnabled": true,
"users": [
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"loginId": "[email protected]"
},
{
"userId": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"loginId": "[email protected]"
}
],
"outboundRoutingRules": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "Outbound Rule"
}
]
}
Delete Agent Location
To Delete Agent Location you should invoke Get Agent Location. You must provide locationId
as path parameter.
DELETE /agent-locations
/api/admin/voice/v1/accounts/ABCDEF/agent-locations/18e4f754-5e42-4387-ae13-e9b4fe4aed29
HTTP 204 No Content
List All Agent Locations
To list All Agent Locations you should invoke Get Agent Location.
GET /agent-locations
/api/admin/voice/v1/accounts/ABCDEF/agent-locations
HTTP 200 OK
{
"pagination": {
"pageNumber": 1,
"pageSize": 10,
"total": 3
},
"locations": [
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed29",
"name": "uk-1-location-id",
"description": "UK Agent Location 1",
"isDialingRestrictionEnabled": true
},
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed30",
"name": "france-location-id",
"description": "France Agent Location 1",
"isDialingRestrictionEnabled": false
},
{
"id": "18e4f754-5e42-4387-ae13-e9b4fe4aed31",
"name": "uk-2-location-id",
"description": "UK Agent Location 2",
"isDialingRestrictionEnabled": true
}
],
"links": {
"prev": "/api/admin/v1/accounts/ABCDEF/agent-locations?pageNumber=1&pageSize=10",
"next": "/api/admin/v1/accounts/ABCDEF/agent-locations?pageNumber=2&pageSize=10"
}
}
Hybrid Skill
Create Hybrid Skill
To Create Hybrid Skill for the specified communication manager you should invoke Create Hybrid Skill. You should provide mandatory details such as a name
, skill extension number
, skill number
, and optional field agent assist profile
. The skill name, number and extension must be unique within communication manager. If data created in voice and failuer in agent assist API, 207 Partial success will be returned as response.
POST /skills
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/4d110ac3-bf3d-4355-aa7f-6c2af7d5c46d/skills
Request Body:
{
"name": "French",
"number": "1",
"extension": "253647784",
"agentAssistProfileId": "1f15835f-1365-4913-acf3-0ffd0767ad6e"
}
HTTP 201 Created
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": "8000",
"name": "French",
"extension": "253647784",
"agentAssistProfileId": "6a305019-a43c-4ed4-8dab-324d82dd9d55"
}
HTTP 207 Partial success
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": "8000",
"name": "French",
"extension": "253647784",
"agentAssistProfileId": "6a305019-a43c-4ed4-8dab-324d82dd9d55",
"errorMessage": "Failure in agent assist API while skill creation"
}
Update Hybrid Skill
To Update Hybrid Skill you should invoke Update Hybrid Skill. You should provide mandatory details such as a name
, skill extension number
, skill number
, and optional field agent assist profile
. The skill name, number and extension must be unique within communication manager.If data updated successfully in voice and failuer in agent assist API, 207 Partial Success will be returned as response.
PUT /skills
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/4d110ac3-bf3d-4355-aa7f-6c2af7d5c46d/skills/82dbfd5d-e437-4936-8893-2a5d843e65d7
Request Body:
{
"name": "French",
"number": "1",
"extension": "253647784",
"agentAssistProfileId": "1f15835f-1365-4913-acf3-0ffd0767ad6e"
}
HTTP 200 OK
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": "8000",
"name": "French",
"extension": "253647784",
"agentAssistProfileId": "6a305019-a43c-4ed4-8dab-324d82dd9d55"
}
HTTP 207 Partial success
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": "8000",
"name": "French",
"extension": "253647784",
"agentAssistProfileId": "6a305019-a43c-4ed4-8dab-324d82dd9d55",
"errorMessage": "Failure in agent assist API while skill creation"
}
Get Hybrid Skill
To Get Hybrid Skill you should invoke Get Hybrid Skill. You should provide communicationManagerId & skillId as path parameter.If data fetched successfully from voice service and failuer in agent assist API, 207 Partial Success will be returned as response.
GET /skills
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/4d110ac3-bf3d-4355-aa7f-6c2af7d5c46d/skills/1f15835f-1365-4913-acf3-0ffd0767ad6e
HTTP 200 OK
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": "8000",
"name": "French",
"extension": "253647784",
"agentAssistProfileId": "4d110ac3-bf3d-4355-aa7f-6c2af7d5c46d"
}
HTTP 207 Partial Success
{
"id": "1f15835f-1365-4913-acf3-0ffd0767ad6e",
"number": "8000",
"name": "French",
"extension": "253647784",
"agentAssistProfileId": null,
"errorMessage": "Failure in agent assist API while skill creation"
}
Delete Hybrid Skill
To Delete Hybrid Skill you should invoke Delete Hybrid Skill. You must provide communicationManagerId
and skillId
as path parameter.
DELETE /skills
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/4d110ac3-bf3d-4355-aa7f-6c2af7d5c46d/skills/1f15835f-1365-4913-acf3-0ffd0767ad6e
HTTP 204 No Content
List Hybrid Skills
To list All Hybrid Skills you should invoke List Hybrid Skills.
GET /skills
/api/admin/voice/v1/accounts/ABCDEF/communication-managers/4d110ac3-bf3d-4355-aa7f-6c2af7d5c46d/skills
HTTP 200 OK
{
"pagination": {
"pageNumber": 2,
"pageSize": 10,
"total": 20
},
"skills": [
{
"id": "7700d655-5807-4738-a868-712740a18199",
"name": "French",
"number": "11",
"extension": "253647784"
},
{
"id": "8b2ae74d-61e5-48df-8b32-81a7bc726495",
"name": "English",
"number": "12",
"extension": "253647784"
}
],
"links": {
"prev": "/api/admin/voice/v1/accounts/NCWBNY/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/skills?pageNumber=1&pageSize=10",
"next": "/api/admin/voice/v1/accounts/NCWBNY/communication-managers/5e9be49a-32d3-4927-83c7-7b0952798028/skills?pageNumber=3&pageSize=10"
}
}
Updated about 2 months ago