JSON API for Subscriber Management

YateHSS/HLR provides a JSON API to build your own subscribers management interface/platform. You can also use Mobile Management Interface.

You use this API to define subscriber profiles for the offered services: CS/PS/EPS/IMS and SIMs profiles.
You then add SIM ranges and then subscribers that reference a SIM and use the defined SIM and service profiles.

Request: set_operator

This request creates or updates a mobile operator profile. It is expected that a MVNE would create one profile per MVNO.
{
    "request": "set_operator",
    "params": {
        "operator_id": "Required for editing, don't set for creation",
        "name": "Required when creating a new operator",
        "home": {
            "gts": "Array of GT prefixes to match home (non-roaming) VPLMN nodes",
            "realms": "Array of home Diameter realms",
            "gmscs": "Array of home GMSC GTs",
            "smscs": "Array of home SMSC GTs"
        },
        "visited": {
            "prefix": "Number of digits to consider for VPLMN identification. Between 5 - 15.",
            "xprefixes": "Array of extra prefixes added by roaming hubs",
            "comment__check": "The check URL is expected to return a one line text/plain answer: plmnRoamingNotAllowed, operatorDeterminedBarring, supportedRAT-TypesNotAllowed, unknownSubscriber, unexpectedDataValue, systemFailure,  anything else to allow roaming",
            "check": "URL called to validate roaming in a new PLMN",
            "comment__hook": "The hook URL ignores any answer or failure. Its purpose is to trigger some multi-IMSI mechanism. The HTTP hooks support the following parameters. Parameters that are always present: imsi (15 digit IMSI of the SIM), net (GT prefix or Diameter realm), roaming (boolean), type (cs, ps or ims), node (vlr, sgsn, mme, mme-sgsn or cscf), proto (MAP or DIAMETER). Parameters that are sometimes present: old (GT prefix or Diameter realm), tech (geran, utran or e-utran), plmn (PLMN ID), gt (full GT of the node if applicable)",
            "hook": "URL called to notify roaming in a new PLMN",
            "check_always": "Boolean. If true always call the check URL.",
            "check_default": "Default action on unknown check response."
        }
    }
}
Examples: set_operator
Create a new operator profile.
{
    "request": "set_operator",
    "node": "hss",
    "params": {
        "name": "Operator's name",
        "home": {
            "gts": [
                "882",
                "40"
            ],
            "realms": [
                "yatebts.com"
            ],
            "smscs": []
        },
        "visited": {
            "prefix": 8,
            "xprefixes": null,
            "check": null,
            "hook": null,
            "check_always": false,
            "check_default": null
        }
    }
}
Update operator profile.
{
    "request": "set_operator",
    "node": "hss",
    "params": {
        "name": "Operator's name",
        "home": {
            "gts": [
                "882",
                "40"
            ],
            "realms": [
                "yatebts.com"
            ],
            "smscs": []
        },
        "visited": {
            "prefix": 8,
            "xprefixes": null,
            "check": null,
            "hook": null,
            "check_always": false,
            "check_default": null
        },
        "operator_id": 1
    }
}

Request: get_operator

This request retrieves an operator profile, lists or counts the available operators .
This request has multiple formats in which it can be sent:
{
    "request": "get_operator"
}
{ "request": "get_operator", "params": { "limit": "Optional numeric maximum number of operators to return.", "offset": "Numeric offset of first operator returned." } }
{ "request": "get_operator", "params": { "name": "The searched operator name." } }
{ "request": "get_operator", "params": { "operator_id": "The searched operator id." } }
Examples: get_operator
Retrieve the operators count
{
    "request": "get_operator"
}
Retrieve information for all operators
{
    "request": "get_operator",
    "params": {
        "offset": 0
    }
}
Retrieve information for specified operator
{
    "request": "get_operator",
    "params": {
        "operator_id": 23
    }
}

Request: del_operator

This request deletes an operator. You cannot delete an operator that still owns profiles, SIMs or subscribers.
This request has multiple formats in which it can be sent:
{
    "request": "del_operator",
    "params": {
        "name": "The name for operator profile to be deleted."
    }
}
{ "request": "del_operator", "params": { "operator_id": "The profile id for operator profile to be deleted." } }
Examples: del_operator
Delete operator by name.
{
    "request": "del_operator",
    "params": {
        "name": "test network"
    }
}
Delete operator by profile id.
{
    "request": "del_operator",
    "params": {
        "operator_id": 23
    }
}

Request: set_sim_profile

