Skip to content

KAZOO Support Channels

This documentation is curated by 2600Hz as part of the KAZOO open source project. Join our community forums here for peer support. Only features in the docs.2600hz.com/supported space are included as part of our 2600Hz Support Services plan.

Support

Support#

Introduction#

Support APIs are meant for the 2600Hz support team to manage, debug and fix issues occuring within the database of with some subscriptions. Misusing some of these APIs can result in breaking some functionalities for the end user. As such, they require a higher level of authentication.

API Index#

Manage Subscriptions:#
Manage Cluster documents:#
Manage Routing Customer Clusters:#
Manage Routing Carrier SBCs:#
Manage Routing Media Servers:#

APIs#

Import an already active device#

Required Authentication Level: super_master

PUT http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/devices/import

curl -v -X PUT \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/devices/import \
    -d '{ \
        "data": { \
            "esn": "{ESN}", \
            "mdn": "{MDN}", \
            "name": "Joe's Mobile Phone", \
            "voice": { \
                "protocol": "sip",
                "sip": { \
                    "realm": "sip.mycompany.com", \
                    "username": "my_softphone", \
                    "password": "abcdef123456" \
                } \
            } \
        }, \
        "carrier": "sprint"
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{DEVICE_ID}",
        "name": "Joe's Mobile Phone",
        "model": {
            "name": "SAMSUNG L300 HANDSET KIT",
            "number": "SPHL300KTS",
            "manufacturer": "SAMSUNG"
        },
        "subscription": {
            "mdn": "+15550001111",
            "csa": "SFRSFR415",
            "sim": "01234567890123456789",
            "imsi": "9876543210",
            "plan": "260PLAN21",
            "features": ["international", "sip", "mms", "lte"]
        },
        "data": {
            "caps": {
                "blocking": {
                    "cap": 0
                },
                "throttling": {
                    "cap": 0,
                    "rate": "256k"
                }
            }
        },
        "voice": {
            "protocol": "sip",
            "sip": { 
                "realm": "sip.mycompany.com", 
                "username": "my_softphone", 
                "password": "abcdef123456" 
            } 
        }
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Optional parameters:#
Key Value Description
esn, mdn "sprint" Only one of these is required, if both are specified mdn will take precedence over esn.
data {OBJECT} Set the data policies on the device. If not specified, will used the account default or will default to no cap. See usage policies doc for more information.

Lookup a TOP Device by its MDN in any account#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/phone_numbers/{MDN}/device

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/phone_numbers/{MDN}/device
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{DEVICE_ID}",
        "name": "Joe's Mobile Phone",
        "model": {
            "name": "SAMSUNG L300 HANDSET KIT",
            "number": "SPHL300KTS",
            "manufacturer": "SAMSUNG"
            },
        "subscription": {
            "esn": "{ESN}",
            "mdn": "{MDN}",
            "sim": "01234567890123456789",
            "imsi": "9876543210",
            "plan": "260PLAN21",
            "features": ["international", "sip", "mms", "lte"],
            "carrier_data": {
                "msid": "012345678901234",
                "csa": "SFRSFR415"
            }
        },
        "data": {
            "caps": {
                "blocking": {
                    "cap": 0
                },
                "throttling": {
                    "cap": 0,
                    "rate": "256k"
                }
            }
        },
        "voice": {
            "protocol": "sip",
            "sip": { 
                "realm": "sip.mycompany.com", 
                "username": "my_softphone", 
                "password": "abcdef123456" 
            } 
        }
    },
    "carrier": "sprint",
    "account_id": "{ACCOUNT_ID}",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Get a Phone Number's subscription info from a Carrier#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/phone_numbers/{MDN}/subscription

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/phone_numbers/{MDN}/subscription
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "esn": "{ESN}",
        "mdn": "{MDN}",
        "sim": "01234567890123456789",
        "imsi": "9876543210",
        "plan": "{PLAN}",
        "features": [
            "international",
            "sip",
            "mms",
            "lte"
        ],
        "carrier_data": {
            "msid": "012345678901234",
            "csa": "SFRSFR415"
        }
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Optional query string parameters:#
Key Value Description
carrier sprint Choose with which Carrier to check the subscription. Depending on your MVNO, this may be ignored.

Get a Device's subscription info from a Carrier#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/devices/{ESN}/subscription

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/devices/{ESN}/subscription
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "esn": "{ESN}",
        "mdn": "{MDN}",
        "sim": "01234567890123456789",
        "imsi": "9876543210",
        "plan": "{PLAN}",
        "features": [
            "international",
            "sip",
            "mms",
            "lte"
        ],
        "carrier_data": {
            "msid": "012345678901234",
            "csa": "SFRSFR415"
        }
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Optional query string parameters:#
Key Value Description
carrier sprint Choose with which Carrier to check the subscription. Depending on your MVNO, this may be ignored.

