# CRM Configurations
# Overview
The CRM Configuration SOAP API enables the management of CRM integrations within the Akixi platform. This API provides a comprehensive set of operations for configuring and managing CRM connections at various scopes (TelSys, Partition, or Device level).
# Key Features
- Template-Based Configuration: CRM configurations are based on predefined templates that ensure consistency and validate settings
- Hierarchical Scoping: Configurations can be applied at different levels (TelSys, Partition, Device)
- Dynamic Updates: Support for real-time updates of CRM configurations without service interruption
- Secure Storage: Sensitive configuration data is stored securely and transmitted using encrypted channels
- Flexible Integration: Support for multiple CRM types and custom configuration parameters
# Configuration Scope Levels
- TelSys Level: Apply configuration to an entire telephone system
- Partition Level: Configure CRM settings for a specific partition
- Device Level: Set configurations for individual devices
# Supported Operations
Operation Name | Operation Description |
---|---|
CRMConfigurationAdd | Add a new CRM Configuration entry. |
CRMConfigurationChange | Change an existing CRM Configuration. |
CRMConfigurationDelete | Delete a CRM Configuration. |
CRMConfigurationInfo | Get information about a CRM Configuration. |
CRMConfigurationList | Lists CRM Configurations accessible with your Akixi account based on the ids (TelSysID, PartIDInTelSys and DeviceNumber) specified in the URL. |
# Operation Details
# CRMConfigurationAdd
CRM Configurations are added via CRMConfigurationAdd request. The main purpose of this request is to create a new CRM Configuration which is later used by a CRM client.
# CRMConfigurationAdd Request
The following request body shows an example of a CRMConfigurationAdd
operation. This request includes all parameters supported by CRMConfigurationAdd
operation invoked in order to create a new CRM Configuration.
<Request Operation="CRMConfigurationAdd">
<InvokeID>11</InvokeID>
<SessionID>5E4924352BA7E2038339957559C2DA75</SessionID>
<OperationPayload>
<Property Name="TelSysID">1</Property>
<Property Name="PartIDInTelSys">1</Property>
<Property Name="DeviceNumber">01234567101</Property>
<Property Name="Description">CRM Configuration Description</Property>
<Property Name="CRMType">CrmAddin.SugarCrm.SugarCrmAddin</Property>
<Container Name="CRMConfiguration">
<Property Name="JSONData">{"ClientId":"0987654321","SObjectNames":["Account","Contact","Lead"]}</Property>
</Container>
<Container Name="CRMConfigurationCommon">
<Property Name="JSONData">{"Cached":"true","CacheFrequency":60,"CacheFrequencyUnit":"Minutes"}</Property>
</Container>
</OperationPayload>
</Request>
You can specify '-1' value for TelSysID to create a CRM Configuration for Telephone System scope. '-1' represents 'UnknownNoneOrAll' value.
You can specify '-1' value for PartIDInTelSys to create a CRM Configuration for Partition scope. '-1' represents 'UnknownNoneOrAll' value.
You can specify 'UnknownNoneOrAll' value for DeviceNumber to create a CRM Configuration for Device scope.
CRM Configuration is a String of JSON format. The property name must be 'JSONData' in the 'CRMConfiguration' container.
CRM Configuration Common is a String of JSON format. The property name must be 'JSONData' in the 'CRMConfigurationCommon' container.
CRMConfiguration is analyzed against the template for the provided CRM Type from DynamoDB to determine fields of a type 'password'. These fields should be provided in the request in an encrypted form using the encryption mechanism commonly used on the front end. They are decrypted by the back end and encrypted once again using another DB specific mechanism before being saved in the DB.
# CRMConfigurationAdd Response
If your operation was successful, you will receive a response similar to the following:
<Response Result="Success">
<InvokeID>11</InvokeID>
</Response>
You will now be able to access the newly created CRM Configuration entry by invoking other CRMConfigurationXXX
operations that will include its unique identifier (CRMConfigurationID
). The CRM Configuration can also be viewed & modified under the Administration “CRM Configuration” area of the Akixi Service administration portal.
If the request was unsuccessful (i.e. the response’s Result
attribute depicts the “Fail”
value), then the response’s error code and the message description values should be parsed by the client application and then handled accordingly. Some common errors returned by this operation are provided in the table below:
Error Type | Error Codes |
---|---|
General Error Codes | 10103, 10107, 10108 |
Session Related Error Codes | 10301, 10302 |
Authentication Related Error Codes | 10305, 10307, 10313 |
Telephony Server Component Related Error Codes | 11012, 11013 |
Partition Related Error Codes | 11131 |
Device Related Error Codes | 11161 |
Permissions Related Error Codes | 10511, 10512, 10514, 10515, 10700, 10701, 10702 |
CRM Configuration Related Error Codes | 31000, 31001, 31005, 31004, 31006, 31007 |
Please refer to the “Error Codes” chapter for further details on specific error codes and their meaning.
# CRMConfigurationChange
CRM Configurations can be modified via CRMConfigurationChange
request. To modify parameters of an existing CRM Configuration, you must build a request that will include corresponding CRM Configuration’s unique identifier CRMConfigurationID
, telephone system id TelSysID
, partition id in a telephone system PartIDInTelSys
, device number DeviceNumber
, as well as the Properties to actually update.
# CRMConfigurationChange Request Parameters
Please note that certain CRM Configuration parameters are read-only after creation - therefore, you are not able to update them.
Read-only parameters used within the CRMConfigurationChange
request can be found in the table below.
Parameter Name | Description |
---|---|
CRMConfigurationID | Unique ID for each CRM Configuration, generated by application when the entity is first created. |
TelSysID | The identifier of a telephony system this CRM Configuration is aimed to. |
PartIDInTelSys | The partition id in a telephone system this CRM Configuration is aimed to. |
DeviceNumber | Device number this CRM Configuration is aimed to. |
CRMType | The CRM Type this CRM Configuration is aimed to. |
# CRMConfigurationChange Request
The following request body shows an example of a CRMConfigurationChange
operation.
<Request Operation="CRMConfigurationChange">
<InvokeID>11</InvokeID>
<SessionID>5E4924352BA7E2038339957559C2DA75</SessionID>
<OperationPayload>
<Property Name="CRMConfigurationID">8b421354e7ea58f6:1007bf0b:197cf8dc588:-776e</Property>
<Property Name="TelSysID">1</Property>
<Property Name="PartIDInTelSys">1</Property>
<Property Name="DeviceNumber">01234567101</Property>
<Property Name="Description">CRM Configuration Description</Property>
<Container Name="CRMConfiguration">
<Property Name="JSONData">{"ClientId":"0987654321","SObjectNames":["Account","Contact","Lead"]}</Property>
</Container>
<Container Name="CRMConfigurationCommon">
<Property Name="JSONData">{"Cached":"true","CacheFrequency":60,"CacheFrequencyUnit":"Minutes"}</Property>
</Container>
</OperationPayload>
</Request>
You can specify '-1' value for TelSysID to update a CRM Configuration for Telephone System scope. '-1' represents 'UnknownNoneOrAll' value.
You can specify '-1' value for PartIDInTelSys to update a CRM Configuration for Partition scope. '-1' represents 'UnknownNoneOrAll' value.
You can specify 'UnknownNoneOrAll' value for DeviceNumber to update a CRM Configuration for Device scope.
CRM Configuration is a String of JSON format. The property name must be 'JSONData' in the 'CRMConfiguration' container.
CRM Configuration Common is a String of JSON format. The property name must be 'JSONData' in the 'CRMConfigurationCommon' container.
CRMConfiguration is analyzed against the template for the provided CRM Type from DynamoDB to determine fields of a type 'password'. These fields should be provided in the request in an encrypted form using the encryption mechanism commonly used on the front end. They are decrypted by the back end and encrypted once again using another DB specific mechanism before being saved in the DB.
All CRMConfiguration fields except password fields should be provided in the request, even in case their values are not updated. Passwords should be provided only in case they are updated. If the password is not updated it should not be included into the json string value sent in CRMConfiguration field.
# CRMConfigurationChange Response
If your operation was successful, you will receive a response similar to the following:
<Response Result="Success">
<InvokeID>11</InvokeID>
</Response>
If the request was unsuccessful (i.e. the response’s Result
attribute depicts the “Fail”
value), then the response’s error code and the message description values should be parsed by the client application and then handled accordingly. Some common errors returned by this operation are provided in the table below:
Error Type | Error Codes |
---|---|
General Error Codes | 10103, 10107, 10108 |
Session Related Error Codes | 10301, 10302 |
Authentication Related Error Codes | 10305, 10307, 10313 |
Telephony Server Component Related Error Codes | 11012, 11013 |
Partition Related Error Codes | 11131 |
Device Related Error Codes | 11161 |
Permissions Related Error Codes | 10511, 10512, 10514, 10515, 10700, 10701, 10702 |
CRM Configuration Related Error Codes | 31001, 31002, 31003, 31006, 31007 |
Please refer to the “Error Codes” chapter for further details on specific error codes and their meaning.
# CRMConfigurationDelete
CRM Configurations can be deleted via CRMConfigurationDelete
request. All parameters (TelSysID,
PartIDInTelSys, DeviceNumber, and CRMConfigurationID) must be provided to identify the configuration
to delete.
# CRMConfigurationDelete Request Parameters
Parameter Name | Type | Required | Description |
---|---|---|---|
TelSysID | String | Yes | The identifier of a telephony system |
PartIDInTelSys | String | No | The partition id in a telephone system |
DeviceNumber | String | No | Device number |
CRMConfigurationID | String | Yes | Unique identifier of the CRM Configuration to delete |
# CRMConfigurationDelete Request
The following request body shows an example of a CRMConfigurationDelete
operation:
<Request Operation="CRMConfigurationDelete">
<InvokeID>12</InvokeID>
<SessionID>5E4924352BA7E2038339957559C2DA75</SessionID>
<OperationPayload>
<Property Name="TelSysID">1</Property>
<Property Name="PartIDInTelSys">1</Property>
<Property Name="DeviceNumber">01234567101</Property>
<Property Name="CRMConfigurationID">8b421354e7ea58f6:1007bf0b:197cf8dc588:-776e</Property>
</OperationPayload>
</Request>
# CRMConfigurationDelete Response
If your operation was successful, you will receive a response similar to the following:
<Response Result="Success">
<InvokeID>12</InvokeID>
</Response>
If the request was unsuccessful, some common errors returned by this operation are provided in the table below:
Error Type | Error Codes |
---|---|
General Error Codes | 10103, 10107, 10108 |
Session Related Error Codes | 10301, 10302 |
Authentication Related Error Codes | 10305, 10307, 10313 |
Telephony Server Component Related Error Codes | 11012, 11013 |
Partition Related Error Codes | 11131 |
Device Related Error Codes | 11161 |
Permissions Related Error Codes | 10511, 10512, 10514, 10515, 10700, 10701, 10702 |
CRM Configuration Related Error Codes | 31001, 31002, 31003, 31006, 31007 |
Please refer to the “Error Codes” chapter for further details on specific error codes and their meaning.
# CRMConfigurationInfo
Retrieve detailed information about a specific CRM Configuration via CRMConfigurationInfo
request.
All parameters (TelSysID, PartIDInTelSys, DeviceNumber, and CRMConfigurationID) must be provided to
identify the configuration to retrieve.
# CRMConfigurationInfo Request Parameters
Parameter Name | Type | Required | Description |
---|---|---|---|
TelSysID | String | Yes | The identifier of a telephony system |
PartIDInTelSys | String | No | The partition id in a telephone system |
DeviceNumber | String | No | Device number |
CRMConfigurationID | String | Yes | Unique identifier of the CRM Configuration to retrieve |
# CRMConfigurationInfo Request
<Request Operation="CRMConfigurationInfo">
<InvokeID>13</InvokeID>
<SessionID>5E4924352BA7E2038339957559C2DA75</SessionID>
<OperationPayload>
<Property Name="TelSysID">1</Property>
<Property Name="PartIDInTelSys">1</Property>
<Property Name="DeviceNumber">01234567101</Property>
<Property Name="CRMConfigurationID">8b421354e7ea58f6:1007bf0b:197cf8dc588:-776e</Property>
</OperationPayload>
</Request>
# CRMConfigurationInfo Response
<Response Result="Success">
<InvokeID>14</InvokeID>
<Success>
<Property Name="CRMConfigurationID">db7e33a7d8b7b1ea:-22ff4bbb:197ea30cca8:-7fa3</Property>
<Property Name="Description">CRM Configuration Test</Property>
<Property Name="CRMType">CrmAddin.Salesforce.SalesforceAddin</Property>
<Property Name="CMEnvironmentID">d6d6c5a5f0f90d60:-15617a00:169f533f6d5:5613</Property>
<Property Name="TelSysID">2</Property>
<Property Name="PartIDInTelSys">1</Property>
<Property Name="DeviceNumber">UnknownNoneOrAll</Property>
<Container Name="CRMConfiguration">
<Property Name="SupportEncryptedFields">true</Property>
<Property Name="Endpoint">https://hogsnose-dev-ed.my.salesforce.com/services/oauth2/
</Property>
<Property Name="ClientId">
3MVG9WtWSKUDG.x41FVg82vFODI5SiqPK9DyMBYBaRsTvaVHeFfGHBFztVtiZpLnp7hl2K04iXA==
</Property>
<Property Name="SObjectsRequireRefresh">true</Property>
<Property Name="ExcludeConvertedLeads">true</Property>
<Property Name="SObjectNames">Account,Contact,Lead</Property>
</Container>
<Container Name="CRMConfigurationCommon">
<Property Name="CacheFrequency">60</Property>
<Property Name="CacheFrequencyUnit">Minutes</Property>
<Property Name="Cached">false</Property>
<Property Name="AutoPopOption">Never</Property>
<Property Name="CreateActivityOnCallEnd">false</Property>
<Property Name="EnableActivitiesOnInternalNumbers">false</Property>
<Property Name="RelatedDataEnabled">true</Property>
<Property Name="ShowActivityOnCall">false</Property>
</Container>
</Success>
</Response>
Note: Password fields in the CRMConfiguration JSON data are returned in encrypted form.
If the request was unsuccessful, some common errors returned by this operation are provided in the table below:
Error Type | Error Codes |
---|---|
General Error Codes | 10103, 10107, 10108 |
Session Related Error Codes | 10301, 10302 |
Authentication Related Error Codes | 10305, 10307, 10313 |
Telephony Server Component Related Error Codes | 11012, 11013 |
Partition Related Error Codes | 11131 |
Device Related Error Codes | 11161 |
Permissions Related Error Codes | 10511, 10512, 10514, 10515, 10700, 10701, 10702 |
CRM Configuration Related Error Codes | 31001, 31002, 31003, 31006, 31007 |
Please refer to the “Error Codes” chapter for further details on specific error codes and their meaning.
# CRMConfigurationList
Lists CRM Configurations accessible with your Akixi account based on the ids (TelSysID, PartIDInTelSys and DeviceNumber) specified in the URL. The operation supports filtering by telephony system, partition, and device, with optional capabilities for field selection, searching, sorting, and pagination.
# CRMConfigurationList Request Parameters
Parameter Name | Type | Required | Description |
---|---|---|---|
TelSysID | String | No | The identifier of a telephony system to filter configurations. Use '-1' for configurations at Telephone System scope |
PartIDInTelSys | String | No | The partition id in a telephone system to filter configurations. Use '-1' for configurations at Partition scope |
DeviceNumber | String | No | Device number to filter configurations. Use 'UnknownNoneOrAll' for configurations at Device scope |
CRMConfigurationFields | String | No | Comma-separated list of fields to include in the response. Available fields: CRMConfiguration, CRMConfigurationCommon, CMEnvironmentID |
CrmType | String | No | Filter configurations by CRM type |
SearchQuery | String | No | Text to search across configuration descriptions and CRM types |
Sort | String | No | Sort field and direction in format "field:ASC" or "field:DESC". Supported sort fields match available CRMConfigurationFields |
Offset | Integer | No | Number of configurations to skip (zero-based). Used with Limit for pagination. Default is 0 |
Limit | Integer | No | Maximum number of configurations to return. Used with Offset for pagination. Default is 1000 |
# CRMConfigurationList Request Examples
Here are some example requests showing different filtering and query options:
- Basic request with field selection and sorting:
<Request Operation="CRMConfigurationList">
<InvokeID>14</InvokeID>
<SessionID>5E4924352BA7E2038339957559C2DA75</SessionID>
<OperationPayload>
<Property Name="TelSysID">1</Property>
<Property Name="PartIDInTelSys">1</Property>
<Property Name="DeviceNumber">01234567101</Property>
<Property Name="CRMConfigurationFields">CRMConfigurationID,Description,CRMType</Property>
<Property Name="Sort">Description:ASC</Property>
</OperationPayload>
</Request>
- Request with CRM type filtering and pagination:
<Request Operation="CRMConfigurationList">
<InvokeID>15</InvokeID>
<SessionID>5E4924352BA7E2038339957559C2DA75</SessionID>
<Offset>0</Offset>
<Limit>10</Limit>
<OperationPayload>
<Property Name="TelSysID">-1</Property>
<Property Name="PartIDInTelSys">-1</Property>
<Property Name="DeviceNumber">UnknownNoneOrAll</Property>
<Property Name="CrmType">CrmAddin.SugarCrm.SugarCrmAddin</Property>
<Property Name="SearchQuery">demo</Property>
</OperationPayload>
</Request>
Note:
- Use TelSysID='-1' to list CRM Configurations for all Telephone System scope
- Use PartIDInTelSys='-1' to list CRM Configurations for all Partition scope
- Use DeviceNumber='UnknownNoneOrAll' to list CRM Configurations for all Device scope
# CRMConfigurationList Response
A successful response will contain a list of CRM configurations matching the filter criteria:
<Response Result="Success">
<InvokeID>14</InvokeID>
<Success>
<Property Name="Offset">0</Property>
<Property Name="Total">6</Property>
<Container>
<Property Name="CRMConfigurationID">054b5e06055eae21:-34894830:197ac9265bf:-7ffe</Property>
<Property Name="Description">CRM Configuration 10</Property>
<Property Name="CRMType">CrmAddin.SugarCrm.SugarCrmAddin</Property>
<Property Name="TelSysDescription">1 - tel sys</Property>
<Property Name="PartitionDescription">[None Or All Partitions]</Property>
<Property Name="DeviceDescription">None Or All Devices</Property>
</Container>
<Container>
<Property Name="CRMConfigurationID">054b5e06055eae21:-34894830:197ac9265bf:-7fff</Property>
<Property Name="Description">CRM Configuration 10</Property>
<Property Name="CRMType">CrmAddin.SugarCrm.SugarCrmAddin</Property>
<Property Name="TelSysDescription">1 - tel sys</Property>
<Property Name="PartitionDescription">1 Partition</Property>
<Property Name="DeviceDescription">None Or All Devices</Property>
</Container>
<!-- Additional CRM Configuration containers may be included here -->
</Success>
</Response>
The response includes:
- A list of CRM configurations matching the query parameters
- Pagination information (Total count and Offset) as top-level properties
- Basic configuration details including:
- CRMConfigurationID: Unique identifier for the configuration
- Description: User-provided description
- CRMType: Type of CRM integration
- TelSysDescription: Description of the telephone system
- PartitionDescription: Description of the partition, or "[None Or All Partitions]" if at system level
- DeviceDescription: Description of the device, or "None Or All Devices" if at partition/system level
If the request was unsuccessful, some common errors returned by this operation are provided in the table below:
Error Type | Error Codes |
---|---|
General Error Codes | 10103, 10107, 10108 |
Session Related Error Codes | 10301, 10302 |
Authentication Related Error Codes | 10305, 10307, 10313 |
Telephony Server Component Related Error Codes | 11012, 11013 |
Partition Related Error Codes | 11131 |
Device Related Error Codes | 11161 |
Permissions Related Error Codes | 10511, 10512, 10514, 10515, 10700, 10701, 10702 |
CRM Configuration Related Error Codes | 31001, 31002, 31003, 31006, 31007 |
Please refer to the “Error Codes” chapter for further details on specific error codes and their meaning.