This request creates or updates a profile for SIM cards describing their type, supported card applications and authentication details.
{
    "sim_profile_id": "Required when editing profile, don't set when adding profile",
    "extra_id": "Optional extra alphanumeric ID for external applications correlation",
    "name": "Name of the SIM Profile.",
    "vendor": "Vendor of the SIM Profile.",
    "algorithm": "comp123-v/milenage",
    "amf": "Authentication and Key Management Field. The length must be 4. Only for milenage.",
    "sqn_counter": "Initial value of each sqn counter. Integer. Maximum 15 digits long. Defaults to 0. Only for milenage. If you want to delete this value, set it to 0.",
    "use_opc": "Boolean. Only for milenage.",
    "comment__squences_info": "SQN start+end, share and flat are mutually exclusive",
    "cs": {
        "active": "Boolean.",
        "flat_sqn": "Boolean. Indicates no indexes are used and the sequence is just a 48 bit number. By setting Flat SQN, allows a single sequence. The range must be empty.",
        "sqn_start": "0-31/missing. Start value for range of indexes, assumes standard 5 bits for index.",
        "sqn_end": "0-31/missing. Stop  value for range of indexes."
    },
    "ps": {
        "active": "Boolean.",
        "share_sqn": "Boolean. Indicates that same sequences are shared with other authentication mode: PS shares with CS, IMS shares with CS, WLAN shares with PS. Allows empty PS SQN range and also Flat SQN must be unchecked.",
        "flat_sqn": "Boolean. Indicates no indexes are used and the sequence is just a 48 bit number. If set a single sequense is used not a range of SQN and also Share SQN must be unchecked.",
        "sqn_start": "0-31/missing. The lowest sequence number. Assumes standard 5 bits for index.",
        "sqn_end": "0-31/missing. The highest sequence number."
    },
    "lte": {
        "active": "true/false",
        "amf": "Authentication and Key Management Field for LTE."
    },
    "ims": {
        "active": "Boolean. Supported only for milenage algorithm.",
        "use_opc": "Boolean.",
        "share_ki": "Boolean. Allows empty WLAN SQN range.",
        "share_sqn": "Boolean. If set the range of sequences must be empty. Indicates that same sequences are shared with other authentication mode: PS shares with CS, IMS shares with CS, WLAN shares with PS",
        "flat_sqn": "Boolean. Indicates no indexes are used and the sequence is just a 48 bit number. By setting Flat SQN, allows a single sequence. The range must be empty.",
        "sqn_start": "0-31/missing. The lowest sequence number. Assumes standard 5 bits for index.",
        "sqn_end": "0-31/missing. The highest sequence number."
    },
    "wlan": {
        "active": "Boolean.",
        "use_opc": "Boolean.",
        "share_ki": "Boolean.",
        "share_sqn": "Boolean. If set the range of sequences must be empty. Indicates that same sequences are shared with other authentication mode: PS shares with CS, IMS shares with CS, WLAN shares with PS",
        "flat_sqn": "Boolean. Uses a single sequence for WLAN. The SQN range must be empty. Indicates no indexes are used and the sequence is just a 48 bit number. By setting Flat SQN, allows a single sequence. The range must be empty.",
        "sqn_start": "0-31/missing. The lowest sequence number. Assumes standard 5 bits for index.",
        "sqn_end": "0-31/missing. The highest sequence number."
    },
    "ota_profile": {
        "cla": "Class used for RAM commands (LOAD / INSTALL / Delete Applets) ex: 80. Value: hexadecimal - 1 octet (2 characters).",
        "spi": "Security Parameters Indication - 11.1.4.1 in GlobalPlatform Card Specification version 2.3. Value: hexadecimal - 2 octets (4 characters).",
        "kid": "Algorithm used for Integrity Data (RC/CC/DS), ex: 15. Value: hexadecimal - 1 octet (2 characters). ",
        "kic": "Algorithm Identifier for ciphering, ex: 15. Value: hexadecimal - 1 octet (2 characters). ",
        "tar_ram": "Toolkit Application Reference used to manage applets, ex: 000000. Value: hexadecimal - 3 octet (6 characters). ",
        "tar_rfm_sim": "Toolkit Application Reference to update EFs under MF(3F00), DF Telecom(7F10) and DF GSM(7F20), ex: B00010. Value: hexadecimal - 3 octet (6 characters).",
        "tar_rfm_usim": "Toolkit Application Reference to update EFs under USIM Application, ex: B00001. Value: hexadecimal - 3 octet (6 characters)."
    }
}
Examples: set_sim_profile
Set new sim profile.
{
    "request": "set_sim_profile",
    "node": "hss",
    "params": {
        "name": "ims_profile_test",
        "algorithm": "milenage",
        "use_opc": true,
        "amf": "0001",
        "vendor": "test vendor",
        "sqn_counter": "0",
        "cs": {
            "active": true,
            "sqn_start": "0",
            "sqn_end": "31"
        },
        "ps": {
            "active": true,
            "share_sqn": true,
            "sqn_start": "",
            "sqn_end": ""
        },
        "lte": {
            "active": true,
            "amf": ""
        },
        "ims": {
            "active": true,
            "use_opc": false,
            "share_ki": true,
            "share_sqn": true,
            "sqn_start": "",
            "sqn_end": ""
        },
        "wlan": {
            "active": true,
            "use_opc": false,
            "share_ki": true,
            "share_sqn": true,
            "sqn_start": "",
            "sqn_end": ""
        },
        "ota_profile": {
            "cla": "80",
            "spi": "8080",
            "kid": "80",
            "kic": "15",
            "tar_ram": "000000",
            "tar_rfm_sim": "B00010",
            "tar_rfm_usim": "B00001"
        }
    }
}
Update sim profile.
{
    "request": "set_sim_profile",
    "node": "hss",
    "params": {
        "sim_profile_id": "46",
        "name": "sim_profile",
        "algorithm": "comp128-1",
        "use_opc": false,
        "vendor": "test vendor",
        "sqn_counter": null,
        "cs": {
            "active": true
        },
        "ps": {
            "active": true
        },
        "wlan": {
            "active": true
        },
        "ota_profile": {
            "cla": "",
            "spi": "",
            "kid": "",
            "kic": "",
            "tar_ram": "",
            "tar_rfm_sim": "",
            "tar_rfm_usim": ""
        }
    }
}
SmartJac ISIM with IMS application interface that holds independent authentication Ki, Op and sequence numbers.
{
    "request": "set_sim_profile",
    "node": "hss",
    "params": {
        "name": "ISIM",
        "vendor": "SmartJac",
        "algorithm": "milenage",
        "amf": "0000",
        "use_opc": false,
        "cs": {
            "active": true,
            "sqn_start": 0,
            "sqn_end": 15
        },
        "ps": {
            "active": true,
            "sqn_start": 16,
            "sqn_end": 31
        },
        "lte": {
            "active": true,
            "amf": "9001"
        },
        "ims": {
            "active": true,
            "use_opc": true,
            "share_ki": false,
            "share_sqn": false,
            "sqn_start": 0,
            "sqn_end": 31
        },
        "wlan": {
            "active": true,
            "use_opc": false,
            "share_ki": true,
            "share_sqn": true
        }
    }
}

Request: get_sim_profile