Get the data usage of "unknown" numbers#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/usage/unknown_numbers

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/usage/unknown_numbers
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "from": "201611",
        "to": "201611",
        "total": 187994323,
        "per_mdn": {
            "+15550123456": 162324323,
            "+15556541490": 25670000
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Optional query string parameters:#
Key Value Description
from YYYYMM ("201610") Choose the starting month for the usage report. Defaults to the current month.
to YYYYMM Choose the last month for the usage report. Defaults to the current month.
month YYYYMM Choose a single month for the usage report. Will override both the from and to parameters.

Alternatively, the URL http://{SERVER}:{PORT}/v2/support/usage/unknown_numbers/{MONTH} can be used to get a usage report for a single month.

Note: When one or more of the requested months do not have any data usage, they will be listed in the empty_months array.

"empty_months": [
    "201610",
    "201612"
]


Get the data usage across all accounts#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/usage/audit

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/usage/audit
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "from": "201701",
        "to": "201701",
        "total": 5468097625,
        "accounts": {
            "0123456789abcdef0123456789abcdef": {
                "+15550001111": 2031380,
                "+15550001112": 1988955671,
                "+15550001113": 410406787
            },
            "fedcba9876543210fedcba9876543210": {
                "+15550002221": 28483441,
                "+15550002222": 2111332188,
                "+15550002223": 719710646,
                "+15550002224": 201526776
            },
            "unknown_account": {
                "+15550003331": 800087,
                "+15550003332": 4850649
            }
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Optional query string parameters:#
Key Value Description
from YYYYMM ("201610") Choose the starting month for the usage report. Defaults to the current month.
to YYYYMM Choose the last month for the usage report. Defaults to the current month.
month YYYYMM Choose a single month for the usage report. Will override both the from and to parameters.

Alternatively, the URL http://{SERVER}:{PORT}/v2/support/usage/audit/{MONTH} can be used to get a usage report for a single month.

A single month may also be requested as a CSV with the URL:

GET http://{SERVER}:{PORT}/v2/support/usage/audit/{MONTH}/csv


Poll the port messages from the Carrier#

Required Authentication Level: master

The polling will automatically be done regularly through a script, this API simply provides a way to force the polling without having to wait for the next run of the script.

POST http://{SERVER}:{PORT}/v2/support/ports/poll

curl -v -X POST \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/ports/poll \
    -d '{ "data": {} }'

Update a Port In document's status#

Required Authentication Level: master

This allows to manually update a port status in case the port messaging system from the Carrier is unreliable. Setting the status code to either canceled or completed will trigger the appropriate updates on the device document. Please refer to the documentation on valid Port status.

POST http://{SERVER}:{PORT}/v2/support/ports/in/{PORT_ID}/status

curl -v -X POST \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/ports/in/{PORT_ID}/status \
    -d '{ "data": { \
        "code": "completed", \
        "source": "carrier" \
    } }'

Note: The flag forced_update: true will automatically be added to the port status. This can't be manually overwritten.


Patch a Device document#

Required Authentication Level: super_master

PATCH http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/devices/{DEVICE_ID}

curl -v -X PATCH \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/devices/{DEVICE_ID} \
    -d '{ \
        "data": { \
            "name": "Bob's Mobile Phone", \
            "model": { \
                "manufacturer": "MOTOROLA" \
            } \
        }, \
        "recursive": true \
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{DEVICE_ID}",
        "name": "Bob's Mobile Phone",
        "model": {
            "name": "SAMSUNG L300 HANDSET KIT",
            "number": "SPHL300KTS",
            "manufacturer": "MOTOROLA"
            },
        "subscription": {
            "esn": "{ESN}",
            "mdn": "+15550001111",
            "sim": "01234567890123456789",
            "imsi": "9876543210",
            "plan": "260PLAN21",
            "features": ["international", "sip", "mms", "lte"],
            "carrier_data": {
                "msid": "{MSID}",
                "csa": "SFRSFR415"
            },
            "activation_date": 63648957842
        },
        "data": {
            "blocking": {
                "cap": 2000000000
            },
            "throttling": {
                "cap": 1800000000,
                "rate": "256k"
            }
        },
        "voice": {
            "protocol": "sip",
            "sip": { 
                "realm": "sip.mycompany.com", 
                "username": "another_softphone", 
                "password": "abcdef123456" 
            } 
        },
        "additional_properties": {
            "last_manual_update": 63658477135
        }
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Note: Contrary to the basic Patch Device API, this API allow you to patch any field in a device document. In addition, the property additional_properties.last_manual_update will be automatically set to the current timestamp.

As with all PATCH requests, the recursive flag can be sent in the payload envelope to perform a recursive PATCH. This flag will be set to false by default if not specified.


MANAGE SUBSCRIPTIONS:#


Lookup Carrier Subscription#

Required Authentication Level: super_master

This API allows support to lookup a subscription's info straight from a carrier. If the subscription can also be found in the TOP database, the subscription full document (containing all pvt fields) will also be included in the response payload, along with the account ID in which the subscription was found.

POST http://{SERVER}:{PORT}/v2/support/subscriptions/lookup

curl -v -X POST \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/subscriptions/lookup \
    -d '{ \
        "data": { \
            "esn": "{DEVICE_ID}" \
        }, \
        "carrier": "sprint" \
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "carrier_data": {
            "esn": "{DEVICE_ESN}",
            "mdn": "+14157487153",
            "sim": null,
            "imsi": null,
            "plan": "260PLAN1",
            "features": [
                "international",
                "sip",
                "mms",
                "tethering"
            ],
            "carrier": "sprint",
            "carrier_data": {
                "msid": "000004156375241",
                "csa": "SFRSFR415"
            },
            "activation_date": 63746871056,
            "suspended": false
        },
        "account_id": "{ACCOUNT_ID}",
        "document": {
            "esn": "{DEVICE_ID}",
            "sim": null,
            "mdn": "+14157487153",
            "imsi": null,
            "plan": "260PLAN1",
            "features": [
                "international",
                "sip",
                "mms",
                "tethering"
            ],
            "suspended": false,
            "carrier_data": {
                "msid": "000004156375241",
                "csa": "SFRSFR415"
            },
            "pvt_carrier_name": "sprint",
            "pvt_mvno": "2600hz_sandbox",
            "pvt_cluster_id": "{CLUSTER_ID}",
            "pvt_type": "subscription",
            "pvt_created": 63746871057,
            "pvt_modified": 63751266642,
            "_id": "{SUBSCRIPTION_ID}"
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Request payload schema#
Key Type Required Description
data object Yes Object containing the main payload data.
data.esn string Conditional The ESN/MEID/IMEI of the device associated with the subscription to lookup. Required if neither data.sim nor data.mdn are provided.
data.sim string Conditional The SIM ID associated with the subscription to lookup. Required if neither data.esn nor data.mdn are provided.
data.mdn string Conditional The MDN associated with the subscription to lookup. Required if neither data.esn nor data.sim are provided.
carrier string No Choose which carrier to validate against.

Import an active Subscription#

Required Authentication Level: super_master

This API allows support to import an active subscription in the TOP database. A new subscription document will be created in the chosen account's database. If the subscription is tied to a device, a new device document will also be created.

PUT http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/import

curl -v -X PUT \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/import \
    -d '{ \
        "data": {
            "mdn": "{SUBSCRIPTION_MDN}", \
            "device_data": { \
                "name": "Samsung 013", \
                "voice": { \
                    "sip": { \
                        "realm": "sip.mycompany.com", \
                        "username": "my_softphone", \
                        "password": "abcdef123456" \
                    } \
                }, \
                "data": { \
                    "blocking": { \
                        "cap": 0 \
                    }, \
                    "throttling": { \
                        "cap": 0, \
                        "rate": "64k" \
                    } \
                } \
            } \
        }, \
        "carrier": "sprint"
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SUBSCRIPTION_ID}",
        "esn": "{DEVICE_ID}",
        "sim": null,
        "mdn": "{SUBSCRIPTION_MDN}",
        "imsi": null,
        "plan": "260PLAN1",
        "features": [
            "international",
            "sip",
            "mms",
            "tethering"
        ],
        "suspended": false,
        "carrier_data": {
            "msid": "000004156375241",
            "csa": "SFRSFR415"
        },
        "carrier_name": "sprint"
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Request payload schema#
Key Type Required Description
data object Yes Object containing the main payload data.
data.esn string Conditional The ESN/MEID/IMEI of the device associated with the subscription to import. Required if neither data.sim nor data.mdn are provided.
data.sim string Conditional The SIM ID associated with the subscription to import. Required if neither data.esn nor data.mdn are provided.
data.mdn string Conditional The MDN associated with the subscription to import. Required if neither data.esn nor data.sim are provided.
data.device_data object No An object containing non-carrier info (such as name, voice and data objects) for the device associated with the subscription to import (if any). For more details about those objects, refer to the Subscription activation schema.
carrier string No Specify which carrier to import the subscription from.

