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.

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.

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"
  }
}