This request retrieves a SIM profile or list the available profiles.
This request has multiple formats in which it can be sent:
{
    "request": "get_sim_profile",
    "node": "hss"
}
{ "request": "get_sim_profile", "node": "hss", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned." } }
{ "request": "get_sim_profile", "node": "hss", "params": { "name": "Name of the SIM Profile." } }
{ "request": "get_sim_profile", "node": "hss", "params": { "sim_profile_id": "ID of the SIM Profile." } }
Examples: get_sim_profile
Retrive sim profiles count.
{
    "request": "get_sim_profile",
    "node": "hss"
}
Retrive first 5 sim profiles.
{
    "request": "get_sim_profile",
    "node": "hss",
    "params": {
        "limit": 5,
        "offset": 0
    }
}
Retrive specified sim profile by id.
{
    "request": "get_sim_profile",
    "node": "hss",
    "params": {
        "sim_profile_id": "88"
    }
}
Retrive specified sim profile by name.
{
    "request": "get_sim_profile",
    "node": "hss",
    "params": {
        "name": "ISIM"
    }
}

Request: del_sim_profile

This request deletes a SIM profile. You can delete a profile even if you used it earlier to populate SIMs.
This request has multiple formats in which it can be sent:
{
    "request": "del_sim_profile",
    "node": "hss",
    "params": {
        "sim_profile_id": "The id of the sim profile to be deleted."
    }
}
{ "request": "del_sim_profile", "node": "hss", "params": { "name": "The name of the sim profile to be deleted." } }
Examples: del_sim_profile
Delete sim profile by name.
{
    "request": "del_sim_profile",
    "node": "hss",
    "params": {
        "name": "ISIM"
    }
}
Delete sim profile by id.
{
    "request": "del_sim_profile",
    "node": "hss",
    "params": {
        "sim_profile_id": "89"
    }
}

Request: set_sim_range

This request populates information for one or more SIM cards in the database. Common details about the cards are taken from the referenced SIM profile.
{
    "sim_profile": "",
    "use_opc": "Boolean. Optional. Only for milenage.",
    "ims_use_opc": "Boolean. Optional. Only for milenage.",
    "wlan_use_opc": "Boolean. Optional. Only for milenage.",
    "cs_active": "Boolean. Optional.",
    "ps_active": "Boolean. Optional.",
    "ims_active": "Boolean. Optional. Supported only for milenage algorithm. If IMS is active in profile IMS identities will be validated: private_ident set (at least public_ident must be set), private_ident not set (an error will be generated if any of public_ident or public_ident_alt is set), multi_imsis (imsi is mandatory to be filled and must be unique. msisdn is optional, it must be unique if set)",
    "wlan_active": "Boolean. Optional.",
    "sims": [
        {
            "imsi": "String. Mandatory. International mobile subscriber identity as on SIM card.",
            "imsi_aux": "String. Alternate IMSI.",
            "iccid": "String. The Integrated Circuit Card Identifier identifies each SIM internationally.",
            "ki": "String. Mandatory.",
            "op": "String.",
            "ims_ki": "String.",
            "ims_op": "String.",
            "private_ident": "String.",
            "public_ident": "String.",
            "public_ident_alt": "String.",
            "wlan_ki": "String.",
            "wlan_op": "String.",
            "pin": "String.",
            "puk": "String.",
            "pin2": "String.",
            "puk2": "String.",
            "adm1": "String.",
            "ota": "String.",
            "comment__multi_imsis": "List of extra IMSIs attached to the SIM",
            "multi_imsis": [
                {
                    "imsi": "String.",
                    "msisdn": "String.",
                    "info": "String."
                }
            ]
        }
    ]
}
Examples: set_sim_range
Set two sims.
{
    "request": "set_sim_range",
    "params": {
        "sim_profile": "ISIM",
        "sims": [
            {
                "imsi": "199280123456789",
                "ki": "19922233445566778899aabbccddeeff",
                "iccid": "1992200150123456789",
                "multi_imsis": [
                    {
                        "imsi": "199210123456789",
                        "msisdn": "199201000"
                    },
                    {
                        "imsi": "199210123456780"
                    }
                ]
            },
            {
                "imsi": "199280123456788",
                "ki": "19922233445566778899aabbccddeeff",
                "iccid": "1992200150123456788"
            }
        ]
    }
}

Request: set_sim

This request edits information for one SIM card in the database. It also supports 2 IMSI’s.
{
    "sim_id": "String. You need to specify sim_id or imsi in request",
    "extra_id": "String. Optional extra alphanumeric ID for external applications correlation",
    "imsi": "String. International mobile subscriber identity as on SIM card",
    "imsi_aux": "String. Alternate IMSI",
    "iccid": "String. The Integrated Circuit Card Identifier identifies each SIM internationally.",
    "ki": "String.",
    "op": "String.",
    "ims_ki": "String.",
    "ims_op": "String.",
    "private_ident": "String.",
    "public_ident": "String.",
    "public_ident_alt": "String.",
    "wlan_ki": "String.",
    "wlan_op": "String.",
    "pin": "String.",
    "puk": "String.",
    "pin2": "String.",
    "puk2": "String.",
    "adm1": "String.",
    "amf": "String.",
    "amf_lte": "String.",
    "ota_profile": {
        "cla": "Class used for RAM commands (LOAD / INSTALL / Delete Applets) ex: 80. Value: hexadecimal - 1 octet (2 characters). ",
        "spi": "Security Parameters Indication - 11.1.4.1 in GlobalPlatform Card Specification version 2.3. Value: hexadecimal - 2 octets (4 characters). ",
        "kid": "Algorithm used for Integrity Data (RC/CC/DS), ex: 15. Value: hexadecimal - 1 octet (2 characters). ",
        "kic": "Algorithm Identifier for ciphering, ex: 15. Value: hexadecimal - 1 octet (2 characters). ",
        "tar_ram": "Toolkit Application Reference used to manage applets, ex: 000000. Value: hexadecimal - 3 octet (6 characters). ",
        "tar_rfm_sim": "Toolkit Application Reference to update EFs under MF(3F00), DF Telecom(7F10) and DF GSM(7F20), ex: B00010. Value: hexadecimal - 3 octet (6 characters). ",
        "tar_rfm_usim": "Toolkit Application Reference to update EFs under USIM Application, ex: B00001. Value: hexadecimal - 3 octet (6 characters). "
    },
    "ota": {
        "kic": "hexadecimal - 8 octets (16 characters). Key used for ciphering the message.",
        "kid": "hexadecimal - 8 octets (16 characters). Key used to verify integrity data (RC/CC/DS).",
        "kik": "hexadecimal - 8 octets (16 characters). Key Identifier for protecting KIc and KID.",
        "counter": "hexadecimal - 5 octets (10 characters). The counter is incremented when PoR is successful (PoR=00). This should not be modified from the interface because in the meantime OTA server could modify it so there is a risk of overwriting it by mistake with the wrong value. It was left editable to fix possible issues."
    },
    "cs_active": "Boolean.",
    "ps_active": "Boolean.",
    "lte_active": "Boolean.",
    "wlan_active": "Boolean.",
    "ims_active": "Boolean.",
    "use_opc": "Boolean.",
    "ims_use_opc": "Boolean.",
    "wlan_use_opc": "Boolean.",
    "comment__multi_imsis": "List of extra IMSIs attached to the SIM",
    "multi_imsis": [
        {
            "imsi": "String.",
            "msisdn": "String.",
            "info": "String."
        }
    ]
}
Examples: set_sim
Edit SIM with 2 IMSIs - modality 1
{
    "request": "set_sim",
    "params": {
        "sim_id": 1222,
        "imsi": "1992002119922",
        "ki": "00112233445566778899aabbccddeeff",
        "op": "00000000000000000000000000000000",
        "use_opc": false,
        "amf": "0000",
        "amf_lte": "9001",
        "cs_active": true,
        "ps_active": true,
        "lte_active": true,
        "wlan_active": true,
        "ims_active": true,
        "multi_imsis": [
            {
                "imsi": "1992002119923"
            }
        ]
    }
}
Edit SIM with 2 IMSIs - modality 2
{
    "request": "set_sim",
    "params": {
        "sim_id": 1222,
        "imsi": "1992002119922",
        "imsi_aux": "1992002119920",
        "ki": "00112233445566778899aabbccddeeff",
        "op": "00000000000000000000000000000000",
        "use_opc": false,
        "amf": "0000",
        "amf_lte": "9001",
        "cs_active": true,
        "ps_active": true,
        "lte_active": true,
        "wlan_active": true,
        "ims_active": true
    }
}

Request: get_sims

This request retrieves a sim, lists or counts the available sims.
This request has multiple formats in which it can be sent:
{
    "request": "get_sims"
}
{ "request": "get_sims", "node": "hss", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "ota_object": "Boolean. Whether to return ota field as object or as string." } }
{ "request": "get_sims", "node": "hss", "params": { "profile": "The profile name", "in_use": "Optional. To return only SIMs that match both criteria.", "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "ota_object": "Boolean. Whether to return ota field as object or as string." } }
{ "request": "get_sims", "node": "hss", "params": { "imsi": "String. International mobile subscriber identity as on SIM card. To return multiple SIMs use an array parameter like: 'imsi':['001010000000001','001011010001001']", "ota_object": "Boolean. Whether to return ota field as object or as string." } }
{ "request": "get_sims", "node": "hss", "params": { "iccid": "String. The Integrated Circuit Card Identifier identifies each SIM internationally. To return multiple SIMs use an array parameter like: 'iccid':['1992230000001992178','1992230000001992175']", "ota_object": "Boolean. Whether to return ota field as object or as string." } }
{ "request": "get_sims", "node": "hss", "params": { "sim_id": "The sim id. To return multiple SIMs use an array parameter like: 'sim_id':[112,113]", "ota_object": "Boolean. Whether to return ota field as object or as string." } }
{ "request": "get_sims", "node": "hss", "params": { "extra_id": "String. Alphanumeric ID for external applications correlation.", "ota_object": "Boolean. Whether to return ota field as object or as string." } }
Examples: get_sims
Retrieve the sims count
{
    "request": "get_sims"
}
Get sim by ID. Also, ota field returned as object.
{
    "request": "get_sims",
    "node": "hss",
    "params": {
        "sim_id": "1216",
        "ota_object": true
    }
}

Request: del_sim

This request deletes a SIM. You cannot delete a SIM that is still allocated to a subscriber.
This request has multiple formats in which it can be sent:
{
    "request": "del_sim",
    "node": "hss",
    "params": {
        "sim_id": "The sim id."
    }
}
{ "request": "del_sim", "node": "hss", "params": { "imsi": "The sim's imsi." } }
Examples: del_sim
Delete sim by id.
{
    "request": "del_sim",
    "node": "hss",
    "params": {
        "sim_id": "1223"
    }
}
Delete sim by imsi
{
    "request": "del_sim",
    "node": "hss",
    "params": {
        "imsi": "1992002119922"
    }
}

Request: set_subscriber

This request is used to configure a subscriber. The presence/absence of specific fields determines the type of subscriber and the allowed services: sim (you identify the associated SIM by setting ‘imsi’ or ‘iccid’. The other parameters present will modify the associated SIM.), sip (in case your subscriber uses only SIP, instead of a SIM). When subscriber has a SIM card associated you can enable the following services by associating profiles and other additional parameters for: ims (calls over VoLTE), cs (Circuit switching - calls/SMS over GSM), ps (Pachet switching - data over GPRS/EDGE), eps (Evolved pachet system - data over LTE). Additionally when creating a subscriber you can define: ss (Suplementary services), odb (Operator determined barring) - Take care when defining SS and ODB parameters, because they are case sensitive. Additionally, setting one of the supplementary services to null, means that service is not provisioned and user is not allowed to set it from him phone.
{
    "subscriber_id": "Required when editing subscriber, don't set when adding subscriber",
    "extra_id": "Optional extra alphanumeric ID for external applications correlation",
    "description": "Arbitrary information about subscriber that is not used, just stored",
    "fixed_ipv4": "Static End User IPv4 address to request from SGSN/MME.",
    "fixed_ipv6": "Static End User IPv6 address to request from SGSN/MME.",
    "ue_usage_type": "UE usage type used for Dedicated Core Network selection. Value: 0..255.",
    "external_ident": "UE external identifier. Example: user@domain.",
    "msisdn": "String. Phone number associated to this subscibe.",
    "sim": {
        "iccid": "String. The Integrated Circuit Card Identifier identifies each SIM internationally.",
        "imsi": "International mobile subscriber identity as on SIM card",
        "other sim params": "..."
    },
    "comment__ims": "If IMS is activated in request or already activated IMS identities will be validated (identity set means set in request or already set in database): private_ident set: at least public_ident must be set, private_ident not set: an error will be generated if any of public_ident or public_ident_alt is set. YateHSS/HLR supports a single pair of identities by setting the parameter $dual_subscriber = false in config.php. By default both pair of identities are supported.",
    "ims": {
        "profile": "IMS profile name.",
        "fullname": "",
        "active": "Boolean.",
        "private_ident": "Private identity.",
        "public_ident": "Public identitiy.",
        "public_ident_alt": "Alternative public identity."
    },
    "eps": {
        "profile": "EPS profile name."
    },
    "ps": {
        "profile": "PS profile name."
    },
    "cs": {
        "profile": "CS profile name."
    },
    "comment__ss": "Setting one of the ss to null, marks it as not provisioned, so user is not able to set it from his phone",
    "ss": {
        "password": "Password to insert to be allowed to modify Supplementaty services.Four digits long or empty.",
        "cfu": "String/null. Phone number in international format to which to perform unconditional call forwarding.",
        "cfb": "String/null. Phone number in international format to which to perform call forwarding on busy.",
        "cfnrc": "String/null. Phone number in international format to which to perform call forwarding when not reachable.",
        "cfnry": "String/null. Phone number in international format to which to perform call forwarding when no reply.",
        "cfnry_time": "Number. Can be 5/10/15/20/25/30. Time in seconds before CFNRy is performed.",
        "clir": "Boolean/null. Calling line identification restriction.",
        "clip": "Boolean/null. Calling line identification presentation.",
        "baoc": "Boolean/null. Barring of all outgoing calls.",
        "boic": "Boolean/null. Barring of all international outgoing calls.",
        "boicExHC": "Boolean/null. Barring of all international outgoing calls except those directed to the Home PLMN country.",
        "baic": "Boolean/null. Barring of all incoming cals.",
        "bicRoam": "Boolean/null. Barring of all incoming calls when roaming outside the HPLMN country.",
        "cw": "Boolean/null. Call waiting.",
        "hold": "Boolean/null. Call hold.",
        "multiPTY": "Boolean/null. Support for Multi Party call."
    },
    "odb": {
        "roam": "Boolean. Don't allow subscriber to roam in other networks.",
        "baoc": "Boolean. Barring of all outgoing calls.",
        "boic": "Boolean. Barring of all international outgoing calls.",
        "boicExHC": "Boolean. Barring of all international outgoing calls except those directed to the Home PLMN country.",
        "baic": "Boolean. Barring of all incoming cals.",
        "bicRoam": "Boolean. Barring of all incoming calls when roaming outside the HPLMN country.",
        "ps": "Boolean. Barring access to PS services.",
        "psRoam": "Boolean. Barring access to PS services when roaming in other networks.",
        "hplmnAP": "Boolean",
        "vplmnAP": "Boolean"
    },
    "sip": {
        "fullname": "Btring",
        "active": "Boolean",
        "username": "String",
        "realm": "String",
        "ha1": "String"
    }
}
Examples: set_subscriber
Create SIM subscriber.
{
    "request": "set_subscriber",
    "params": {
        "msisdn": "407483550521",
        "sim": {
            "iccid": "894070123456789"
        },
        "ims": {
            "profile": "default_ims",
            "fullname": "Diana Cionoiu",
            "active": true,
            "private_ident": "407483550521@ims.mnc001.mcc001.3gppnetwork.org",
            "public_ident": "sip:+407483550521@example.com;user=phone",
            "public_ident_alt": "tel:+407483550521"
        },
        "eps": {
            "profile": "default_eps"
        },
        "ps": {
            "profile": "default_ps"
        },
        "cs": {
            "profile": "default_cs"
        },
        "odb": {
            "roam": true,
            "baoc": true
        }
    }
}
Create SIP subscriber
{
    "request": "set_subscriber",
    "params": {
        "msisdn": "407483550522",
        "sip": {
            "fullname": "Diana Cionoiu",
            "active": true,
            "username": "407483550522",
            "realm": "SIP service",
            "ha1": "ad38ebf120253979403a4d2dcbc0105b"
        }
    }
}

Request: get_subscriber

This request retrieves a subscriber, lists or counts the available subscribers.
This request has multiple formats in which it can be sent:
{
    "request": "get_subscriber"
}
{ "request": "get_subscriber", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "brief": "Optional. Retrive just subscriber_d, msisdn and multi_imsis informations." } }
{ "request": "get_subscriber", "params": { "subscriber_id": "String. At most one subscriber is returned (exact match) if the parameter is scalar. To return multiple subscribers use an array parameter like: 'imsi':['001010000000001','001011010001001']." } }
{ "request": "get_subscriber", "params": { "extra_id": "String. At most one subscriber is returned (exact match) if the parameter is scalar. To return multiple subscribers use an array parameter like: 'imsi':['001010000000001','001011010001001']." } }
{ "request": "get_subscriber", "params": { "msisdn": "String. At most one subscriber is returned (exact match) if the parameter is scalar. To return multiple subscribers use an array parameter like: 'imsi':['001010000000001','001011010001001']." } }
{ "request": "get_subscriber", "params": { "cs_profile": "String." } }
{ "request": "get_subscriber", "params": { "ps_profile": "String." } }
{ "request": "get_subscriber", "params": { "imsi": "String. At most one subscriber is returned (exact match) if the parameter is scalar. To return multiple subscribers use an array parameter like: 'imsi':['001010000000001','001011010001001']." } }
{ "request": "get_subscriber", "params": { "username": "String." } }
Examples: get_subscriber
Retrive subscribers count.
{
    "request": "get_subscriber"
}
Retrive first three subscribers starting with subscriber having subscriber_id=825.
{
    "request": "get_subscriber",
    "node": "hss",
    "params": {
        "limit": 3,
        "offset": "0",
        "brief": true
    }
}
Retrive subscirber with subscriber_id=1222
{
    "request": "get_sims",
    "node": "hss",
    "params": {
        "sim_id": "1222"
    }
}

Request: del_subscriber

This request deletes a subscriber. It will also delete any registrations and subscriber data.
This request has multiple formats in which it can be sent:
{
    "request": "del_subscriber",
    "params": {
        "msisdn": "The subscriber MSISDN."
    }
}
{ "request": "del_subscriber", "params": { "subscriber_id": "The subscriber ID." } }
{ "request": "del_subscriber", "params": { "extra_id": "The subscriber external extra ID." } }
{ "request": "del_subscriber", "params": { "sim": { "sim_id": "The subscriber SIM id." } } }
{ "request": "del_subscriber", "params": { "sim": { "imsi": "The subscriber IMSI." } } }
{ "request": "del_subscriber", "params": { "sim": { "iccid": "The subscriber ICCID." } } }
Examples: del_subscriber
Delete by msisdn.
{
    "request": "del_subscriber",
    "params": {
        "msisdn": "40729742415"
    }
}
Delete by subscriber_id.
{
    "request": "del_subscriber",
    "params": {
        "subscriber_id": 1021
    }
}
Delete by extra_id.
{
    "request": "del_subscriber",
    "params": {
        "extra_id": 323
    }
}
Delete by extra_id.
{
    "request": "del_subscriber",
    "params": {
        "sim": {
            "sim_id": "1219"
        }
    }
}
Delete by extra_id.
{
    "request": "del_subscriber",
    "params": {
        "sim": {
            "imsi": "1100002119922"
        }
    }
}
Delete by extra_id.
{
    "request": "del_subscriber",
    "params": {
        "sim": {
            "iccid": "8934230000001992178"
        }
    }
}

Request: set_ims_profile

This request is used to add/edit an IMS profile.
{
    "ims_profile_id": "required when editing profile, don't set when adding profile",
    "name": "Name of the IMS Profile",
    "domain": "",
    "s_cscf": "Address of the S-CSCF.",
    "s_cscf_alt": "Address of the additional S-CSCF",
    "comment__ifc": "Initial filter criteria used for defining provisioned subscription of a user to an application (equivalent of CAMEL subscriptions). The array of spt define the logical conditions for applying the service.",
    "ifc": [
        {
            "priority": "Integer. Values between 0-9999.",
            "profile_part": "Boolean/null",
            "cond_cnf": "Boolean. Whether to do AND/OR between the groups.",
            "app_server": "Application Server.",
            "def_handling": "Boolean.",
            "critical": "Boolean.",
            "spt": [
                {
                    "group": "Integer (0-2^31-1)",
                    "negated": "Boolean.",
                    "type": "",
                    "match": "(optional)",
                    "value": "(regexp)"
                }
            ]
        }
    ],
    "csi": {
        "comment__csi_tye": "Various types of CAMEL subscriptions: o, d, vt. For each type of CSI, you define the TDP (Trigger Detection Points).",
        "csi_type": {
            "active": "Boolean.",
            "notify_cse": "Boolean.",
            "critical": "The combination of critical fields in the CSI or in the TDP defines what happens when none of the TDP can be applied: subscriber is not allowed to roam in a specific network/ operator determined barring applies/ nothing happens.Possible values: noroam/odb/null",
            "tdp": [
                {
                    "version_min": "The minimum CAMEL version when the TDP can be applied.",
                    "version_max": "The maximum CAMEL version when the TDP can be applied.",
                    "dp": "Name Detection Point. Numeric or string.",
                    "sk": "Service key. Values allowed (0, 2147483647).",
                    "scf": "Global title of the Service Control Function. Number in international.",
                    "critical": "Boolean."
                }
            ]
        }
    }
}
Examples: set_ims_profile
Create IMS profile.
{
    "request": "set_ims_profile",
    "node": "hss",
    "params": {
        "name": "IMS Profile",
        "domain": "example.com",
        "s_cscf": "a",
        "s_cscf_alt": "a",
        "ifc": [
            {
                "priority": "0",
                "spt": [
                    {
                        "group": "0",
                        "negated": true,
                        "type": "RequestURI",
                        "value": "INVITE",
                        "match": "a"
                    }
                ],
                "profile_part": true,
                "cond_cnf": true,
                "app_server": "sip:as.example.com",
                "critical": true
            }
        ],
        "csi": {
            "o": {
                "tdp": [
                    {
                        "version_min": "4",
                        "version_max": "4",
                        "dp": "collectedInfo",
                        "sk": "1",
                        "scf": "123",
                        "critical": true
                    }
                ],
                "active": true,
                "notify_cse": true,
                "critical": "noroam"
            }
        }
    }
}

Request: get_ims_profile

This request retrieves an IMS profile, lists or counts the available IMS profiles.
This request has multiple formats in which it can be sent:
{
    "request": "get_ims_profile"
}
{ "request": "get_ims_profile", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "brief": "Boolean. Retrieve just the names and ids of the profiles" } }
{ "request": "get_ims_profile", "params": { "ims_profile_id": "IMS profile id" } }
{ "request": "get_ims_profile", "params": { "name": "IMS profile name" } }
Examples: get_ims_profile
Retrive IMS profiles count
{
    "request": "get_ims_profile"
}
Retrive id and name for first five IMS profiles
{
    "request": "get_ims_profile",
    "params": {
        "limit": "3",
        "offset": "0",
        "brief": true
    }
}
Retrieve specific ims profile by name
{
    "request": "get_ims_profile",
    "params": {
        "name": "ims_profile1"
    }
}