Delete a Subscription document#

Required Authentication Level: super_master

This API allows support to delete a Subscription document from the database. If the optional query string parameter cascade is set to true, any Device document associated with the Subscription will also be deleted.

Note: This does not deactivate the subscription with the Carrier, it only deletes documents in the TOP database.

DELETE http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/{SUBSCRIPTION_ID}

curl -v -X DELETE \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/{SUBSCRIPTION_ID} \
    -d '{ "data": {} }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SUBSCRIPTION_ID}",
        "esn": "{DEVICE_ID}",
        "sim": null,
        "mdn": "+14157487153",
        "imsi": null,
        "plan": "260PLAN1",
        "features": [
            "international",
            "sip",
            "mms",
            "tethering"
        ],
        "suspended": false,
        "carrier_data": {
            "msid": "000004156375241",
            "csa": "SFRSFR415"
        },
        "carrier_name": "sprint"
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Optional query string parameters:#
Key Default value Description
cascade false If set to true, any device document associated with the subscription will also be deleted.

Patch a Subscription document#

Required Authentication Level: super_master

This API allows support to update a subscription document by patching it. This does not trigger any update on the carrier side, but unlike the regular subscription patch API, any part of the document can be patched.
In addition, the property additional_properties.last_manual_update will be automatically set to the current timestamp.

