VSXI REST API Guide Version 11
Introduction
The VSXi REST API allows you to manage VSXi systems in a simple, programmatic way using conventional HTTP requests. Most of the functionality that you are familiar with in the VSXi GUI is also available through the API, allowing you to script the actions that your situation requires.
The API documentation will start with a general overview and then break down the different components. To access the VSXi REST API, basic HTTP knowledge is necessary: how an HTTP request is sent as {method url}, how to attach a file as input and save output into a file.
This guide is written for VSXis running version 11 or later.
Authentication
API authentication is done on each request using basic authentication. User has to input a valid GUI/API username/password and embed that in HTTPS basic authentication header.
All requests made to the VSXi follow a similar format, with user authentication performed on each HTTP request. In the near future providing Bearer Token Authentication.
Syntax
The syntax for the API is as follows:
curl -u $user:$pass -X $METHOD -k -$FLAG file.xml https://SERVER_IP:8888/SSConfig/webresources/<action>/{table}?{format=xml/json}
Base URL
The base URL will always be of the format https:$SERVER_IP:8888/SSConfig/websresources/
In the following sections we go into further detail on actions and tables.
Actions
In general the API supports the following actions:
- download: downloads all content from a table.
- delete: deletes specific entries matched against the uploaded file.
- update: updates the contents of a table with the file being uploaded. If the entries exist they get updated. If the entries do not exist they get inserted.
- upload: replaces the contents of a table with the file being uploaded. This is a table flush. Proceed with caution.
- query: downloads specific content from a table.
- stats: downloads statistics from the system.
- system: reads specific system information.
download, delete and upload also support zipped payloads. When uploading zipped payloads you must use the Large API call: downloadLarge, deleteLarge and replaceLarge (for upload).
Data Input and Output
The VSXi REST API is an evolution of the VSXi legacy SOAP/Web Services API. By default, if not specified, data will be downloaded or received in XML format. You can use the format parameter within the URL to specify the desired data format.
?{format=xml/json}
While XML/JSON are widely supported for configuration tables or actions support CSV and plain text.
On any data input operation (UPDATE, DELETE, UPLOAD, REPLACE) you must submit the the entire payload. That is all XML/JSON elements that correspond to the table. All fields are required and omitting fields will result in an error. As an example if you are updating one field in the Resource table, you need to submit all fields not just the key element and the field being changed. The best common practice is to download, edit and upload the file.
While files are most commonly used it is also possible to send serial data with the full XML/JSON content if desired.
Endpoints
Endpoints are objects within the VSXi used for configuration, monitoring and administration. For simplicity we will organize this section into two logical groups: configuration, administration. Endpoints are listed in alphabetical order.
Configuration
app_server_lnp
Manages configuration under App Server > LNP server.
Supported actions: download, update.
Supported payload: XML.
curl -k -X GET -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/download/app_server_lnp"
curl -T file.xml -k -X POST -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/update/app_server_lnp"
Example input/output:
<?xml version="1.0" encoding="UTF-8"?> <XBAppServerGroupList> <XBAppServerGroup> <applicationType>LNP</applicationType> <applicationIndex>2</applicationIndex> <groupIndex>1</groupIndex> <groupPolicy>round_robin</groupPolicy> <appServers> <serverIndex>1</serverIndex> <fqdn>10.55.52.247</fqdn> <portAndSvcPort> <port>5060</port> <servicePortIndex>1</servicePortIndex> </portAndSvcPort> </appServers> <digitMapTableIndex>100</digitMapTableIndex> <resendPeriod>1</resendPeriod> <maxResend>1</maxResend> </XBAppServerGroup> </XBAppServerGroupList>
app_server_cnam
Manages configuration under App Server > CNAM server.
Supported actions: download, update.
Supported payload: XML.
curl -k -X GET -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/download/app_server_cnam"
curl -T file.xml -k -X POST -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/update/app_server_cnam"
<?xml version="1.0" encoding="UTF-8"?> <XBAppServerGroupList> <XBAppServerGroup> <applicationType>CNAM</applicationType> <applicationIndex>4</applicationIndex> <groupIndex>1</groupIndex> <groupPolicy>round_robin</groupPolicy> <appServers> <serverIndex>1</serverIndex> <fqdn>192.168.92.16</fqdn> <portAndSvcPort> <port>5200</port> <servicePortIndex>1</servicePortIndex> </portAndSvcPort> </appServers> <appServers> <serverIndex>2</serverIndex> <fqdn>192.168.92.17</fqdn> <portAndSvcPort> <port>5200</port> <servicePortIndex>1</servicePortIndex> </portAndSvcPort> </appServers> <resendPeriod>1</resendPeriod> <maxResend>1</maxResend> </XBAppServerGroup> </XBAppServerGroupList>
app_server_sti_as
Manages configuration under App Server > STI AS server.
Supported actions: download, update.
Supported payload: XML.
curl -k -X GET -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/download/app_server_sti_as"
curl -T lnp.xml -k -X POST -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/update/app_server_sti_as"
<?xml version="1.0" encoding="UTF-8"?> <XBAppServerGroupList> <XBAppServerGroup> <applicationType>STI-VS</applicationType> <applicationIndex>8</applicationIndex> <groupIndex>1</groupIndex> <groupPolicy>round_robin</groupPolicy> <appServers> <serverIndex>1</serverIndex> <fqdn>1.2.3.4</fqdn> <portAndSvcPort> <port>5060</port> <servicePortIndex>1</servicePortIndex> </portAndSvcPort> </appServers> <digitMapTableIndex>0</digitMapTableIndex> <resendPeriod>1</resendPeriod> <maxResend>1</maxResend> </XBAppServerGroup> </XBAppServerGroupList>
app_server_sti_vs
Manages configuration under App Server > STI VS server.
Supported actions: download, update.
Supported payload: XML.
curl -k -X GET -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/download/app_server_sti_vs"
curl -T file.xml -k -X POST -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/update/app_server_sti_vs"
<?xml version="1.0" encoding="UTF-8"?> <XBAppServerGroupList> <XBAppServerGroup> <applicationType>STI-VS</applicationType> <applicationIndex>8</applicationIndex> <groupIndex>1</groupIndex> <groupPolicy>round_robin</groupPolicy> <appServers> <serverIndex>1</serverIndex> <fqdn>1.2.3.4</fqdn> <portAndSvcPort> <port>5060</port> <servicePortIndex>1</servicePortIndex> </portAndSvcPort> </appServers> <digitMapTableIndex>0</digitMapTableIndex> <resendPeriod>1</resendPeriod> <maxResend>1</maxResend> </XBAppServerGroup> </XBAppServerGroupList>
cac_index
Call Admission Control Index. This is available (if enabled) under Resources > CAC Profiles.
curl -k -X GET -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/download/cac_index"
curl -T file.xml -k -X POST -u $USER:$PASS "https://vsxi.sansay.support:8888/SSConfig/webresources/update/cac_index"
<?xml version="1.0" encoding="UTF-8"?> <XBCACIndexList> <XBCACIndex> <cacProfileId>63</cacProfileId> <alias>Philippines</alias> <prefix>+63</prefix> </XBCACIndex> <XBCACIndex> <cacProfileId>1767</cacProfileId> <alias>Dominica</alias> <prefix>+1767</prefix> </XBCACIndex> <XBCACIndex> <cacProfileId>1784</cacProfileId> <alias>St Vincent</alias> <prefix>+1784</prefix> </XBCACIndex> <XBCACIndex> <cacProfileId>1242</cacProfileId> <alias>Bahamas</alias> <prefix>+1242</prefix> </XBCACIndex> <XBCACIndex> <cacProfileId>882</cacProfileId> <alias>Thuraya</alias> <prefix>+882</prefix> </XBCACIndex> </XBCACIndexList>
cause_code_profile
Manages configuration under Resources > Cause Code Profile.
Supported actions: download, update.
Supported payload: XML.
curl -k -X GET -u superuser:sansay "https://vsxi.sansay.support:8888/SSConfig/webresources/download/cause_code_profile
curl -T lnp.xml -k -X POST -u superuser:sansay "https://vsxi.sansay.support:8888/SSConfig/webresources/update/cause_code_profile
<XBCauseCodeProfileList> <XBCauseCodeProfile> <id>0</id> <alias>Default</alias> <causeCodeMappings> <XBSourceCauseCode>503</XBSourceCauseCode> <XBMappedSipCauseCode>503</XBMappedSipCauseCode> <XBMappedH323CauseCode>34</XBMappedH323CauseCode> </causeCodeMappings> </XBCauseCodeProfile> </XBCauseCodeProfileList>
digit_mapping
Manages configuration under Digit Mappings > Digit Mappings.
Supported actions: download, update, replace, delete.
Supported payload: XML, CSV.
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/digit_mapping
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/digit_mapping
<?xml version="1.0" encoding="UTF-8"?> <DigitTranslationList> <DigitTrans> <alias>Block Abuser</alias> <tableId>20</tableId> <origAni>+18587542</origAni> <origAniMinLength>0</origAniMinLength> <origAniMaxLength>40</origAniMaxLength> <origDnis>any</origDnis> <origDnisMinLength>0</origDnisMinLength> <origDnisMaxLength>40</origDnisMaxLength> <transAni></transAni> <transDnis>9999</transDnis> <aniAction>passthrough</aniAction> <dnisAction>all</dnisAction> </DigitTrans> </DigitTranslationList>
digit_mapping_index
Manages configuration under Digit Mappings > Digit Mapping Tables.
Supported actions: download, update, replace, delete.
Supported payload: XML, CSV.
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/digit_mapping_index
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/digit_mapping_index
Payload
<?xml version="1.0" encoding="UTF-8"?> <DigitTranslationIndexList> <DigitTransIndex> <name>NO-LNP</name> <id>1</id> </DigitTransIndex> <DigitTransIndex> <name></name> <id>20</id> </DigitTransIndex> <DigitTransIndex> <name></name> <id>100</id> </DigitTransIndex> </DigitTranslationIndexList>
media_server
Manages configuration under App Servers > Media Servers
Supported actions: download, update, delete.
Supported payload: XML, JSON
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/media_server?format=xml"
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/media_server"
<?xml version="1.0" encoding="UTF-8"?> <XBMediaServerList> <XBMediaServer> <aha_id>0</aha_id> <mediaSrvIndex>1</mediaSrvIndex> <publicIP>192.168.40.216</publicIP> <privateIP>10.132.0.26</privateIP> <udpPort>10000</udpPort> <maxConnections>32000</maxConnections> <allowedSessCnt>3000</allowedSessCnt> <priority>2</priority> <alias>Internal Media Switching</alias> <state>enable</state> <switchType>Internal Media Switching</switchType> </XBMediaServer> </XBMediaServerList>
media_server_profile
Manages configuration under Service Ports > Media Server Profiles
Supported actions: download, update, delete.
Supported payload: XML, JSON
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/media_server_profile"
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/media_server_profile"
<?xml version="1.0" encoding="UTF-8"?> <XBMediaServerProfileList> <XBMediaServerProfile> <msProfIndex>1</msProfIndex> <msIdVip> <msIndex>1</msIndex> <ethIf>eth0</ethIf> <vipAddress>192.168.40.216</vipAddress> <subnetMask>255.255.255.0</subnetMask> <natEnable>no</natEnable> <natIP>0.0.0.0</natIP> <vlanId>0</vlanId> <aha_id>0</aha_id> <pair_id>0</pair_id> </msIdVip> </XBMediaServerProfile> </XBMediaServerProfileList>
resource
Manages configuration under Resources > Resources, also known as Trunks or Trunk IDs.
Supported actions: download, downloadLarge, update, updateLarge, delete, deleteLarge, upload, replaceLarge, query.
Supported payload: XML, XML/ZIP, JSON, JSON/XML
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/resource"
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/resource" Payload <?xml version="1.0" encoding="UTF-8"?> <XBResourceList> <XBResource> <protocol>SIP</protocol> <typeSIPgw> <portAddress>5060</portAddress> <serviceState>trace</serviceState> <direction>both</direction> <NAT>disable</NAT> <allowDirectMedia>no</allowDirectMedia> <sipProfileIndex>0</sipProfileIndex> <optionPoll>disable</optionPoll> <authorizedRPS>500</authorizedRPS> <unauthorizedRPS>500</unauthorizedRPS> </typeSIPgw> <name>STIR SHAKEN Test Number - PROD</name> <companyName>Asterisk</companyName> <trunkId>1</trunkId> <sgId>0</sgId> <capacity>1200</capacity> <cpsLimit>500</cpsLimit> <node> <fqdn>10.190.114.245</fqdn> <netmask>32</netmask> <capacity>12</capacity> <cpsLimit>5</cpsLimit> <cacProfileId>0</cacProfileId> </node> <rtid>0</rtid> <ingress1> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </ingress1> <ingress2> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </ingress2> <egress1> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </egress1> <egress2> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </egress2> <outboundANI>pass</outboundANI> <techPrefix>default</techPrefix> <rnIngress1> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </rnIngress1> <rnIngress2> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </rnIngress2> <rnEgress1> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </rnEgress1> <rnEgress2> <match>all</match> <action1>none</action1> <digits1></digits1> <action2>none</action2> <digits2></digits2> </rnEgress2> <codecPolicy>enforced</codecPolicy> <srtpEnable>disable</srtpEnable> <srtpSize>80</srtpSize> <srtpDtls>disable</srtpDtls> <codec>g711u 64k</codec> <groupPolicy>round_robin</groupPolicy> <dtid>0</dtid> <t38>enable</t38> <rfc2833>enable</rfc2833> <payloadType>101</payloadType> <tos>B8</tos> <svcPortIndex>1</svcPortIndex> <radiusAuthGrpIndex>0</radiusAuthGrpIndex> <radiusAcctGrpIndex>0</radiusAcctGrpIndex> <lnpGrpIndex>0</lnpGrpIndex> <lnpEnhancedGrpIndex>0</lnpEnhancedGrpIndex> <stiASGrpIndex>0</stiASGrpIndex> <stiVSGrpIndex>0</stiVSGrpIndex> <cnamGrpIndex>0</cnamGrpIndex> <ersGrpIndex>0</ersGrpIndex> <maxCallDuration>10800</maxCallDuration> <minCallDuration>0</minCallDuration> <noAnswerTimeout>120</noAnswerTimeout> <noRingTimeout>30</noRingTimeout> <causeCodeProfile>0</causeCodeProfile> <stopRouteProfile>0</stopRouteProfile> <paiAction>Disable</paiAction> <paiString></paiString> <inheritedGenericHeader></inheritedGenericHeader> <outSMCProfileId>21</outSMCProfileId> <stiIngressAuthentication>none</stiIngressAuthentication> <stiIngressAuthFailBehavior>passthru</stiIngressAuthFailBehavior> <stiEgressIdHdrTreatment>passthru</stiEgressIdHdrTreatment> <stiIngressVerification>disable</stiIngressVerification> <stiEgressVerifyFailBehavior>passthru</stiEgressVerifyFailBehavior> </XBResource> </XBResourceList>
resourceblock
Manages configuration under Resources > Blocked Resources.
Supported actions: download, update, delete, upload.
Supported payload: XML, JSON
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/resourceblock
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/resourceblock"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBResourceBlockList> <XBResourceBlock> <trunkId>100</trunkId> <ingressTrunkId>0</ingressTrunkId> <blockDigit>+1829</blockDigit> <comment>Block Dominican</comment> </XBResourceBlock> </XBResourceBlockList>
route
Manages configuration under Routes > Routes.
Supported actions: download, downloadLarge, update, updateLarge, delete, deleteLarge, upload, replaceLarge, query.
Supported payload: XML, JSON, CSV.
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/route
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/route"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBRouteList> <XBRoute> <tid>0</tid> <alias>999</alias> <digitMatch>default</digitMatch> <extension>1</extension> <policy>percentage</policy> <rd> <rdid>100</rdid> <loadPercentage>80</loadPercentage> <con_Routing>yes</con_Routing> </rd> <tod_type>weekly</tod_type> <tod_weekly> <tod_begin> <day>Monday</day> <hour>00:00:01</hour> </tod_begin> <tod_end> <day>Sunday</day> <hour>24:00:00</hour> </tod_end> </tod_weekly> <matchLenCondition> <minLen>1</minLen> <maxLen>40</maxLen> </matchLenCondition> </XBRoute> </XBRouteList>
routegroup
Manages configuration under Routes > Route Group.
Supported actions: download, update, delete, upload.
Supported payload: XML, JSON
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/routegroup
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/routegroup"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBRouteGroupList> <XBRouteGroup> <rgid>1</rgid> <alias>Default</alias> <policy>top_down</policy> <rd> <rdid>100</rdid> <con_Routing>yes</con_Routing> </rd> <rd> <rdid>555</rdid> <con_Routing>yes</con_Routing> </rd> </XBRouteGroup> </XBRouteGroupList>
routetable
Manages configuration under Routes > Route Tables.
Supported actions: download, update, delete, upload.
Supported payload: XML, JSON.
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/routetable
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/routetable"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBRouteTableList> <XBRouteTable> <tid>1</tid> <alias></alias> </XBRouteTable> <XBRouteTable> <tid>2</tid> <alias>CNAM Proxy</alias> </XBRouteTable> </XBRouteTableList>
serviceport
Manages configuration under Service Ports > Service Ports.
Supported actions: download, update, delete, upload, query.
Supported payload: XML, JSON.
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/serviceport
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/serviceport"
<?xml version="1.0" encoding="UTF-8"?> <XBServicePortList> <XBServicePort> <svcPortIndex>1</svcPortIndex> <alias>Test</alias> <ethIf>eth0</ethIf> <vipAddress>10.197.40.216</vipAddress> <serviceType>SIP</serviceType> <portAddress>5060</portAddress> <svcPortType>UDP</svcPortType> <svcPortResType>Peering</svcPortResType> <msProfileId>1</msProfileId> <authenticationMode>None</authenticationMode> <certificateFileName></certificateFileName> <natEnable>no</natEnable> <natIP>0.0.0.0</natIP> <inSMCProfileId>0</inSMCProfileId> </XBServicePort> </XBServicePortList>
serviceport_certificates
Manages configuration under Service Ports > Certificates
Supported actions: update, delete.
Supported payload: P12/ZIP
update
curl -u $user:$pass -X POST -k -T files.zip
"https://$ip:8888/SSConfig/webresources/update/serviceport_certificates?passphrase=sansay123"
delete
curl -u $user:$pass -X DELETE -k -T files.zip
"https://$ip:8888/SSConfig/webresources/delete/serviceport_certificates"
smc_profile
Manages configuration under Resources > SMC Profiles
Supported actions: download, update, delete.
Limitations: update action only supports one SMC Profile at a time.
Supported payload: JSON
update
curl -u $user:$pass -X POST -k -T smc.json "https://$ip:8888/SSConfig/webresources/update/smc_profile"
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/smc_profile"
delete
curl -u $user:$pass -X DELETE -k -T files.zip
"https://$ip:8888/SSConfig/webresources/delete/smc_profile"
Payload
{ "ProfileID": 1, "ProfileName": "Replace DisplayName using DIDCNAM.csv", "Rules": [ { "MsgType": "REQUEST", "ReqMethod": "INVITE", "DataFile": "DIDCNAM.csv", "DataFileBSearchIndex": 1, "Conditions": [ { "Header": "From:", "HeaderAttr": "HEADER_SECTION_ONLY", "Macro": "GETURI_USERNAME", "Operator": "BSEARCH_EQ" } ], "Action": "REPLACE_MSG", "ReplaceDefs": [ { "ReplaceType": "FINDSUB_LINES", "Header": "From:", "HeaderAttr": "HEADER_SECTION_ONLY", "Macro": "GETDISPLAYNAME", "Output": "{$DataFile.Field2}" } ] }]}
smcDataFile
Manages configuration under Resources > SMC Data Files.
Supported actions: download, replace.
Supported payload: CSV/ZIP
downloadLarge
curl -k -X GET -o smc.zip -u "$1":"$2" "https://$3:8888/SSConfig/webresources/downloadLarge/smcDataFile
replaceLarge
curl -k -X POST -T files.zip
-o smc.zip -u "$1":"$2"
"https://$3:8888/SSConfig/webresources/replaceLarge/smcDataFile
stop_route_profile
Manages configuration under Resources > Stop Route Profiles.
Supported actions: download, update, delete.
Supported payload: XML
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/stop_route_profile"
update
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/stop_route_profile"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBStopRouteProfileList> <XBStopRouteProfile> <id>0</id> <alias>Default</alias> <sipTrunkStopCodes></sipTrunkStopCodes> <sipGlobalStopCodes>603</sipGlobalStopCodes> <h323TrunkStopCodes></h323TrunkStopCodes> <h323GlobalStopCodes></h323GlobalStopCodes> </XBStopRouteProfile> <XBStopRouteProfile> <id>10</id> <alias>DNO Only</alias> <sipTrunkStopCodes></sipTrunkStopCodes> <sipGlobalStopCodes>603</sipGlobalStopCodes> <h323TrunkStopCodes></h323TrunkStopCodes> <h323GlobalStopCodes></h323GlobalStopCodes> </XBStopRouteProfile> <XBStopRouteProfile> <id>11</id> <alias>DNO and RoboRisk</alias> <sipTrunkStopCodes></sipTrunkStopCodes> <sipGlobalStopCodes>603,604</sipGlobalStopCodes> <h323TrunkStopCodes></h323TrunkStopCodes> <h323GlobalStopCodes></h323GlobalStopCodes> </XBStopRouteProfile> </XBStopRouteProfileList>
subscriber
Manages configuration under Resources > Registrar.
Supported actions: download, downloadLarge, update, updateLarge, deleteLarge, upload, replaceLarge.
Limitations: downloads hashed (XXXX) password for security purposes.
Supported payload: XML, XML/ZIP
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/subscriber
curl -T file.xml -k -X POST -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/subscriber"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBSubscriberList> <XBSubscriber> <username>sansay</username> <password>XXXX</password> <auth>enable</auth> <trunkId>0</trunkId> </XBSubscriber> <XBSubscriber> <username>test</username> <password>XXXX</password> <auth>enable</auth> <trunkId>0</trunkId> </XBSubscriber> </XBSubscriberList>
virtualip
Manages configuration under Service Ports > Virtual IP
Supported actions: download, update, delete.
Limitations: downloads hashed (XXXX) password for security purposes.
Supported payload: XML, JSON
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/download/virtualip
update
curl -k -X POST -T file.xml -u "$1":"$2" "https://$3:8888/SSConfig/webresources/update/virtualip
delete
curl -k -X DELETE -T vip.xml -u "$1":"$2" "https://$3:8888/SSConfig/webresources/delete/virtualip
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBVirtualIpList> <XBVirtualIp> <ethIf>eth0</ethIf> <ip>1.2.3.4</ip> <subnetMask>255.255.255.0</subnetMask> <natEnable>no</natEnable> <natIP>0.0.0.0</natIP> <aha_id>0</aha_id> </XBVirtualIp> </XBVirtualIpList>
Administration
The following endpoints are read-only except where an example is included for read/write.
active_calls
Downloads and Manages active calls list. This is also available from the UI via Monitoring > Answered Calls.
Supported actions: download, delete, query.
Supported formats: XML, JSON.
Download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/stats/active_calls"
Query
Query specific DNIS
curl -u $USER:PASS -X GET -o activecall.xml "https://$SYSTEM_IP:8888/SSConfig/webresources/query/active_calls?queryString=dnis like '%123456%'".
Note: Depending on your development environment you may need to escape special characters. This is a similar query escaping blank space, single quote and percentage chars.
Character escape syntax:
curl -u $USER:PASS -X GET -o activecall.xml "https://$SYSTEM_IP:8888/SSConfig/webresources/query/active_calls?queryString=dnis%20like%20%27%25123456%25%27'".
Delete
curl -T file.xml -k -X POST -u "$1":"$2"
"https://$3:8888/SSConfig/webresources/delete/active_calls"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBActiveCallsList> <XBActiveCall> <ssm_index>8109</ssm_index> <orig_tid>3</orig_tid> <term_tid>6</term_tid> <dnis>8_2206</dnis> <ani>+15738170000</ani> <orig_ip>192.168.121.21</orig_ip> <term_ip>24.25.201.122</term_ip> <inv_time>04-29-2024-14:23:28 GMT-08</inv_time> <ans_time>04-29-2024-14:23:45 GMT-08</ans_time> <duration>26067</duration> <callID>1268093-2-1527473968@192.168.121.177</callID> </XBActiveCall> <XBActiveCall> <ssm_index>8106</ssm_index> <orig_tid>2</orig_tid> <term_tid>1</term_tid> <dnis>18587542200</dnis> <ani>+15738170000</ani> <orig_ip>8.14.115.88</orig_ip> <term_ip>192.168.121.21</term_ip> <inv_time>04-29-2024-14:23:07 GMT-08</inv_time> <ans_time>04-29-2024-14:23:07 GMT-08</ans_time> <duration>26105</duration> <callID>1268092-0-1527452818@192.168.121.177</callID> </XBActiveCall> </XBActiveCallsList>
cdrlookup
Searches and prints matching CDR records on the system. This is also available from the UI via Trace > CDR Trace.
Format: UI Printout, CSV/RAW.
Parameters:
- string1 (required). This string can be anything in the CDR: Cause Code, ANI, DNIS, Trunk ID, specific value.
- string2 (optional). This string can be anything in the CDR: Cause Code, ANI, DNIS, Trunk ID, specific value.
- date in YYYY-MM-DD format (best practice). If empty = current time.
- time in HH:MM format (best practice). If empty = now. Required if date is present.
- duration in minutes. Required if date is present. Duration represents the search timespan.
Examples
Search current time for BYE
curl -u superuser:sansay -X GET -k -o cdr.csv
"https://192.168.9.42:8888/SSConfig/webresources/query/cdrlookup?queryString=string1=BYE"
Search on specific date for BYE
curl -u superuser:sansay -X GET -k "https://192.168.9.42:8888/SSConfig/webresources/query/cdrlookup?queryString=string1=BYE;date=2024-3-27;time=00:00;duration=60"
Search for specific ANI (string1) on specific date.
curl -u superuser:sansay -X GET -k "https://192.168.9.42:8888/SSConfig/webresources/query/cdrlookup?queryString=string1=2234567890;date=2024-4-5;time=08:10;duration=100&format=text" ====================================================================== Session 1000067-9652900@192.168.9.42, Release Cause = 0001 Record Sequence Number = 000000016 Termination Stack Cause = 200, Normal BYE Start = Fri Apr 5 08:07:36 2024 Answer = Fri Apr 5 08:07:39 2024 Release = Fri Apr 5 08:07:43 2024 Duration (Seconds) = 3 Post Dial Delay (Seconds) = 0 Termination Post Dial Delay (Milliseconds) = 270 Ring Time (Seconds) = 2 Media = WithMedia --Origination-- Trunk ID = 000111 ANI = 2234567890, From = 192.168.2.180 DNIS = 4444567890, To = jwang1.com RN = Call ID = 2723867b97b240bba0c89e2300dc8c65 Media IP:UDP = 61.219.165.76:4020 Switched IP:UDP = 192.168.9.41:10000 Codec List = G.711u_64k,RFC 2833 --Termination-- Trunk ID = 000111 ANI = 2234567890, From = 192.168.9.41 DNIS = 4444567890, To = 192.168.2.180 RN = Call ID = 2723867b97b240bba0c89e2300dc8c65 Media IP:UDP = 192.168.2.180:50928 Switched IP:UDP = 192.168.9.41:10002 Codec List = G.711u_64k,G.711a_64k,RFC 2833 --Routing-- Routed Digits = 4444567890 Route Selection = 1, Final Call Indication = Final Route Selection, OLI = CNAM Dipped = No, LNP Dipped = No, External Route Server Dipped = No ERS Route Table = 0, Sequence = 0, Jurisdiction = 0 Matched ERS Digits = --Packet Statistics-- Orig: Pkt In = 198, Pkt Out = 197, Byte In = 34056, Byte Out = 33884, MOS = 4.4 Term: Pkt In = 198, Pkt Out = 197, Byte In = 34056, Byte Out = 33884, MOS = 4.4 Transcoded Media = No Orig Media = No, Term Media = No FAS (msec) Ring = 0, Silence = 0 Caller Identity Header Presence = No Identity Header Caller Identity Authentication = No Authentication Egress Caller Identity Header = Identity Header Not Sent Caller Identity Verification = No Verification Number of SIP Diversion Headers = 0 Number of Inbound Diversion Passports = 0 Number of Outbound Diversion Passports = 0 Customer Rate = Vendor Rate = Caller Identity Header OrigID = Origination Video = No Termination Video = No Inbound RCD Passport Present = RCD Not Present Outbound RCD Passport Present = RCD Not Present ====================================================================== Session 1000069-9765530@192.168.9.42, Release Cause = 0001 Record Sequence Number = 000000017 Termination Stack Cause = 200, Normal BYE Start = Fri Apr 5 08:09:29 2024 Answer = Fri Apr 5 08:09:31 2024 Release = Fri Apr 5 08:09:34 2024 Duration (Seconds) = 3 Post Dial Delay (Seconds) = 0 Termination Post Dial Delay (Milliseconds) = 30 Ring Time (Seconds) = 1 Media = WithMedia --Origination-- Trunk ID = 000111 ANI = 3334567890, From = 192.168.2.180 DNIS = 2234567890, To = jwang1.com RN = Call ID = topLhafP1q1thWYAywqWMw.. Media IP:UDP = 192.168.2.180:50708 Switched IP:UDP = 192.168.9.41:10004 Codec List = G.711a_64k,RFC 2833,G.711u_64k --Termination-- Trunk ID = 000111 ANI = 3334567890, From = 192.168.9.41 DNIS = 2234567890, To = 192.168.2.180 RN = Call ID = topLhafP1q1thWYAywqWMw.. Media IP:UDP = 61.219.165.76:4022 Switched IP:UDP = 192.168.9.41:10006 Codec List = G.711a_64k,RFC 2833 --Routing-- Routed Digits = 2234567890 Route Selection = 1, Final Call Indication = Final Route Selection, OLI = CNAM Dipped = No, LNP Dipped = No, External Route Server Dipped = No ERS Route Table = 0, Sequence = 0, Jurisdiction = 0 Matched ERS Digits = --Packet Statistics-- Orig: Pkt In = 146, Pkt Out = 149, Byte In = 24953, Byte Out = 25628, MOS = 4.4 Term: Pkt In = 152, Pkt Out = 146, Byte In = 26144, Byte Out = 24953, MOS = 4.4 Transcoded Media = No Orig Media = No, Term Media = No FAS (msec) Ring = 0, Silence = 0 Caller Identity Header Presence = No Identity Header Caller Identity Authentication = No Authentication Egress Caller Identity Header = Identity Header Not Sent Caller Identity Verification = No Verification Number of SIP Diversion Headers = 0 Number of Inbound Diversion Passports = 0 Number of Outbound Diversion Passports = 0 Customer Rate = Vendor Rate = Caller Identity Header OrigID = Origination Video = No Termination Video = No Inbound RCD Passport Present = RCD Not Present Outbound RCD Passport Present = RCD Not Present
cdr_stats
Prints CDR stats. This endpoint can be used to correlate billing platforms against CDR stats.
Read
curl -u $user:$password -X GET -k "https://$host:8888/SSConfig/webresources/system/cdr_stats"
Payload
CDR Processed = 2 Number of Final Calls = 2 Number of Intermediate Calls = 0 Release Cause Normal = 2 Release Cause No Answer = 0 Release Cause No Answer by System = 0 Release Cause 4xx = 0 Release Cause 5xx = 0 Release Cause 6xx = 0 Release Cause 8xx = 0 Release Cause 9xx = 0
realtime
Supported formats: XML, JSON
Read
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/stats/realtime"
Payload
<?xml version="1.0"?> <mysqldump> <database name="lb"> <table name="system_stat"> <row> <field name="id">1</field> <field name="sum_active_session">2</field> <field name="sum_attempt_session">5319</field> <field name="peak_active_session">15</field> <field name="max_session_allowed">1000</field> <field name="max_session_exceed">0</field> <field name="inbound_sip_leg">2</field> <field name="outbound_sip_leg">2</field> <field name="peak_sip_leg">30</field> <field name="inbound_h323_leg">0</field> <field name="outbound_h323_leg">0</field> <field name="peak_h323_leg">0</field> <field name="cpu_idle_percent">99</field> <field name="flow_control_lev">0</field> <field name="cluster_active_session">2</field> <field name="cluster_peak_session">15</field> <field name="demo_lic">-1</field> <field name="slave_stat">1</field> <field name="ha_pre_state">boot</field> <field name="ha_current_state">boot</field> <field name="ha_remote_status">127</field> <field name="switch_over_flag">3</field> <field name="ha_local_status">25</field> <field name="max_cps_allowed">10000</field> <field name="max_cps_exceed">0</field> <field name="current_cps">0</field> </row> </table> <table name="gw_realtime_stat"> </table> <table name="XBResourceRealTimeStatList"> <row> <field name="trunkId">1</field> <field name="alias">VENICE_RESOURCE_ONNET_OFFNET_CS</field> <field name="fqdn">Group</field> <field name="numOrig">0</field> <field name="numTerm">1</field> <field name="cps">0</field> <field name="numPeak">1</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> <row> <field name="trunkId">1</field> <field name="alias">VENICE_RESOURCE_ONNET_OFFNET_CS</field> <field name="fqdn">192.168.121.21</field> <field name="numOrig">0</field> <field name="numTerm">1</field> <field name="cps">0</field> <field name="numPeak">1</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> <row> <field name="trunkId">2</field> <field name="alias">VENICE_TRUNK_OFFNET_DEFAULT</field> <field name="fqdn">Group</field> <field name="numOrig">1</field> <field name="numTerm">0</field> <field name="cps">0</field> <field name="numPeak">1</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> <row> <field name="trunkId">2</field> <field name="alias">VENICE_TRUNK_OFFNET_DEFAULT</field> <field name="fqdn">8.14.115.88</field> <field name="numOrig">1</field> <field name="numTerm">0</field> <field name="cps">0</field> <field name="numPeak">1</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> <row> <field name="trunkId">3</field> <field name="alias">VENICE_RESOURCE_ONNET_PBX_CS2</field> <field name="fqdn">Group</field> <field name="numOrig">1</field> <field name="numTerm">0</field> <field name="cps">0</field> <field name="numPeak">8</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> <row> <field name="trunkId">3</field> <field name="alias">VENICE_RESOURCE_ONNET_PBX_CS2</field> <field name="fqdn">192.168.121.21</field> <field name="numOrig">1</field> <field name="numTerm">0</field> <field name="cps">0</field> <field name="numPeak">8</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> <row> <field name="trunkId">6</field> <field name="alias">VENICE_RESOURCE_ONNET_PHONE_CS2</field> <field name="fqdn">Group</field> <field name="numOrig">0</field> <field name="numTerm">1</field> <field name="cps">0</field> <field name="numPeak">8</field> <field name="totalCLZ">1</field> <field name="numCLZCps">0</field> <field name="totalLimit">500</field> <field name="cpsLimit">500</field> </row> </table> </database> </mysqldump>
resource
Downloads Trunk ID statistics (15-min, 60-min, 3600-min). Also avaialable at (Monitoring > Resource Stats).
Supported formats: XML, JSON
Read
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/stats/resource"
Payload
<?xml version="1.0"?> <mysqldump> <database name="lb"> <table name="ingress_stat"> <row> <field name="id">1</field> <field name="trunk_id">6</field> <field name="1st15mins_call_attempt">0</field> <field name="1st15mins_call_answer">0</field> <field name="1st15mins_call_fail">0</field> <field name="1h_call_attempt">1</field> <field name="1h_call_answer">1</field> <field name="1h_call_fail">0</field> <field name="24h_call_attempt">2</field> <field name="24h_call_answer">2</field> <field name="24h_call_fail">0</field> <field name="1st15mins_call_durationSec">0</field> <field name="1h_call_durationSec">36</field> <field name="24h_call_durationSec">79</field> <field name="alias">VENICE_RESOURCE_ONNET_PHONE_C</field> <field name="1st15mins_pdd_ms">0</field> <field name="1h_pdd_ms">0</field> <field name="24h_pdd_ms">0</field> </row> </table> <table name="gw_egress_stat"> <row> <field name="id">5</field> <field name="trunk_id">21004</field> <field name="1st15mins_call_attempt">0</field> <field name="1st15mins_call_answer">0</field> <field name="1st15mins_call_fail">0</field> <field name="1h_call_attempt">0</field> <field name="1h_call_answer">0</field> <field name="1h_call_fail">0</field> <field name="24h_call_attempt">0</field> <field name="24h_call_answer">0</field> <field name="24h_call_fail">0</field> <field name="1st15mins_call_durationSec">0</field> <field name="1h_call_durationSec">0</field> <field name="24h_call_durationSec">0</field> <field name="alias">Carlos Perez</field> <field name="1st15mins_pdd_ms">0</field> <field name="1h_pdd_ms">0</field> <field name="24h_pdd_ms">0</field> </row> </table> </database> </mysqldump>
resource_detail
Provides real-time session information
Read
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/stats/resource_detail"
Payload
<?xml version="1.0" encoding="UTF-8"?> <XBResourceDetailRealTimeStatList> <XBResourceDetailRealTimeStat> <origTrunkId>2</origTrunkId> <origAlias>VENICE_TRUNK_OFFNET_DEFAULT</origAlias> <origGrpCap>500</origGrpCap> <origGrpCps>500</origGrpCps> <origFqdn>10.14.115.88</origFqdn> <origCap>500</origCap> <origCps>500</origCps> <termTrunkId>1</termTrunkId> <termAlias>VENICE_RESOURCE_ONNET_OFFNET_CS</termAlias> <termGrpCap>500</termGrpCap> <termGrpCps>500</termGrpCps> <termFqdn>192.168.121.21</termFqdn> <termCap>500</termCap> <termCps>500</termCps> <numActive>1</numActive> <peakActive>1</peakActive> <cps>0</cps> </XBResourceDetailRealTimeStat> </XBResourceDetailRealTimeStatList>
sip_stats
Reads statistics available under Monitoring > SIP Stats.
Read
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/stats/sip_stats
Payload
<XBSipStatsList> <XBSipStats> <timeStamp>2024-04-29T21:45:04.000Z</timeStamp> <numSIPDialogs>4</numSIPDialogs> <numSIPSubscribeDialogs>0</numSIPSubscribeDialogs> <tcpConnectionBuffers>1</tcpConnectionBuffers> <numRegisteredSubs>13</numRegisteredSubs> <avgRegistersPerSec>0</avgRegistersPerSec> <totNumRegisterMsgs>8889573</totNumRegisterMsgs> <numSipBuffAlloc>1</numSipBuffAlloc> <sipDeviceErrStats> <deviceIP>10.14.115.88</deviceIP> <optionsPoll>Active</optionsPoll> <rxInviteResends>0</rxInviteResends> <inviteResends>0</inviteResends> <inviteTimeouts>0</inviteTimeouts> <nonInviteResends>0</nonInviteResends> <nonInviteTimeouts>0</nonInviteTimeouts> <dialogMatchErrors>0</dialogMatchErrors> <protocolErrors>0</protocolErrors> <srcVerifyFailures>0</srcVerifyFailures> </sipDeviceErrStats> <dosStats></dosStats> </XBSipStats> </XBSipStatsList>
sub_stats
Downloads statistics displayed under Monitoring > Subscriber Stats.
Format: XML, JSON.
Download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/stats/sub_stats
Description of fields:
- States:
- Authenticated: Successful registration.
- Unauthenticated: Registration with pending authentication.
- Blocked: Endpoint has failed N number of authentication attempts.
- Pending: Transient state normally indicates waiting for Feature Server/Registrar.
- Trunk ID: Trunk ID associated with the registered user.
- Create Time: Registration instance when the device first registered.
- Username.
- User Domain.
- User IP: Source IP address of registering endpoint.
- User Port: Source Port of registering endpoint.
- ID: Registration ID created by the VSXi for internal tracking purposes.
- NAT: Network Address Translation detection (Yes, No).
- SPID: Origination Service Port ID.
- Protocol:
- UDP
- TCP
- TLS (TLS v1.0, TLS v1.1, TLS v1.2, TLS v1.3).
- Note: TLS protocol version display added in VSXi-10.7.1.70+.
- Expiration: Calculation of when this registration will expire if the device fails to re-register timely. This was designed for Push Notifications that may not re-register for days or weeks.
- Agent: SIP User-Agent disclosed in the SIP REGISTER.
- PN-PARAM: Push Notifications pn-param per RFC8599.
Payload
<XBSubStatsList> <XBSubStats> <states>AUTHENTICATED</states> <trunkId>00013</trunkId> <createTime>02-10-2023 17:20:52</createTime> <username>2200_06</username> <userDomain>sip.sansay.com</userDomain> <userIp>192.168.191.98</userIp> <userPort>5188</userPort> <id>2-1</id> <nat>Yes</nat> <spid>3</spid> <protocol>UDP</protocol> <expiration>03-13-2023 07:46:05</expiration> <agent>MicroSIP/3.21.3</agent> <pn-param></pn-param> </XBSubStats>
Allows managing the Subscriber Stats page by deleting specific entries. The API request can specify from one or multiple fields to perform the delete. The following fields can be included:
- "username",
- "trunkID",
- "id" (Subscriber ID),
- "userDomain" (Host) or
- "userIp" (Source IP)
Multiple entries are interpreted as an AND operator.
Example:
curl -u username:password -X DELETE -k -T sub_stats_delete.xml 'https://testip:8888/SSConfig/webresources/delete/sub_stats'
<?xml version="1.0" encoding="UTF-8"?> <XBSubStatsList> <XBSubStats> <username>8_2216_M</username> <userDomain>venice-domain-cs2</userDomain> <id>3-7</id> <userIp>72.197.139.18</userIp> <trunkId>00006</trunkId> </XBSubStats> <XBSubStats> <username>8_2215</username> </XBSubStats> </XBSubStatsList>
All requests receive a 200 OK.
system_info
Downloads general system stats in text format.
download
curl -k -X GET -u "$1":"$2" "https://$3:8888/SSConfig/webresources/system/realtime"
Payload
System Status at: Mon Apr 29 21:14:11 GMT 2024 CPU Idle Percentage: 99% HD Available Space: 138G HW Up Time: 65 days, 21:14:11 SW Start Time: Apr 29 18:26 Avail Memory(MB): 5681, 5681 (VM) Eth0 Rx packets:3641864 Eth0 Rx bytes:938301528 Eth0 Rx errors:0 Eth0 Rx dropped:0 Eth0 Rx overruns:0 Eth0 Rx frame:0 Eth0 Tx packets:4028692 Eth0 Tx bytes:595862094 Eth0 Tx errors:0 Eth0 Tx dropped:0 Eth0 Tx overruns:0 Eth0 Tx carrier:0 Eth0 Tx collisions:0 Eth1 Rx packets:1628 Eth1 Rx bytes:132048 Eth1 Rx errors:0 Eth1 Rx dropped:0 Eth1 Rx overruns:0 Eth1 Rx frame:0 Eth1 Tx packets:627877 Eth1 Tx bytes:26393760 Eth1 Tx errors:0 Eth1 Tx dropped:0 Eth1 Tx overruns:0 Eth1 Tx carrier:0 Eth1 Tx collisions:0 Slave Status: NoMaster Number of active network sessions = 0 Peak number of active network sessions = 0 Maximum network sessions allowed = 1000 Number of active cluster sessions = 0 Peak number of active cluster sessions = 0 Maximum cluster sessions allowed = 1000 Number of active local sessions = 0 Peak number of local concurrent sessions = 0 Maximum local sessions allowed = 1000 Number of times maximum exceeded = 0 Total number of local session attempts = 0 Total number of local session answered = 0 Number of orig CPS (past 5 seconds) = 0 0 0 0 0 Peak number of orig CPS = 0 Maximum orig CPS allowed = 10000 Number of times max CPS exceeded = 0 Number of term CPS (past 5 seconds) = 0 0 0 0 0 Peak number of term CPS = 0 Number of ERS CPS (past 5 seconds) = 0 0 0 0 0 Peak number of ERS CPS = 0 Number of LNP CPS (past 5 seconds) = 0 0 0 0 0 Peak number of LNP CPS = 0 Number of LNP STI-AS CPS (past 5 seconds) = 0 0 0 0 0 Peak number of LNP STI-AS CPS = 0 Number of STI-AS CPS (past 5 seconds) = 0 0 0 0 0 Peak number of STI-AS CPS = 0 Number of STI-VS CPS (past 5 seconds) = 0 0 0 0 0 Peak number of STI-VS CPS = 0 Number of inbound SIP legs in progress = 0 Number of outbound SIP legs in progress = 0 Peak number of SIP legs = 0 Number of inbound H323 legs in progress = 0 Number of outbound H323 legs in progress = 0 Peak number of H323 legs = 0 CPU idle = 99% Flow control level = 0 Total number of loop detections = 0 Radius server resends = 0 Radius server failures = 0 Session Blocks In Use = 0 Peak = 0 Max = 500 Dialog Blocks In Use = 0 Peak = 0 Max = 2000 Syslog Buffer Exceeded Drops = 0 Timer Buffers Pid 4E13 In Use = 2 Peak = 5 Max = 1000 ICE Blocks In Use = 0 Peak = 0 Max = 0 Transcode sessions active local = 0 Transcode sessions active nlz total = 0 Transcode sessions nlz total peak = 0 Transcode max license = 5000 Transcode sessions exceeded = 0 Media Server 192.168.40.216 - Status = UP, # Sessions = 0, # Video Sessions = 0 VM Authentication Status - Active! VM Grace Period Remaining Hours: 168/168 System Code Version:VSXi-11.2.2.2-lvm
systemConfiguration
Download
curl -k -X GET -u "$1":"$2" -o output.zip "https://$3:8888/SSConfig/webresources/downloadLarge/systemConfiguration
Verify
curl -u $1:$2 -X POST -k -T configFileName.zip "https://xxx:8888/SSConfig/webresources/verify/verifyConfig
Supported action: replace (via updateLarge)
Supported format: SDC/ZIP
Limitations: requires a superuser role.
curl -u $1:$2 -X POST -k -T configFileName.zip "https://$3:8888/SSConfig/webresources/updateLarge/restoreConfig"
users
Manages system users also avaialble under System > Users.
Supported format: XML.
Supported actions: update, delete.
update
curl -u $1:$2 -X POST -k -T users.xml "https://$3:8888/SSConfig/webresources/update/users"
delete
curl -u $1:$2 -X POST -k -T users.xml "https://$3:8888/SSConfig/webresources/delete/users"
Payload
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <XBUserList> <XBUser> <username>kim123</username> <password>sansay</password> <auth>super</auth> <firstname>Kim 123</firstname> <lastname>Nguyen</lastname> </XBUser> </XBUserList>
Error Codes
This paragraph lists codes returned by VSXi server in response to various requests. Each return message has the return code and text message that describes the code.
Code | Associated Message | Description |
200 | 200 OK | General OK response. |
200 OK - uploadXmlFile success. | File upload was OK. | |
300 | Finished With Errors | File was uploaded but some items failed validation and were discarded. Valid items were processed successfully. |
400 | 400 fail - invalid table specified: + requested table name. | Invalid table name. |
Invalid table name. | ||
400 fail - validation exception | XML validation error. | |
400 fail - digit match can not be empty | Digit match has to be specified for RouteLookUp | |
400 – failed | Other types of errors (exception) | |
401 | 401 Fail - User Not Authorized: Invalid username or no read/write permissions. | User is not authorized or doesn't have permissions |
401 Fail - User Not Authorized: invalid user password | User password is invalid. | |
402 | 402 Fail - This action is not allowed while system is in Load-Balance Slave mode | No configuration changes are allowed on slave servers data can only be dowloaded |
When data is uploaded to the VSXi server in plain-text the whole file is validated and if any error is found, the process is aborted and no changes are done to the system table.
In case when “Large” commands are used with compressed (zipped) data, if an error is found in one entry (XML element), that entry is thrown away and error is logged to the user log file. However, the process continues. For example, if one route is found to be invalid, it’s thrown away, but the other routes are processed and stored in DB (updated, replaced, deleted...). In that case the return code is 300, and the message describing the error is “300 Finished With Errors - Validation Errors were detected. Please see User Access Log file for details.”
In both cases errors are logged to User Access Log File that can be found and downloaded in GUI, Trace>User Log tab. Upper box on this page lists all User Log files available for download, and the lower box shows the latest entries in the latest file – user_access.log.
Appendix A - Query Parameters
Configuration tables that support the query action are listed below.
Querying a table allows you to download just a portion of the content you are interested in instead of the entire table. This is the list of table parameters currently supported:
resource | route | digit_mapping |
alias | alias | alias |
allow_directMedia | digit_match | table_id |
cause_code_profile_id | end_tod | oani |
CNAME_group_index | group_id | odnis |
codec_policy | max_len | tani |
company_name | min_len | tdnis |
cps_limit | policy | |
digit_trans_id | resource_id_1 | |
direction | resource_id_2 | |
DNC_group_index | resource_id_3 | |
ERS_group_index | resource_id_4 | |
LNP_group_index | resource_id_5 | |
max_call_duration | resource_id_6 | |
no_answer_timeout | resource_id_7 | |
no_ring_timeout | resource_id_8 | |
option_poll | start_tod | |
pai_action | table_id | |
pai_string | ||
RADIUS_acct_group_index | ||
RADIUS_auth_group_index | ||
service_port_index | ||
service_state | ||
sip_profile_index | ||
source_address | ||
stop_route_profile_id | ||
table_id | ||
tech_prefix | ||
trunk_id | ||
egress_smc_profile_id | ||
srtp_enable | ||
sti_ingress_authentication | ||
sti_ingress_verification | ||
sti_egress_id_hdr_treatment | ||
STI_AS_group_index | ||
STI_VS_group_index | ||
nat_peering | ||
Examples
curl -u USERNAME:PASSWORD -X GET -o DMT.xml "https://SERVER_IP:8888/SSConfig/webresources/query/digit_mapping?queryString=alias like '%TEST%'" or curl -u USERNAME:PASSWORD -X GET -o DMT.xml "https://SERVER_IP:8888/SSConfig/webresources/query/digit_mapping?queryString=alias%20like%20%27%25TEST%25%27"