Request: del_ims_profile

This request deletes an IMS profile. You cannot delete a profile still in use by subscribers.
This request has multiple formats in which it can be sent:
{
    "request": "del_ims_profile",
    "params": {
        "ims_profile_id": "ID of deleted IMS profile."
    }
}
{ "request": "del_ims_profile", "params": { "name": "Name of deleted IMS profile." } }
Examples: del_ims_profile
Delete by IMS profile id.
{
    "request": "del_ims_profile",
    "node": "hss",
    "params": {
        "ims_profile_id": "36"
    }
}
Delete by IMS profile name.
{
    "request": "del_ims_profile",
    "params": {
        "name": "IMS_profile"
    }
}

Request: set_cs_profile

This request is used to add/edit a circuit switching profile.
This request has multiple formats in which it can be sent:
{
    "cs_profile_id": "Required when editing profile, don't set when adding profile",
    "name": "Name of the CS Profile",
    "category": "String.",
    "bearers": "Array of supported bearers. If Custom is chosen then insert them separated by comma(,). Example: general-dataCDA, general-dataCDS. ",
    "teleservices": "Array of associated services. If Custom is chosen then insert them separated by comma(,). Example: shortMessageMT-PP, shortMessageMO-PP",
    "gmlc_list": "Array of GT the Gateway Mobile Location Centers that are allowed to request location of a subscriber. Insert them separated by comma(,).",
    "charging": "Type of charging.",
    "ar": {
        "priority": "String"
    },
    "naea_pref_cic": "",
    "ist_timer": "",
    "ussd": [
        {
            "prefix": "",
            "gw": ""
        }
    ],
    "csi": {
        "tif": "true/false. Translation Information Flag: indicates support for short numbers in call forwarding.",
        "comment__csi_type": "Various types of CAMEL subscriptions: o, t, vt, ss, mt_sms, mo_sms, d, m. For each type of CSI, you define the TDP (Trigger Detection Points).",
        "csi_type": {
            "active": "true/false",
            "notify_cse": "true/false",
            "critical": "noroam/odb/null. The combination of critical fields in the CSI or in the TDP defines what happens when none of the TDP can be applied: subscriber is not allowed to roam in a specific network/ operator determined barring applies/ nothing happens.",
            "tdp": [
                {
                    "version_min": "The minimum CAMEL version when the TDP can be applied.",
                    "version_max": "The maximum CAMEL version when the TDP can be applied.",
                    "dp": "Name Detection Point. Numeric or string.",
                    "sk": "Service key. Values allowed (0, 2147483647).",
                    "scf": "Global title of the Service Control Function. Number in international.",
                    "critical": "true / false"
                }
            ]
        }
    },
    "odb": {
        "roam": "Boolean. Don't allow subscriber to roam in other networks.",
        "baoc": "Boolean. Barring of all outgoing calls.",
        "boic": "Boolean. Barring of all international outgoing calls.",
        "boicExHC": "Boolean. Barring of all international outgoing calls except those directed to the Home PLMN country.",
        "baic": "Boolean. Barring of all incoming cals.",
        "bicRoam": "Boolean. Barring of all incoming calls when roaming outside the HPLMN country."
    }
}
[]
Examples: set_cs_profile
Create CS profile
{
    "request": "set_cs_profile",
    "node": "hss",
    "params": {
        "name": "CS Profile",
        "category": "ordinary",
        "bearers": [
            "general-dataCDA",
            "general-dataCDS"
        ],
        "teleservices": [
            "telephony",
            "shortMessageMT-PP",
            "shortMessageMO-PP"
        ],
        "gmlc_list": [
            "40700000999",
            "40700000666"
        ],
        "charging": "2048",
        "odb": {
            "roam": false,
            "baoc": false,
            "boic": false,
            "boicExHC": false,
            "baic": false,
            "bicRoam": false
        },
        "ussd": [
            {
                "prefix": "100",
                "gw": "8820018"
            }
        ],
        "csi": {
            "tif": true,
            "o": {
                "tdp": [
                    {
                        "version_min": "1",
                        "version_max": "1",
                        "dp": "collectedInfo",
                        "sk": "1",
                        "scf": "8820000"
                    }
                ],
                "active": true,
                "notify_cse": true
            }
        }
    }
}