PATCH http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/{SUBSCRIPTION_ID}

curl -v -X PATCH \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/{SUBSCRIPTION_ID} \
    -d '{ \
        "data": { \
            "additional_properties": { \
                "name": "New Subscription Name" \
            }, \
            "mdn": "+15555555555", \
            "plan": "fakeplan" \
        }, \
        "recursive": true \
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SUBSCRIPTION_ID}",
        "esn": "{DEVICE_ID}",
        "sim": null,
        "mdn": "+15555555555",
        "imsi": null,
        "plan": "fakeplan",
        "features": [
            "international",
            "sip",
            "mms",
            "tethering"
        ],
        "suspended": false,
        "carrier_data": {
            "msid": "000004156375241",
            "csa": "SFRSFR415"
        },
        "carrier_name": "sprint",
        "additional_properties": {
            "name": "New Subscription Name",
            "last_manual_update": 63751259950
        }
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

As with all PATCH requests, the recursive flag can be sent in the payload envelope to perform a recursive PATCH. This flag will be set to false by default if not specified.


Move a Subscription to a different account and/or cluster#

Required Authentication Level: super_master

This API allows support to move an existing subscription document, along with its associated device (if any), to a different account and/or cluster.

POST http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/{SUBSCRIPTION_ID}/move

curl -v -X POST \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/accounts/{ACCOUNT_ID}/subscriptions/{SUBSCRIPTION_ID}/move \
    -d '{ \
        "target_account_id": {TARGET_ACCOUNT_ID} \
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SUBSCRIPTION_ID}",
        "esn": "{DEVICE_ID}",
        "sim": null,
        "mdn": "+14157487153",
        "imsi": null,
        "plan": "260PLAN1",
        "features": [
            "international",
            "sip",
            "mms",
            "tethering"
        ],
        "suspended": false,
        "carrier_data": {
            "msid": "000004156375241",
            "csa": "SFRSFR415"
        },
        "carrier_name": "sprint"
    },
    "carrier": "sprint",
    "request_id": "{REQUEST_ID}",
    "status": "success"
}
Request payload schema#
Key Type Required Description
data object Yes Object containing the main payload data.
data.target_account_id string Yes The ID of the kazoo account where the Subscription should be moved.
data.target_cluster_id string No The ID of the kazoo cluster where the Subscription should be moved.

MANAGE CLUSTER DOCUMENTS:#

Create a Cluster document#

Required Authentication Level: super_master

PUT http://{SERVER}:{PORT}/v2/support/clusters/{TARGET_CLUSTER_ID}

curl -v -X PUT \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/clusters/{TARGET_CLUSTER_ID} \
    -d '{ \
        "data": { \
            "mvno_id": "{MVNO_ID}", \
            "api_url": "{API_URL}", \
            "api_key": "{API_KEY}", \
            "hosted_billing_account_id":"{ACCOUNT_ID}" \
        } \
    }'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{TARGET_CLUSTER_ID}",
        "mvno_id": "{MVNO_ID}",
        "api_url": "{API_URL}",
        "api_key": "{ENCRYPTED_API_KEY}",
        "hosted_billing_account_id": "{ACCOUNT_ID}"
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Note: The api_key field will automatically be encrypted upon the creation of the document.


Delete a Cluster document#

Required Authentication Level: super_master

DELETE http://{SERVER}:{PORT}/v2/support/clusters/{TARGET_CLUSTER_ID}