Request: get_cs_profile

This request retrieves an CS profile, lists or counts the available IMS profiles.
This request has multiple formats in which it can be sent:
{
    "request": "get_cs_profile"
}
{ "request": "get_cs_profile", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "brief": "Retrieve just the names and ids of the profiles." } }
{ "request": "get_cs_profile", "params": { "name": "The CS profile Name." } }
{ "request": "get_cs_profile", "params": { "cs_profile_id": "The CS profile ID." } }
Examples: get_cs_profile
Receive CS profiles count.
{
    "request": "get_cs_profile"
}
Receive first two CS profiles.
{
    "request": "get_cs_profile",
    "params": {
        "limit": "2",
        "offset": 0
    }
}
Receive name and id for first two CS profiles.
{
    "request": "get_cs_profile",
    "params": {
        "limit": "2",
        "offset": 0,
        "brief": true
    }
}
Receive all information about CS profile with id=19
{
    "request": "get_cs_profile",
    "params": {
        "cs_profile_id": "19"
    }
}

Request: del_cs_profile

This request deletes a CS profile. You cannot delete a profile still in use by subscribers.
This request has multiple formats in which it can be sent:
{
    "request": "del_cs_profile",
    "params": {
        "cs_profile_id": "CS profile ID."
    }
}
{ "request": "del_cs_profile", "params": { "name": "CS profile name." } }
Examples: del_cs_profile
Delete CS profile by ID.
{
    "request": "del_cs_profile",
    "params": {
        "cs_profile_id": "19"
    }
}
Delete CS profile by name.
{
    "request": "del_cs_profile",
    "params": {
        "name": "Test19 CS Profile"
    }
}

Request: set_ps_profile

Request is used to add/edit a packet switching profile.
{
    "ps_profile_id": "Required when editing profile, don't set when adding profile",
    "name": "Uniquely identifies the profile",
    "category": "Usually 'ordinary'",
    "bearers": "Array. List of supported bearers",
    "teleservices": "Array. List of associated services",
    "apn_oi_rpl": "APN-OI Replacement",
    "charging": "Type of charging.",
    "comment__ap": "List of allowed access points",
    "ap": [
        {
            "apn": "Name of the apn.",
            "type": "ipv4/ipv6/ipv4v6",
            "nonip_delivery": "Non IP data delivery mechanism. Ex: sgi / scef.",
            "qos": "Quality of Service.",
            "scef_host": "",
            "qos_ext": "Quality of Service Extension. The length of QoS Extension must be up to 18 in hex format. It must contain full octets. If Qos Extension2 is set then this field must contain 9 octets.",
            "qos_ext2": "The length of QoS Extension2 must be to to 6 in hex format. It must contain 1 or 3 octets, if set. If Qos Extension3 is set then this field must contain 3 octets.",
            "qos_ext3": "The length of QoS Extension3 must be 4 in hex format, if set.",
            "qos_ext4": "The length of QoS Extension4 must be 2 in hex format, if set.",
            "is_fixed": "Boolean. Enable static IPv4 and/or IPv6 IP address allocation for this APN.",
            "charging": "",
            "rest_priority": "",
            "apn_oi_rpl": "APN-OI Replacement",
            "vpaa": "true/false/null. VPAA (VPLMN Address Allowed) flag.",
            "ambr": {
                "max_ul": "The maximum aggregate bit rate for uplink",
                "max_dl": "The maximum aggregate bit rate for downlink"
            },
            "sipto": "Selective IP Traffic Offload",
            "sipto_local": "Local Selective IP Traffic Offload",
            "lipa": "Local IP Access"
        }
    ],
    "comment__csi": "CAMEL subscription for gprs, mg",
    "csi": {
        "gprs": {
            "active": "Boolean.",
            "notify_cse": "Boolean.",
            "critical": "noroam/odb/null. The combination of critical fields in the CSI or in the TDP defines what happens when none of the TDP can be applied: subscriber is not allowed to roam in a specific network/ operator determined barring applies/ nothing happens.",
            "tdp": [
                {
                    "version_min": "The minimum CAMEL version when the TDP can be applied.",
                    "version_max": "The maximum CAMEL version when the TDP can be applied.",
                    "dp": "Name Detection Point. Numeric.",
                    "sk": "Service key. Values allowed (0, 2147483647).",
                    "scf": "Global title of the Service Control Function. Number in international format.",
                    "critical": "Boolean."
                }
            ]
        },
        "mg": {
            "active": true,
            "notify_cse": true,
            "critical": "noroam/odb/null. The combination of critical fields in the CSI or in the TDP defines what happens when none of the TDP can be applied: subscriber is not allowed to roam in a specific network/ operator determined barring applies/ nothing happens.",
            "tdp": [
                {
                    "version_min": "The minimum CAMEL version when the TDP can be applied.",
                    "version_max": "The maximum CAMEL version when the TDP can be applied.",
                    "dp": "Name Detection Point. Numeric.",
                    "sk": "Service key. Values allowed (0, 2147483647).",
                    "scf": "Global title of the Service Control Function. Number in international format.",
                    "critical": "true/false"
                }
            ]
        }
    },
    "user_plane_integrity": "Boolean. SGSN may decide to activate integrity protection of the user plane when GERAN is used.",
    "dl_buffer_count": "Extended buffering of downlink packets. Negative: requested with no suggestion, 0: Not requested, positive: packets to buffer ",
    "rau_tau_timer": "Positive value of periodic RAU/TAU timer in seconds.",
    "edrx_cycle_length": [
        {
            "rat_type": "Radio Access Technology type: e-utran, nb-iot, utran, geran.",
            "value": "The values (in seconds) will be displayed after RAT Type is selected. Value: 0..15. Bits 1-4 of octet 3 in L3 'Ext DRX parameter'."
        }
    ],
    "comment__access_restrict": "Access restriction per PLMN.'plmn' or 'flags' may be empty but not both of them.",
    "access_restrict": [
        {
            "plmn": "String. Comma separated list of PLMN ID e.g. '00101,00102' - one of the two should be present and set. Value must be 3-6 digits long. Values less than 5 digits are used for prefix match.",
            "flags": "String. Comma separated list of restrictions: e-utranNotAllowed, nb-iotNotAllowed, utranNotAllowed, geranNotAllowed, ganNotAllowed, i-hspa-evolutionNotAllowed, ho-toNon3GPP-AccessNotAllowed, enhancedCoverageNotAllowed, nrAsSecondaryRATNotAllowed, unlicensedSpectrumAsSecondaryRATNotAllowed, nrIn5gNotAllowed."
        }
    ],
    "odb": {
        "ps": "Boolean. Barring access to PS services.",
        "psRoam": "Boolean. Barring access to PS services when roaming in other networks.",
        "hplmnAP": "Boolean.",
        "vplmnAP": "Boolean."
    }
}
Examples: set_ps_profile
Create PS profile.
{
    "request": "set_ps_profile",
    "node": "hss",
    "params": {
        "name": "PS Profile",
        "category": "ordinary",
        "bearers": [
            "general-dataCDA"
        ],
        "teleservices": [
            "shortMessageMT-PP",
            "shortMessageMO-PP"
        ],
        "charging": "2048",
        "odb": {
            "ps": true,
            "psRoam": true,
            "hplmnAP": true,
            "vplmnAP": true
        },
        "ap": [
            {
                "apn": "internet",
                "type": "ipv4v6",
                "qos": "24521f",
                "is_fixed": true,
                "charging": "2048",
                "rest_priority": "1",
                "vpaa": true,
                "ambr": {
                    "max_ul": "5000000",
                    "max_dl": "50000000"
                },
                "sipto": false,
                "sipto_local": false,
                "nonip_delivery": "scef",
                "scef_host": "scef_host"
            },
            {
                "apn": "mms",
                "type": "ipv4",
                "qos": "24521f",
                "charging": "2048",
                "vpaa": false,
                "ambr": {
                    "max_ul": "10",
                    "max_dl": "10"
                },
                "sipto": false,
                "sipto_local": false,
                "lipa": "lipaConditional"
            },
            {
                "apn": "ims",
                "type": "ipv4v6",
                "qos": "24521f",
                "vpaa": false,
                "sipto": false,
                "sipto_local": false,
                "lipa": "lipaProhibited",
                "nonip_delivery": "scef"
            }
        ],
        "csi": {
            "gprs": {
                "active": true,
                "notify_cse": true,
                "critical": "odb",
                "tdp": [
                    {
                        "version_min": "4",
                        "version_max": "4",
                        "dp": "pdp-ContextEstablishmentAcknowledgement",
                        "sk": "3",
                        "scf": "40700000150",
                        "critical": true
                    }
                ]
            },
            "mg": {
                "active": true,
                "notify_cse": false,
                "tdp": [
                    {
                        "version_min": "4",
                        "version_max": "4",
                        "dp": "GPRS-Attach",
                        "sk": "2",
                        "scf": "40700000150",
                        "critical": false
                    }
                ]
            }
        },
        "user_plane_integrity": true,
        "dl_buffer_count": "1",
        "rau_tau_timer": "12",
        "edrx_cycle_length": [
            {
                "rat_type": "nb-iot",
                "value": "9"
            },
            {
                "rat_type": "geran",
                "value": "3"
            },
            {
                "rat_type": "utran",
                "value": "3"
            },
            {
                "rat_type": "e-utran",
                "value": "7"
            }
        ],
        "access_restrict": [
            {
                "plmn": "00102",
                "flags": "e-utranNotAllowed"
            },
            {
                "plmn": "00101",
                "flags": "utranNotAllowed"
            }
        ]
    }
}