curl -v -X DELETE \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/clusters/{TARGET_CLUSTER_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{TARGET_CLUSTER_ID}",
        "mvno_id": "{MVNO_ID}",
        "api_url": "{API_URL}",
        "api_key": "{ENCRYPTED_API_KEY}",
        "hosted_billing_account_id": "{ACCOUNT_ID}"
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Note: The Master Cluster cannot be deleted.


MANAGE ROUTING CUSTOMER CLUSTERS:#

List Routing Clusters#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/routing/customer_clusters

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/customer_clusters
{
    "auth_token": "{AUTH_TOKEN}",
    "data": [
        {
            "id": "8a901bea1d3297ef7d4c8d34809472c2",
            "name": "Kazoo Hosted",
            "owner": "2600hz"
        },
        {
            "id": "aa2b36ac6a5edb290159cd1298283322",
            "name": "Kazoo Sandbox",
            "owner": "2600hz"
        }
    ],
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Get a Routing Cluster#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{CLUSTER_ID}",
        "owner": "2600hz",
        "name": "Test Cluster",
        "ips": {
            "inbound": {
                "east": ["0.0.0.1"],
                "central": ["0.0.1.1"],
                "west": ["0.0.2.1"]
            },
            "outbound": {
                "east": ["0.0.0.2"],
                "central": ["0.0.1.2"],
                "west": ["0.0.2.2"]
            }
        },
        "randomize_routing": false
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Create a Routing Cluster#

Required Authentication Level: super_master

PUT http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}

curl -v -X PUT \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID} \
    -d '{ "data": { \
        "owner": "2600hz", \
        "name": "Test Cluster", \
        "ips": { \
            "inbound": { \
                "east": ["0.0.0.1"], \
                "central": ["0.0.1.1"], \
                "west": ["0.0.2.1"] \
            }, \
            "outbound": { \
                "east": ["0.0.1.1"], \
                "central": ["0.0.1.2"], \
                "west": ["0.0.2.2"] \
            } \
        }, \
        "randomize_routing": false \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{CLUSTER_ID}",
        "owner": "2600hz",
        "name": "Test Cluster",
        "ips": {
            "inbound": {
                "east": ["0.0.0.1"],
                "central": ["0.0.1.1"],
                "west": ["0.0.2.1"]
            },
            "outbound": {
                "east": ["0.0.0.2"],
                "central": ["0.0.1.2"],
                "west": ["0.0.2.2"]
            }
        },
        "randomize_routing": false
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Update a Routing Cluster#

Required Authentication Level: super_master

POST http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}

curl -v -X POST \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID} \
    -d '{ "data": { \
        "owner": "2600hz", \
        "name": "Test Cluster", \
        "ips": { \
            "inbound": { \
                "east": ["0.0.0.1"], \
                "central": ["0.0.1.1"], \
                "west": ["0.0.2.1"] \
            }, \
            "outbound": { \
                "east": ["0.0.0.2", "0.0.0.3"], \
                "central": ["0.0.1.2", "0.0.1.3"], \
                "west": ["0.0.2.2", "0.0.2.3"] \
            } \
        }, \
        "randomize_routing": false \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{CLUSTER_ID}",
        "owner": "2600hz",
        "name": "Test Cluster",
        "ips": {
            "inbound": {
                "east": ["0.0.0.1"],
                "central": ["0.0.1.1"],
                "west": ["0.0.2.1"]
            },
            "outbound": {
                "east": ["0.0.0.2", "0.0.0.3"],
                "central": ["0.0.1.2", "0.0.1.3"],
                "west": ["0.0.2.2", "0.0.2.3"]
            }
        },
        "randomize_routing": false
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Patch a Routing Cluster#

Required Authentication Level: super_master

PATCH http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}

curl -v -X PATCH \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID} \
    -d '{ "data": { \
        "ips": { \
            "outbound": { \
                "east": ["1.1.1.2", "1.1.1.3"]
            } \
        }, \
        "randomize_routing": true \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{CLUSTER_ID}",
        "owner": "2600hz",
        "name": "Test Cluster",
        "ips": {
            "inbound": {
                "east": ["0.0.0.1"],
                "central": ["0.0.1.1"],
                "west": ["0.0.2.1"]
            },
            "outbound": {
                "east": ["1.1.1.2", "1.1.1.3"],
                "central": ["0.0.1.2", "0.0.1.3"],
                "west": ["0.0.2.2", "0.0.2.3"]
            }
        },
        "randomize_routing": true
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Delete a Routing Cluster#

Required Authentication Level: super_master

DELETE http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}

curl -v -X DELETE \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/customer_clusters/{CLUSTER_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{CLUSTER_ID}",
        "owner": "2600hz",
        "name": "Test Cluster",
        "ips": {
            "inbound": {
                "east": ["0.0.0.1"],
                "central": ["0.0.1.1"],
                "west": ["0.0.2.1"]
            },
            "outbound": {
                "east": ["1.1.1.2", "1.1.1.3"],
                "central": ["0.0.1.2", "0.0.1.3"],
                "west": ["0.0.2.2", "0.0.2.3"]
            }
        },
        "randomize_routing": true
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

MANAGE ROUTING CARRIER SBCS:#

List Routing Carrier SBCs#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs
{
    "auth_token": "{AUTH_TOKEN}",
    "data": [
        {
            "id": "{SBC_ID}",
            "name": "Sprint East SBC",
            "carrier": "sprint",
            "location": {
                "zone": "east",
                "state": "NY",
                "city": "New York City"
            },
            "mobile_media_server": "{MEDIA_SERVER_ID}"
        },
        {
            "id": "{SBC_ID_2}",
            "name": "Sprint West SBC",
            "carrier": "sprint",
            "location": {
                "zone": "west",
                "state": "CA",
                "city": "Los Angeles"
            },
            "mobile_media_server": "{MEDIA_SERVER_ID_2}"
        },
        {
            "id": "{SBC_ID_3}",
            "name": "Sprint Central SBC",
            "carrier": "sprint",
            "location": {
                "zone": "central",
                "state": "IL",
                "city": "Chicago"
            },
            "mobile_media_server": "{MEDIA_SERVER_ID_3}"
        }
    ],
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Get a Routing Carrier SBC#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID}

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SBC_ID}",
        "name": "Dummy SBC",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "ips": ["1.2.3.4"],
        "mobile_media_server": "{MEDIA_SERVER_ID}",
        "call_directions": [
            {
                "direction": "from_mobile_device",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=orig"
                }
            },
            {
                "direction": "from_pstn",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=term"
                }
            }
        ],
        "number_formatting": {
            "from_mobile_device": {
                "to_number": {
                    "pattern": "/^(?:467)?([0-9]+)$/",
                    "replace": "$1"
                }
            },
            "from_pstn": {
                "to_number": {
                    "pattern": "/^(?:467)?([0-9]+)$/",
                    "replace": "$1"
                }
            },
            "to_mobile_device": {
                "to_number": {
                    "pattern": "/^([0-9]+)$/",
                    "replace": "99999$1"
                }
            }
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Create a Routing Carrier SBC#

Required Authentication Level: super_master

PUT http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs

curl -v -X PUT \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs \
    -d '{ "data": { \
        "name": "Dummy SBC", \
        "location": { \
            "zone": "west", \
            "state": "CA", \
            "city": "San Francisco" \
        }, \
        "ips": ["1.2.3.4"], \
        "mobile_media_server": "{MEDIA_SERVER_ID}", \
        "call_directions": [ \
            { \
                "direction": "from_mobile_device", \
                "headers": { \
                    "variable_sip_h_P-Served-User": "sescase=orig" \
                } \
            }, \
            { \
                "direction": "from_pstn", \
                "headers": { \
                    "variable_sip_h_P-Served-User": "sescase=term" \
                } \
            } \
        ], \
        "number_formatting": { \
            "from_mobile_device": { \
                "to_number": { \
                    "pattern": "/^(?:467)?([0-9]+)$/", \
                    "replace": "$1" \
                } \
            }, \
            "from_pstn": { \
                "to_number": { \
                    "pattern": "/^(?:467)?([0-9]+)$/", \
                    "replace": "$1" \
                } \
            }, \
            "to_mobile_device": { \
                "to_number": { \
                    "pattern": "/^([0-9]+)$/", \
                    "replace": "99999$1" \
                } \
            } \
        } \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SBC_ID}",
        "name": "Dummy SBC",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "ips": ["1.2.3.4"],
        "mobile_media_server": "{MEDIA_SERVER_ID}",
        "call_directions": [
            {
                "direction": "from_mobile_device",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=orig"
                }
            },
            {
                "direction": "from_pstn",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=term"
                }
            }
        ],
        "number_formatting": {
            "from_mobile_device": {
                "to_number": {
                    "pattern": "/^(?:467)?([0-9]+)$/",
                    "replace": "$1"
                }
            },
            "from_pstn": {
                "to_number": {
                    "pattern": "/^(?:467)?([0-9]+)$/",
                    "replace": "$1"
                }
            },
            "to_mobile_device": {
                "to_number": {
                    "pattern": "/^([0-9]+)$/",
                    "replace": "99999$1"
                }
            }
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Update a Routing Carrier SBC#

Required Authentication Level: super_master

POST http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID}

curl -v -X POST \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID} \
    -d '{ "data": { \
        "name": "Dummy SBC", \
        "location": { \
            "zone": "west", \
            "state": "CA", \
            "city": "San Francisco" \
        }, \
        "ips": ["1.2.3.4"], \
        "mobile_media_server": "{MEDIA_SERVER_ID}", \
        "call_directions": [ \
            { \
                "direction": "from_mobile_device", \
                "headers": { \
                    "variable_sip_h_P-Served-User": "sescase=orig" \
                } \
            }, \
            { \
                "direction": "from_pstn", \
                "headers": { \
                    "variable_sip_h_P-Served-User": "sescase=term" \
                } \
            } \
        ], \
        "number_formatting": { \
            "to_mobile_device": { \
                "to_number": { \
                    "pattern": "/^([0-9]+)$/", \
                    "replace": "99999$1" \
                } \
            } \
        } \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SBC_ID}",
        "name": "Dummy SBC",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "ips": ["1.2.3.4"],
        "mobile_media_server": "{MEDIA_SERVER_ID}",
        "call_directions": [
            {
                "direction": "from_mobile_device",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=orig"
                }
            },
            {
                "direction": "from_pstn",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=term"
                }
            }
        ],
        "number_formatting": {
            "to_mobile_device": {
                "to_number": {
                    "pattern": "/^([0-9]+)$/",
                    "replace": "99999$1"
                }
            }
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Patch a Routing Carrier SBC#

Required Authentication Level: super_master

PATCH http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID}