Request: get_ps_profile

This request retrieves an PS profile, lists or counts the available IMS profiles.
This request has multiple formats in which it can be sent:
{
    "request": "get_ps_profile"
}
{ "request": "get_ps_profile", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "brief": "Retrieve just the names and ids of the profiles." } }
{ "request": "get_ps_profile", "params": { "name": "The PS profile Name." } }
{ "request": "get_ps_profile", "params": { "ps_profile_id": "The PS profile ID." } }
Examples: get_ps_profile
Get PS profiles count.
{
    "request": "get_ps_profile"
}
Get first two PS Profiles.
{
    "request": "get_ps_profile",
    "node": "hss",
    "params": {
        "limit": 2,
        "offset": "0"
    }
}
Get brief information about first 2 profiles
{
    "code": 0,
    "ps_profile": [
        {
            "ps_profile_id": 1,
            "name": "PS Profile 1"
        },
        {
            "ps_profile_id": 2,
            "name": "PS profile 2"
        }
    ]
}

Request: del_ps_profile

This request deletes a PS profile. You cannot delete a profile still in use by subscribers.
This request has multiple formats in which it can be sent:
{
    "request": "del_ps_profile",
    "params": {
        "name": "The PS profile name."
    }
}
{ "request": "del_ps_profile", "params": { "ps_profile_id": "The PS profile ID." } }
Examples: del_ps_profile
Delete by PS profile ID.
{
    "request": "del_ps_profile",
    "params": {
        "ps_profile_id": "24"
    }
}
Delete by PS profile name.
{
    "request": "del_ps_profile",
    "params": {
        "name": "PS Profile 1"
    }
}

Request: set_eps_profile