curl -v -X PATCH \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID} \
    -d '{ "data": { \
        "ips": ["1.2.3.4", "1.2.3.5", "1.2.3.6"] \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SBC_ID}",
        "name": "Dummy SBC",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "ips": ["1.2.3.4", "1.2.3.5", "1.2.3.6"],
        "mobile_media_server": "{MEDIA_SERVER_ID}",
        "call_directions": [
            {
                "direction": "from_mobile_device",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=orig"
                }
            },
            {
                "direction": "from_pstn",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=term"
                }
            }
        ],
        "number_formatting": {
            "to_mobile_device": {
                "to_number": {
                    "pattern": "/^([0-9]+)$/",
                    "replace": "99999$1"
                }
            }
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Delete a Routing Carrier SBC#

Required Authentication Level: super_master

DELETE http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID}

curl -v -X DELETE \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/carrier_sbcs/{SBC_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{SBC_ID}",
        "name": "Dummy SBC",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "ips": ["1.2.3.4", "1.2.3.5", "1.2.3.6"],
        "mobile_media_server": "{MEDIA_SERVER_ID}",
        "call_directions": [
            {
                "direction": "from_mobile_device",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=orig"
                }
            },
            {
                "direction": "from_pstn",
                "headers": {
                    "variable_sip_h_P-Served-User": "sescase=term"
                }
            }
        ],
        "number_formatting": {
            "to_mobile_device": {
                "to_number": {
                    "pattern": "/^([0-9]+)$/",
                    "replace": "99999$1"
                }
            }
        }
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

MANAGE ROUTING MEDIA SERVERS:#

List Routing Media Servers#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/routing/media_servers

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/media_servers
{
    "auth_token": "{AUTH_TOKEN}",
    "data": [
        {
            "id": "{EAST_MEDIA_SERVER_ID}",
            "name": "NY2 Mobile Media Server",
            "location": {
                "zone": "east",
                "state": "NY",
                "city": "New York"
            },
            "carrier_sbc_priority": {
                "sprint": [
                    "{EAST_SBC_ID}",
                    "{CENTRAL_SBC_ID}",
                    "{WEST_SBC_ID}"
                ]
            }
        },
        {
            "id": "{WEST_MEDIA_SERVER_ID}",
            "name": "SV4 Mobile Media Server",
            "location": {
                "zone": "west",
                "state": "CA",
                "city": "Santa Clara"
            },
            "carrier_sbc_priority": {
                "sprint": [
                    "{WEST_SBC_ID}",
                    "{CENTRAL_SBC_ID}",
                    "{EAST_SBC_ID}"
                ]
            }
        },
        {
            "id": "{CENTRAL_MEDIA_SERVER_ID}",
            "name": "CH2 Mobile Media Server",
            "location": {
                "zone": "central",
                "state": "IL",
                "city": "Chicago"
            },
            "carrier_sbc_priority": {
                "sprint": [
                    "{CENTRAL_SBC_ID}",
                    "{EAST_SBC_ID}",
                    "{WEST_SBC_ID}"
                ]
            }
        }
    ],
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Get a Routing Media Server#

Required Authentication Level: super_master

GET http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID}

curl -v -X GET \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{MEDIA_SERVER_ID}",
        "name": "Dummy Media Server",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "interfaces": {
            "carrier_mpls": {
                "sprint": "sipinterface_sprint"
            },
            "authenticated_connection": "sipinterface_to_customer",
            "unauthenticated_connection": "sipinterface_sprint_did"
        },
        "carrier_sbc_priority": {
            "sprint": [
                "{WEST_SBC_ID}",
                "{CENTRAL_SBC_ID}",
                "{EAST_SBC_ID}"
            ]
        },
        "top_ips": ["10.26.254.254", "10.26.254.253"]
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Create a Routing Media Server#

Required Authentication Level: super_master

PUT http://{SERVER}:{PORT}/v2/support/routing/media_servers

curl -v -X PUT \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/media_servers \
    -d '{ "data": { \
        "name": "Dummy Media Server", \
        "location": { \
            "zone": "west", \
            "state": "CA", \
            "city": "San Francisco" \
        }, \
        "interfaces": { \
            "carrier_mpls": { \
                "sprint": "sipinterface_sprint" \
            }, \
            "authenticated_connection": "sipinterface_to_customer", \
            "unauthenticated_connection": "sipinterface_sprint_did" \
        }, \
        "carrier_sbc_priority": { \
            "sprint": [ \
                "{WEST_SBC_ID}", \
                "{CENTRAL_SBC_ID}", \
                "{EAST_SBC_ID}" \
            ] \
        }, \
        "top_ips": ["10.26.254.254", "10.26.254.253"] \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{MEDIA_SERVER_ID}",
        "name": "Dummy Media Server",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "interfaces": {
            "carrier_mpls": {
                "sprint": "sipinterface_sprint"
            },
            "authenticated_connection": "sipinterface_to_customer",
            "unauthenticated_connection": "sipinterface_sprint_did"
        },
        "carrier_sbc_priority": {
            "sprint": [
                "{WEST_SBC_ID}",
                "{CENTRAL_SBC_ID}",
                "{EAST_SBC_ID}"
            ]
        },
        "top_ips": ["10.26.254.254", "10.26.254.253"]
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Update a Routing Media Server#

Required Authentication Level: super_master

POST http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID}

curl -v -X POST \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID} \
    -d '{ "data": { \
        "name": "Dummy Media Server", \
        "location": { \
            "zone": "west", \
            "state": "CA", \
            "city": "San Francisco" \
        }, \
        "interfaces": { \
            "carrier_mpls": { \
                "sprint": "sprint_mpls_interface" \
            }, \
            "authenticated_connection": "authenticated_connection_interface", \
            "unauthenticated_connection": "unauthenticated_connection_interface" \
        }, \
        "carrier_sbc_priority": { \
            "sprint": [ \
                "{WEST_SBC_ID}", \
                "{CENTRAL_SBC_ID}", \
                "{EAST_SBC_ID}" \
            ] \
        }, \
        "top_ips": ["10.26.254.254", "10.26.254.253"] \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{MEDIA_SERVER_ID}",
        "name": "Dummy Media Server",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "interfaces": {
            "carrier_mpls": {
                "sprint": "sprint_mpls_interface"
            },
            "authenticated_connection": "authenticated_connection_interface",
            "unauthenticated_connection": "unauthenticated_connection_interface"
        },
        "carrier_sbc_priority": {
            "sprint": [
                "{WEST_SBC_ID}",
                "{CENTRAL_SBC_ID}",
                "{EAST_SBC_ID}"
            ]
        },
        "top_ips": ["10.26.254.254", "10.26.254.253"]
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Patch a Routing Media Server#

Required Authentication Level: super_master

PATCH http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID}

curl -v -X PATCH \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID} \
    -d '{ "data": { \
        "top_ips": ["10.26.0.254", "10.26.0.253"] \
    }}'
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{MEDIA_SERVER_ID}",
        "name": "Dummy Media Server",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "interfaces": {
            "carrier_mpls": {
                "sprint": "sprint_mpls_interface"
            },
            "authenticated_connection": "authenticated_connection_interface",
            "unauthenticated_connection": "unauthenticated_connection_interface"
        },
        "carrier_sbc_priority": {
            "sprint": [
                "{WEST_SBC_ID}",
                "{CENTRAL_SBC_ID}",
                "{EAST_SBC_ID}"
            ]
        },
        "top_ips": ["10.26.0.254", "10.26.0.253"]
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}

Delete a Routing Media Server#

Required Authentication Level: super_master

DELETE http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID}

curl -v -X DELETE \
    -H "Content-Type:application/json" \
    -H "X-Auth-Token: {AUTH_TOKEN}" \
    -H "X-Kazoo-Cluster-ID: {CLUSTER_ID}" \
    http://{SERVER}:{PORT}/v2/support/routing/media_servers/{MEDIA_SERVER_ID}
{
    "auth_token": "{AUTH_TOKEN}",
    "data": {
        "id": "{MEDIA_SERVER_ID}",
        "name": "Dummy Media Server",
        "location": {
            "zone": "west",
            "state": "CA",
            "city": "San Francisco"
        },
        "interfaces": {
            "carrier_mpls": {
                "sprint": "sprint_mpls_interface"
            },
            "authenticated_connection": "authenticated_connection_interface",
            "unauthenticated_connection": "unauthenticated_connection_interface"
        },
        "carrier_sbc_priority": {
            "sprint": [
                "{WEST_SBC_ID}",
                "{CENTRAL_SBC_ID}",
                "{EAST_SBC_ID}"
            ]
        },
        "top_ips": ["10.26.0.254", "10.26.0.253"]
    },
    "request_id": "{REQUEST_ID}",
    "status": "success"
}