This request is used to add/edit an EPS profile (data in LTE).
{
    "eps_profile_id": "Required when editing profile, don't set when adding profile",
    "name": "Name of EPS profile.",
    "comment__ambr": "Aggregated maximum bit rate: maximum uplink, maximum downlink",
    "ambr": {
        "max_ul": "The maximum aggregate bit rate for uplink.",
        "max_dl": "The maximum aggregate bit rate for downlink."
    },
    "charging": "Type of charging. Ex: 2048",
    "srvcc": "Boolean. Whether to allow SRVCC",
    "vsrvcc": "Boolean. Whether to allow VSRVCC",
    "apn_oi_repl": "Text / NULL. APN-OI Replacement",
    "dl_buffer_count": "Number. Extended buffering of downlink packets. Negative: requested with no suggestion, 0: Not requested, positive: packets to buffer ",
    "rau_tau_timer": "Positive value of periodic RAU/TAU timer in seconds.",
    "v2x_permission": "Comma separated list of 'vehicle'/'pedestrian'. Allow V2X over PC5 as Vehicle and/or Pedestrian UE",
    "v2x_pc5_ambr": "UE AMBR used for PC5 interface in bps.",
    "aerial_subscription": "Boolean. Enable / disable aerial subscription.",
    "service_gap_time": "Number. Frequency at which the UE can access the network. Value in seconds.",
    "active_time": "Number. Power Saving Mode. Active time granted to the UE. Value in seconds.",
    "comment__ap": "List of access points",
    "ap": [
        {
            "apn": "Apn name",
            "is_default": "Boolean. Check to set this AP as default. MUST allow a default IP APN and a default non-IP APN.",
            "is_fixed": "Boolean. Enable static IPv4 and/or IPv6 IP address allocation for this APN.",
            "type": "ipv4 / ipv6 / ipv4v6",
            "pdn_conn_cont": "String. Values: maintain/disc-with-reactivation/disc-without-reactivation. PDN connection continuity when UE moves between 'broadband' (E-UTRAN, UTRAN) and 'narrowband' (NB-IOT, GPRS).",
            "qci": "1 - 9 . qci QoS Class Identifier",
            "charging": "(0, 65535). Charging type",
            "apn_oi_repl": "Text / NULL",
            "vpaa": "Boolean/ null. VPLMN Address Allowed flag.",
            "sipto": "Boolean / null. Selective IP Traffic Offload",
            "sipto_local": "Boolean / null. Local Selective IP Traffic Offload",
            "lipa": "Local IP Access. Ex: Prohibited/Only/Conditional",
            "rest_priority": "Number. Restoration Priority.",
            "nonip_delivery": "String. Non-IP data delivery mechanism.",
            "scef_host": "SCEF Diameter host name. Ignored if NonIP delivery is not 'scef'.",
            "scef_realm": "SCEF Diameter realm. Ignored if NonIP delivery is not 'scef'.",
            "sgi_plane": "Comma separated list of 'user-plane', 'control-plane'. Preffered UE data transport when 'sgi' (P-GW) delivery is used by MME. Applicable for IP and non-IP PDN.",
            "rds": "Use RDS (reliable data service) when 'scef' delivery is used by MME.",
            "comment__ar": "Allocation and Retention",
            "ar": {
                "priority": "",
                "preempt_cap": "Boolean.",
                "preempt_vuln": "Boolean."
            },
            "comment_ambr": "Agregated maximum bit rate : maximum uplink, maximum downlink for AP",
            "ambr": {
                "max_ul": "The maximum aggregate bit rate for uplink.",
                "max_dl": "The maximum aggregate bit rate for downlink."
            },
            "comment__pgw": "Defined by the ipv4/ipv6 IP or name (in this case DNS requests will be used)",
            "pgw": {
                "ipv4": "",
                "ipv6": "",
                "name": ""
            }
        }
    ],
    "paging_time_window": [
        {
            "mode": "Radio operation mode: iu, wb-s1, nb-s1 ",
            "value": "The allowed values in seconds will be displayed when Mode is selected. Value: 0..15. Bits 5-8 of octet 3 in L3 'Ext DRX parameter'"
        }
    ],
    "edrx_cycle_length": [
        {
            "rat_type": "Radio Access Technology type: e-utran, nb-iot, utran, geran.",
            "value": "The values will be displayed after RAT Type is selected. Value: 0..15. Bits 1-4 of octet 3 in L3 'Ext DRX parameter'."
        }
    ],
    "comment__odb": "Set PS specific ODBs. If set each ODB will override those set for the subscriber when the profile is set for it",
    "odb": {
        "ps": "Boolean.",
        "psRoam": "Boolean.",
        "hplmnAP": "Boolean.",
        "vplmnAP": "Boolean."
    },
    "access_restrict": [
        {
            "plmn": "00102",
            "flags": "e-utranNotAllowed"
        }
    ]
}
Examples: set_eps_profile
Create eps profile.
{
    "request": "set_eps_profile",
    "node": "hss",
    "params": {
        "name": "EPS profile",
        "charging": "2048",
        "vsrvcc": true,
        "srvcc": true,
        "ambr": {
            "max_ul": "3",
            "max_dl": "4"
        },
        "apn_oi_repl": "2",
        "odb": {
            "ps": true,
            "psRoam": true,
            "hplmnAP": true,
            "vplmnAP": true
        },
        "ap": [
            {
                "apn": "internet",
                "is_default": true,
                "is_fixed": true,
                "type": "ipv4v6",
                "qci": "9",
                "apn_oi_repl": "2",
                "sipto": false,
                "sipto_local": false,
                "lipa": "lipaProhibited",
                "charging": "2048",
                "vpaa": true,
                "ar": {
                    "priority": "2",
                    "preempt_cap": true,
                    "preempt_vuln": true
                },
                "ambr": {
                    "max_ul": "5000000",
                    "max_dl": "50000000"
                },
                "pgw": {
                    "ipv4": "192.168.50.168",
                    "name": "the name of pgw"
                },
                "rest_priority": "1",
                "pdn_conn_cont": "maintain",
                "nonip_delivery": "scef",
                "scef_host": "scef_host",
                "scef_realm": "test.com",
                "sgi_plane": "sth",
                "rds": true
            },
            {
                "apn": "mms",
                "is_default": false,
                "is_fixed": false,
                "type": "ipv4",
                "qci": "9",
                "sipto": false,
                "sipto_local": false,
                "lipa": "lipaConditional",
                "charging": "2048",
                "vpaa": false,
                "ar": {
                    "preempt_cap": false,
                    "preempt_vuln": false
                },
                "ambr": {
                    "max_ul": "10",
                    "max_dl": "10"
                },
                "rds": null
            },
            {
                "apn": "ims",
                "is_default": false,
                "is_fixed": false,
                "type": "ipv4v6",
                "qci": "9",
                "sipto": false,
                "sipto_local": false,
                "lipa": "lipaProhibited",
                "vpaa": false,
                "ar": {
                    "preempt_cap": false,
                    "preempt_vuln": false
                },
                "nonip_delivery": "scef",
                "rds": null
            }
        ],
        "paging_time_window": [
            {
                "mode": "iu",
                "value": "10"
            }
        ],
        "dl_buffer_count": "1",
        "rau_tau_timer": "12",
        "v2x_permission": "vehicle",
        "v2x_pc5_ambr": "23",
        "aerial_subscription": true,
        "service_gap_time": "23",
        "active_time": "2",
        "edrx_cycle_length": [
            {
                "rat_type": "nb-iot",
                "value": "9"
            },
            {
                "rat_type": "geran",
                "value": "3"
            },
            {
                "rat_type": "utran",
                "value": "3"
            },
            {
                "rat_type": "e-utran",
                "value": "7"
            }
        ],
        "access_restrict": [
            {
                "plmn": "00102",
                "flags": "e-utranNotAllowed"
            },
            {
                "plmn": "00101",
                "flags": "utranNotAllowed"
            }
        ]
    }
}

Request: get_eps_profile

This request retrieves an EPS profile, lists or counts the available EPS profiles.
This request has multiple formats in which it can be sent:
{
    "request": "get_eps_profile"
}
{ "request": "get_eps_profile", "params": { "limit": "Optional numeric maximum number of profiles to return.", "offset": "Numeric offset of first profile returned.", "brief": "Optional retrieve just the names and ids of the profiles." } }
{ "request": "get_eps_profile", "node": "hss", "params": { "eps_profile_id": "EPS profile id." } }
{ "request": "get_eps_profile", "node": "hss", "params": { "name": "EPS profile name." } }
Examples: get_eps_profile
Retrive EPS profiles count.
{
    "request": "get_eps_profile"
}
Get the first 2 EPS profiles ids and names.
{
    "request": "get_eps_profile"
}
Get an eps profile by ID
{
    "request": "get_eps_profile",
    "params": {
        "eps_profile_id": "28"
    }
}

Request: del_eps_profile

This request deletes a EPS profile. You cannot delete a profile still in use by subscribers.
This request has multiple formats in which it can be sent:
{
    "request": "del_eps_profile",
    "params": {
        "name": "The EPS profile name."
    }
}
{ "request": "del_eps_profile", "params": { "eps_profile_id": "The EPS profile ID." } }
Examples: del_eps_profile
Delete EPS profile by ID.
{
    "request": "del_eps_profile",
    "params": {
        "eps_profile_id": "24"
    }
}
Delete EPS profile by name.
{
    "request": "del_eps_profile",
    "params": {
        "name": "EPS Profile 1"
    }
}

Request: unregister

This request is used to unregister a subscriber (cancel location).
{
    "request": "unregister",
    "comment__params": "Fields used to identify the registration are handled in the order mentioned bellow. The first found identity field will be used to identify the registration.",
    "params": {
        "subscriber_id": "String. Identify registration by subscriber id",
        "msisdn": "String. Identify registration by MSISDN",
        "sim_id": "Int. Identify registration by SIM ID",
        "imsi": "String. Identify registration by IMSI",
        "iccid": "String. Identify registration by SIM ICCID",
        "reg_type": "Array of registration type to cancel. May contain: 'cs', 'ps', 'ims'",
        "reg_del": "Boolean. Delete registration (subscription withdraw). Setting \u2018reg_del\u2019 to true without also setting \u2018reg_keep\u2019 true will put the subscriber in a state that will always reject registration with roamingNotAllowed / operatorDeterminedBarring.",
        "reg_keep": "Boolean. Keep registration (no state change), send protocol request only. 'reg_del' is ignored if this parameter is true",
        "reason": "String. Deregistration reason override, 'updateProcedure', 'subscriptionWithdraw' or - only for PS - 'initialAttachProcedure'",
        "reattach": "Boolean. Request the mobile to reattach immediately, makes sense only with 'reason': 'subscriptionWithdraw'"
    }
}
Examples: unregister
Cancel CS and PS registration for a subscriber identified by ID.
{
    "request": "unregister",
    "params": {
        "subscriber_id": 1018,
        "reg_type": [
            "cs",
            "ps"
        ]
    }
}
Cancel PS registration for a subscriber identified by IMSI.
{
    "request": "unregister",
    "params": {
        "imsi": "1100002119922",
        "reg_type": [
            "ps"
        ],
        "reg_keep": true,
        "reason": "subscriptionWithdraw",
        "reattach": true
    }
}
This documentation was generated on 30 March 2020.