The Sentinel REM extension provides a RESTful HTTP provisioning API. It also provides configuration APIs for some Sentinel VoLTE application components.
To use the Sentinel VoLTE Provisioning REST Web Interface and Machine API, you will need to configure a Rhino instance using the Rhino Element Manager (REM). |
This page covers
The API also includes the ability to invalidate cache entries in the Sh Cache Microservice, as detailed in the Sh Cache Microservice REST API.
Primer on RESTful HTTP
RESTful HTTP is a pattern for use of the HTTP protocol.
RESTful APIs typically provide the following operations:
-
Create
-
Read
-
Update, and
-
Delete operations
These are referred to as "CRUD".
The CRUD operations are mapped to HTTP Methods, or "HTTP verbs".
CRUD | HTTP Method/Verb | URI | Return code |
---|---|---|---|
Create |
POST |
/subscriberdata |
201 (Created) containing a |
Read |
GET |
/subscriberdata/{impu} |
200 (OK) with the body containing the content. 404 (Not Found) if the IMPU is not found or invalid. |
Update |
PUT |
/subscriberdata/{impu} |
204 (OK) indicating that the document has been replaced. 404 (Not Found) if the IMPU is not found or invalid. |
Delete |
DELETE |
/susbcriberdata/{impu} |
204 (OK) indicating that the document has been removed. 404 (Not Found) if the IMPU is not found or invalid. |
The Create (POST) operation URI differs from the other operations. This is because Create (POST) is creating a resource with the identity of the resource contained in the body of the POST. A success response to create contains a Location
header providing the URI of the resource. Other operations specify the identity as part of the Request URI.
In other words, you can consider create to be saying to the manager of the filer "please create me a box, write the number 10 on the outside of the box, put these books in the box, and tell me where box 10 is filed". The success response says "a box with number 10 was created, it is filed at this location (10), and it contains your books".
Whereas the other operations are not addressing the filer, they are addressing the box itself. This means that the Request URI contains "10" in our example. So Update (PUT) replaces the "books in box number 10" identified by the URI.
Read (GET) returns the "books from box number 10", and Delete (DELETE) deletes box number 10 and it’s contained books.
Another subtly is that both Create (POST) and Update (PUT) contain the identifier in the body, you cannot update "box number 10" with a body that identifies "box number 11".
Accessing the Provisioning REST API
To access the Provisioning REST API:
1 |
Ensure the Sentinel REM extension is installed in REM. |
---|---|
2 |
Start REM. |
3 |
Access the Sentinel Provisioning API at [http://localhost:8080/rem/sentinel/api] (replace localhost with some other hostname if REM is not being run locally). |
Access is restricted to users configured through REM using HTTP BASIC authorization. If you’re using a web browser, it will prompt you to enter a username and password the first time you access any part of the API. |
Specifying content type
By default, the API accepts and returns application/xml, but also supports application/json. To request content in JSON format, simple set the http Accept request header to application/json.
For example:
wget --header='Accept: application/json' --http-user=XXXXX --http-password=XXXXXX http://localhost:8080/rem/sentinel/api/hssdata
returns a JSON object representing the sub-resource listing for HSS data.
{
"name":"HSS Data",
"resources":[
{
"rel":"provisioningfieldmappings",
"href":"http://localhost:8080/rem/sentinel/api/hssdata/provisioningfieldmappings",
"title":"HSS Subscriber Data Provisioning Field Mappings Config"
},{
"rel":"subscriberdata",
"href":"http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata",
"title":"HSS Subscriber Data"
}
]
}
Result codes and error responses
The Provisioning REST API returns the following Result codes and Error responses
Result codes
The API returns these codes
Result code |
Description |
200 OK |
The request to list or retrieve a record was successful |
201 Created |
The record posted was successfully created |
204 No Content |
The update or delete operation was successful |
400 Bad Request |
Incorrectly configured request. Check the response body for specific error information |
401 Unauthorized |
The request was not authorized. Check that the username and password are correct in the request |
404 Not Found |
The requested resource could not be found. Check the response body for specific error information |
406 Not Acceptable |
The requested media type is not supported |
500 Internal Server Error |
An internal error occurred while processing the request. Check the response body for specific error information |
Error responses
You can find more information for result codes 400, 404, and 500 in an error response entity in the response body, in the requested content type (XML or JSON). For example:
XML
<error>
<type>...</type>
<message>...</message>
</error>
JSON
{
"type": "...",
"message": "..."
}
Here are the possible responses:
Error type |
Associated Result Code |
Description |
CollectionNotFound |
404 Not Found |
The collection/table/scope containing the requested entity could not be found |
EntityNotFound |
404 Not Found |
The requested entity could not be found |
EntityMissing |
400 Bad Request |
Post request did not contain an entity in the request body |
EntityAlreadyExists |
400 Bad Request |
Post request attempted to create an entity that already exists |
RequiredParameterMissing |
400 Bad Request |
A required query parameter was not provided |
ParameterInvalid |
400 Bad Request |
One of the query parameters provided was invalid |
RequestInconsistent |
400 Bad Request |
Put request attempted to update an entity with an id/name in the request body that didn’t match the id/name in the URL |
ServerError |
500 Internal Server Error |
An internal error occurred while processing the request |
PageNotFound |
404 Not Found |
The requested page of the paged resource listing could not be found |
NotAcceptable |
406 Not Acceptable |
Requested media type is not supported (XML-only response, since media type could not be determined) |
Provisioning MMTel subscriber data using the provisioning API
The HSS Data and Data Configuration REST API provides a RESTFul API allowing a user’s Supplementary Service data and IMS Operator Determined Barring data to be provisioned. The provisioned data is stored in two documents in the HSS, using Sh Transparent data.
The API defines Create, Read, Update and Delete (C,R,U,D) operations. It maps REST C,R,U,D operations into Sh Cache Microservice operations, which in turn turns them into Diameter Sh operations that manipulate XML documents stored in the HSS. These documents are the:
-
MMTel-Services document, according to section 7 of 3GPP TS 29.364 Rel 12,
-
IMS-ODB-Information document, according to section 10 of 3GPP TS 29.364 Rel 12
-
Metaswitch-TAS-Services document, custom
The XML schema for these documents is available, see Subscriber data document schemas.
Overview of the API
The API uses common RESTful HTTP practices. It is recommended to refer to the Primer on RESTful HTTP whilst reading this API.
Specific elements in the MMTel-Services document and IMS-ODB-Information documents (stored in the HSS, accessed via the Sh Cache Microservice) are mapped to "fields" in the returned document via this API. There is a default mapping, configured through the use of the sentinel-volte-mappings-config
tool described in Populating XCAP server settings and MMTel service data.
The mappings added by this tool are documented:
-
For the MMTel-Services document in the HSS - Required configuration for MMTel
-
For the IMS-ODB-Information document in the HSS - Required configuration for Operator Determined Barring
A visual way to view the result of the mappings is to Load or view transparent data for an IMS public identity.
Users can modify the API server configuration in order to introduce additional XML schemas with their own Service Indication. The sentinel-volte-mappings-config
tool uses a REST API to provide the default mappings/configuration. Note: in versions of Sentinel VoLTE prior to the 2.7.0.x series, only the MMTel-Services
document was configured by default in the previously named volte-sentinel-mappings-config
tool.
The subscriber’s own Data when passed to and from the API is framed according to the form described in HssSubscriberData.
The framing is either JSON or XML. When reading from the API (e.g a Read operation), the framing is selected by use of the Accept
header. It is either:
-
Accept: application/json
- for JSON framed data, or -
Accept: application/xml
- for XML framed data
When writing to the API (e.g. a Create or Update operation) the framing is indicated to the API by use of the Content-Type
header. It is either:
-
Content-Type: application/json
- for JSON framed data, or -
Content-Type: application/xml
- for XML framed data
The details of the Create, Read, Update and Delete operations are described in the /hssdata/subscriberdata section.
The operations take several parameters:
-
The
imsUserIdentity
parameter is the IMS public identity that will be read during SIP Session processing, or accessed via the Ut interface. -
The
rhinoInstanceId
parameter is the name/instance of the Rhino cluster that is being connected to (as defined in REM). This cluster stores settings that are used by the Provisioning API. -
The
selectionKey
parameter - typically defines the Platform Operator Name used for the install of the form$PLATFORM_OPERATOR_NAME$::::
About Update
The Update operation requires that a whole document is provided by the API client. It is not a "delta" operation, whereby only certain attributes or elements are identified for update - the entire document needs to be included. If a partial document is provided to the Update operation, it is treated by the Server as though any elements not provided to the Update operation are set to:
-
xsi:nil="true"
(for XML), or -
null
(for JSON)
A single API Update operation can modify one or more documents in the HSS via the Sh Cache Microservice. The HSS document to update is controlled by the serviceIndication
in the client provided document.
API Attributes
The following two tables list all of the field attributes valid for their respective service indications.
MMTEL-Services
Name | Type | Required | Description |
---|---|---|---|
OIP Active: |
java.lang.Boolean |
false |
Whether or not Originating Identity Presentation is active for this user. Refer to the documentation for use of the ''unset'' flag |
OIP Authorized: |
java.lang.Boolean |
true |
Whether or not Originating Identity Presentation is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
OIR Active: |
java.lang.Boolean |
false |
Whether or not Originating Identity Presentation Restriction is active for this user. Refer to the documentation for use of the ''unset'' flag |
OIR Authorized: |
java.lang.Boolean |
true |
Whether or not Originating Identity Presentation Restriction is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
OIR Default Behaviour: |
com.opencloud.volte.sentinel.simservs.xcap.OriginatingIdentityPresentationRestriction$DefaultBehaviourType |
false |
Default behaviour value |
OIR Mode: |
com.opencloud.volte.sentinel.simservs.xcap.IdentityPresentationModeType |
false |
Default OIR mode |
TIR Default Behaviour: |
com.opencloud.volte.sentinel.simservs.xcap.TerminatingIdentityPresentationRestriction$DefaultBehaviourType |
false |
Default behaviour value |
TIP Active: |
java.lang.Boolean |
false |
Whether or not Terminating Identity Presentation is active for this user. Refer to the documentation for use of the ''unset'' flag |
TIP Authorized: |
java.lang.Boolean |
true |
Whether or not Terminating Identity Presentation is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
TIR Active: |
java.lang.Boolean |
false |
Whether or not Terminating Identity Presentation Restriction is active for this user. Refer to the documentation for use of the ''unset'' flag |
TIR Authorized: |
java.lang.Boolean |
true |
Whether or not Terminating Identity Presentation Restriction is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
ICB Active: |
java.lang.Boolean |
false |
Whether or not Incoming Communication Barring is active for this user. Refer to the documentation for use of the ''unset'' flag |
ICB Authorized: |
java.lang.Boolean |
true |
Whether or not Incoming Communication Barring is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
OCB Active: |
java.lang.Boolean |
false |
Whether or not Outgoing Communication Barring is active for this user. Refer to the documentation for use of the ''unset'' flag |
OCB Authorized: |
java.lang.Boolean |
true |
Whether or not Outgoing Communication Barring is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
CW Active: |
java.lang.Boolean |
false |
Whether or not Communication Waiting is active for this user. Refer to the documentation for use of the ''unset'' flag |
CW Authorized: |
java.lang.Boolean |
true |
Whether or not Communication Waiting is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
CDIV Active: |
java.lang.Boolean |
false |
Whether or not Communication Diversion is active for this user. Refer to the documentation for use of the ''unset'' flag |
CDIV Authorized: |
java.lang.Boolean |
true |
Whether or not Communication Diversion is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
CDIV No Reply Timer: |
java.lang.Integer |
false |
Communication Diversion no reply timer |
CDIV Rules: |
com.opencloud.volte.sentinel.common.policy.Ruleset |
false |
Communication Diversion rules |
ICB Rules: |
com.opencloud.volte.sentinel.common.policy.Ruleset |
false |
Incoming Communication Barring rules |
OCB Rules: |
com.opencloud.volte.sentinel.common.policy.Ruleset |
false |
Outgoing Communication Barring rules |
Flexible Alerting Group Type: |
com.opencloud.volte.sentinel.simservs.xcap.OperatorFlexibleAlertingGroup$GroupType |
false |
Either: "single user" (pilot number busy if one member is busy), or "multiple-users" (pilot number busy when all members are busy). This field is present in the Operator Data, therefore subscribers are not allowed to change it. |
Flexible Alerting Membership Type: |
com.opencloud.volte.sentinel.simservs.xcap.OperatorFlexibleAlertingGroup$MembershipType |
false |
Whether a member are allowed or not to unsubscribe from the group. 'Permanent' means not allowed. The Membership Type is present in the Operator Data, meaning that the subscriber are not allowed to change it. |
Flexible Alerting Group Members: |
com.opencloud.volte.sentinel.simservs.xcap.OperatorFlexibleAlertingGroup$Members |
false |
The members identities that belong to this group. The Flexible Alerting Group Members are present in the Operator Data, meaning that the subscriber are not allowed to change it. |
Flexible Alerting Pilot Number: |
com.opencloud.volte.sentinel.common.policy.IdentityType |
false |
The URI that defines the group. The Flexible Alerting Pilot Number is present in the Operator Data, meaning that the subscriber are not allowed to change it. |
Flexible Alerting Group Authorized: |
java.lang.Boolean |
false |
Whether or not Flexible Alerting is authorized for this group. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
Flexible Alerting Authorized: |
java.lang.Boolean |
false |
Whether or not Flexible Alerting is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
Explicit Communication Transfer Authorized: |
java.lang.Boolean |
true |
Whether or not Explicit Communication Transfer is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
Operator CDIV Rules: |
com.opencloud.volte.sentinel.common.policy.Ruleset |
false |
Operator Communication Diversion rules. These rules are present in the Operator Data, meaning that the subscriber is not allowed to change them. |
Operator CDIV Maximum Diversion Count: |
java.math.BigInteger |
true |
Operator Communication Diversion maximum diversion count. This value is present in the Operator Data, meaning that the subscriber is not allowed to change it. |
Operator CDIV No Reply Timer: |
java.lang.Integer |
true |
Operator Communication Diversion no reply timer. This value is present in the Operator Data, meaning that the subscriber is not allowed to change it. |
Hold Authorized: |
java.lang.Boolean |
true |
Whether or not Communication Hold is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
Conferencing Authorized: |
java.lang.Boolean |
true |
Whether or not Conferencing is authorized for this user. The Authorized indicator is present in the Operator Data, so it is not visible to the subscriber. |
IMS-ODB-Information
Name | Type | Required | Description |
---|---|---|---|
Outgoing barring condition: |
java.lang.Short |
false |
Set the condition for outgoing barring |
Incoming barring condition: |
java.lang.Short |
false |
Set the condition for incoming barring |
Barring of roaming condition: |
java.lang.Short |
false |
Set the condition for barring of roaming |
Bar premium rate communications information: |
java.lang.Boolean |
false |
Set the condition for outgoing barring of premium rate communication information |
Bar premium rate calls information when roaming outside Hplmn country: |
java.lang.Boolean |
false |
Set the condition for outgoing barring of premium rate communication information when roaming |
Bar premium rate communications entertainment: |
java.lang.Boolean |
false |
Set the condition for outgoing barring of premium rate communication entertainment |
Bar premium rate calls entertainment when roaming outside Hplmn country: |
java.lang.Boolean |
false |
Set the condition for outgoing barring of premium rate communication entertainment when roaming |
Evaluate ruleset Type1: |
java.lang.Boolean |
false |
Activate/Deactivate processing barring ruleset type1 |
Evaluate ruleset Type2: |
java.lang.Boolean |
false |
Activate/Deactivate processing barring ruleset type2 |
Evaluate ruleset Type3: |
java.lang.Boolean |
false |
Activate/Deactivate processing barring ruleset type3 |
Evaluate ruleset Type4: |
java.lang.Boolean |
false |
Activate/Deactivate processing barring ruleset type4 |
Barring of supplementary services management: |
java.lang.Boolean |
false |
Set the condition to bar the supplementary services management |
Diverted to address registration barring: |
java.lang.Short |
false |
Set the condition to bar the registration of diverted address |
Simple invocation of communication transfer barring: |
java.lang.Short |
false |
Set the condition to bar a communication transfer |
Multiple invocation of communication transfer barring: |
java.lang.Boolean |
false |
Set the condition to bar multiple communication transfer |
Invocation of chargeable communication transfer barring: |
java.lang.Boolean |
false |
Set the condition to bar a chargeable communication transfer |
Metaswitch-TAS-Services
Name | Type | Required | Description |
---|---|---|---|
Basic Settings Active: |
java.lang.Boolean |
false |
Set the user basic settings active flag |
Basic Settings Operator Authorized: |
java.lang.Boolean |
true |
Set the operator basic settings authorized flag |
Basic Settings User Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the user basic settings additional attributes |
Basic Settings Operator Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the operator basic settings additional attributes |
LBD Active: |
java.lang.Boolean |
false |
Set the user location based dialling active flag |
LBD Operator Authorized: |
java.lang.Boolean |
true |
Set the location based dialling authorized flag |
LBD Group ID: |
java.lang.String |
false |
Set the location based dialling group ID |
LBD User Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the user location based dialling additional attributes |
LBD Operator Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the operator location based dialling additional attributes |
FTV Active: |
java.lang.Boolean |
false |
Set the user forward to voicemail active flag |
FTV Operator Authorized: |
java.lang.Boolean |
true |
Set the operator forward to voicemail authorized flag |
FTV Allow Subscriber Update: |
java.lang.Boolean |
true |
Set the operator forward to voicemail allow subscriber update flag |
FTV Server URI: |
java.lang.String |
false |
Set the user forward to voicemail server URI |
FTV User Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the user forward to voicemail additional attributes |
FTV Operator Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the operator forward to voicemail additional attributes |
CD Active: |
java.lang.Boolean |
false |
Set the user companion device active flag |
CD Operator Authorized: |
java.lang.Boolean |
true |
Set the companion device authorized flag |
CD Devices: |
com.metaswitch.xmlschema.tas.DevicesType |
false |
Set the companion devices |
CD SharedSipUri: |
java.lang.String |
false |
Set the companion device shared sip uri identity |
CD SharedTelUri: |
java.lang.String |
false |
Set the companion device shared tel uri identity |
CD Hide: |
java.lang.Boolean |
false |
Set the companion device hide and block flag |
CD User Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the user companion device additional attributes |
CD Operator Additional Attributes: |
com.metaswitch.xmlschema.tas.AdditionalAttributes |
false |
Set the operator companion device additional attributes |
Create Examples
The Create API takes the user’s IMPU from the provided document. It is the only API call that does not include the user’s IMPU in the query URI. It returns a Location
header containing the URI for further accessing the user’s data. This location is the URI for the other operations, such as Read, Update and Delete.
The create operation operates on one IMPU at a time.
Data in a file instead of inline
In the create examples, the curl
utility is used. Data is provided inline in these examples, such that they can be copy/pasted to a command-line.
This has the side effect of making the command look more complex, as it is now a "long string" entered as a single command.
The curl
utility allows the data to be used for an HTTP operation to be specified in a file, rather than provided inline. So rather than using --data 'data-goes-here'
portion of the commands, it’s recommended to use --data-binary "@/path/to/filename"
. The reason to use --data-binary
is because when curl
handles data using --data
it will strip newlines … yet newlines can make documents (more) humanly readable!
Creating a users Transparent Data
In this example:
-
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the request body -
the HTTP Request Method is
POST
-
the user does not have Sh Transparent data
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is JSON
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
This example creates two documents in the HSS from a single HTTP request. These are MMTel-Services, and IMS-ODB-Information documents.
Request Body with manual formatting for ease of viewing |
{"identity":"sip:+6505550201@example.com", "fieldGroups":[ {"serviceIndication":"MMTEL-Services", "fields":[ {"name":"OIP Active:","value":"true"}, {"name":"OIP Authorized:","value":"true"}, {"name":"OIR Active:","value":"true"}, {"name":"OIR Authorized:","value":"true"}, {"name":"OIR Default Behaviour:","value":"presentation-not-restricted"}, {"name":"OIR Mode:","value":"temporary"}, {"name":"TIR Default Behaviour:","value":"presentation-not-restricted"}, {"name":"TIP Active:","value":"true"}, {"name":"TIP Authorized:","value":"true"}, {"name":"TIR Active:","value":"true"}, {"name":"TIR Authorized:","value":"true"}, {"name":"ICB Active:","value":"false"}, {"name":"ICB Authorized:","value":"false"}, {"name":"OCB Active:","value":"false"}, {"name":"OCB Authorized:","value":"true"}, {"name":"CW Active:","value":"false"}, {"name":"CW Authorized:","value":"true"}, {"name":"CDIV Active:","value":"false"}, {"name":"CDIV Authorized:","value":"true"}, {"name":"CDIV No Reply Timer:","value":"60"}, {"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"Flexible Alerting Group Type:","value":null}, {"name":"Flexible Alerting Membership Type:","value":null}, {"name":"Flexible Alerting Group Members:","value":null}, {"name":"Flexible Alerting Pilot Number:","value":null}, {"name":"Flexible Alerting Group Authorized:","value":null}, {"name":"Flexible Alerting Authorized:","value":"true"}, {"name":"Explicit Communication Transfer Authorized:","value":"true"}, {"name":"Operator CDIV Rules:","value":null}, {"name":"Operator CDIV Maximum Diversion Count:","value":"true"}, {"name":"Operator CDIV No Reply Timer:","value":"true"}, {"name":"Hold Authorized:","value":"true"}, {"name":"Conferencing Authorized:","value":"true"} ] }, {"serviceIndication":"IMS-ODB-Information", "fields":[ {"name":"Outgoing barring condition:","value":null}, {"name":"Incoming barring condition:","value":null}, {"name":"Barring of roaming condition:","value":null}, {"name":"Bar premium rate communications information:","value":null}, {"name":"Bar premium rate calls information when roaming outside Hplmn country:","value":null}, {"name":"Bar premium rate communications entertainment:","value":null}, {"name":"Bar premium rate calls entertainment when roaming outside Hplmn country:","value":null}, {"name":"Evaluate ruleset Type1:","value":null}, {"name":"Evaluate ruleset Type2:","value":null}, {"name":"Evaluate ruleset Type3:","value":null}, {"name":"Evaluate ruleset Type4:","value":null}, {"name":"Barring of supplementary services management:","value":null}, {"name":"Diverted to address registration barring:","value":null}, {"name":"Simple invocation of communication transfer barring:","value":null}, {"name":"Multiple invocation of communication transfer barring:","value":null}, {"name":"Invocation of chargeable communication transfer barring:","value":null} ] }, {"serviceIndication":"Metaswitch-TAS-Services", "fields":[ {"name":"Basic Settings Operator Authorized:","value":"true"}, {"name":"Basic Settings User Additional Attributes:","value":null}, {"name":"Basic Settings Operator Additional Attributes:","value":null}, {"name":"LBD Operator Authorized:","value":"true"}, {"name":"LBD Group ID:","value":null}, {"name":"LBD User Additional Attributes:","value":null}, {"name":"LBD Operator Additional Attributes:","value":null}, {"name":"FTV Active:","value":"true"}, {"name":"FTV Operator Authorized:","value":"true"}, {"name":"FTV Allow Subscriber Update:","value":"true"}, {"name":"FTV Server URI:","value":null}, {"name":"FTV User Additional Attributes:","value":null}, {"name":"FTV Operator Additional Attributes:","value":null}, {"name":"CD Operator Authorized:","value":"true"}, {"name":"CD Devices:","value":null}, {"name":"CD SharedSipUri:","value":null}, {"name":"CD SharedTelUri:","value":null}, {"name":"CD Hide:","value":null}, {"name":"CD User Additional Attributes:","value":null}, {"name":"CD Operator Additional Attributes:","value":null} ] } ] } |
---|---|
Request using Curl |
curl -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -i \ -X POST \ -u "username:password" \ --data '{"identity":"sip:+6505550201@example.com","fieldGroups":[{"serviceIndication":"MMTEL-Services","fields":[{"name":"OIP Active:","value":"true"},{"name":"OIP Authorized:","value":"true"},{"name":"OIR Active:","value":"true"},{"name":"OIR Authorized:","value":"true"},{"name":"OIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"OIR Mode:","value":"temporary"},{"name":"TIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"TIP Active:","value":"true"},{"name":"TIP Authorized:","value":"true"},{"name":"TIR Active:","value":"true"},{"name":"TIR Authorized:","value":"true"},{"name":"ICB Active:","value":"false"},{"name":"ICB Authorized:","value":"false"},{"name":"OCB Active:","value":"false"},{"name":"OCB Authorized:","value":"true"},{"name":"CW Active:","value":"false"},{"name":"CW Authorized:","value":"true"},{"name":"CDIV Active:","value":"false"},{"name":"CDIV Authorized:","value":"true"},{"name":"CDIV No Reply Timer:","value":"60"},{"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"Flexible Alerting Group Type:","value":null},{"name":"Flexible Alerting Membership Type:","value":null},{"name":"Flexible Alerting Group Members:","value":null},{"name":"Flexible Alerting Pilot Number:","value":null},{"name":"Flexible Alerting Group Authorized:","value":null},{"name":"Flexible Alerting Authorized:","value":"true"},{"name":"Explicit Communication Transfer Authorized:","value":"true"},{"name":"Operator CDIV Rules:","value":null},{"name":"Operator CDIV Maximum Diversion Count:","value":"true"},{"name":"Operator CDIV No Reply Timer:","value":"true"},{"name":"Hold Authorized:","value":"true"},{"name":"Conferencing Authorized:","value":"true"}]},{"serviceIndication":"IMS-ODB-Information","fields":[{"name":"Outgoing barring condition:","value":null},{"name":"Incoming barring condition:","value":null},{"name":"Barring of roaming condition:","value":null},{"name":"Bar premium rate communications information:","value":null},{"name":"Bar premium rate calls information when roaming outside Hplmn country:","value":null},{"name":"Bar premium rate communications entertainment:","value":null},{"name":"Bar premium rate calls entertainment when roaming outside Hplmn country:","value":null},{"name":"Evaluate ruleset Type1:","value":null},{"name":"Evaluate ruleset Type2:","value":null},{"name":"Evaluate ruleset Type3:","value":null},{"name":"Evaluate ruleset Type4:","value":null},{"name":"Barring of supplementary services management:","value":null},{"name":"Diverted to address registration barring:","value":null},{"name":"Simple invocation of communication transfer barring:","value":null},{"name":"Multiple invocation of communication transfer barring:","value":null},{"name":"Invocation of chargeable communication transfer barring:","value":null}]},{"serviceIndication":"Metaswitch-TAS-Services","fields":[{"name":"Basic Settings Operator Authorized:","value":"true"},{"name":"Basic Settings User Additional Attributes:","value":null},{"name":"Basic Settings Operator Additional Attributes:","value":null},{"name":"LBD Operator Authorized:","value":"true"},{"name":"LBD Group ID:","value":null},{"name":"LBD User Additional Attributes:","value":null},{"name":"LBD Operator Additional Attributes:","value":null},{"name":"FTV Active:","value":"true"},{"name":"FTV Operator Authorized:","value":"true"},{"name":"FTV Allow Subscriber Update:","value":"true"},{"name":"FTV Server URI:","value":null},{"name":"FTV User Additional Attributes:","value":null},{"name":"FTV Operator Additional Attributes:","value":null},{"name":"CD Operator Authorized:","value":"true"},{"name":"CD Devices:","value":null},{"name":"CD SharedSipUri:","value":null},{"name":"CD SharedTelUri:","value":null},{"name":"CD Hide:","value":null},{"name":"CD User Additional Attributes:","value":null},{"name":"CD Operator Additional Attributes:","value":null}]}]}' \ "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
Response Headers |
HTTP/1.1 100 Continue HTTP/1.1 201 Created Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=C4B52CB5E642165BDCB44DB8DDF595E6; Path=/rem/; HttpOnly Location: http://54.206.118.127:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch:::: Content-Length: 0 Date: Mon, 14 May 2018 02:24:36 GMT |
Response Body |
There is no response body |
Note: when a field value contains an XML element, it is escaped as the value is defined as JSON string. As an example, any quote characters need to be escaped, newline characters are represented as \n
.
Attempting to create a user that already has Transparent Data
This is the same as the previous example, but where the user already has Transparent data.
In this case the following response headers and body are observed.
Response headers |
HTTP/1.1 100 Continue HTTP/1.1 400 Bad Request Server: Apache-Coyote/1.1 Content-Type: application/json Transfer-Encoding: chunked Date: Mon, 14 May 2018 02:28:01 GMT Connection: close |
---|---|
Response body |
{"type":"EntityAlreadyExists","message":"Subscriber data already exists for IMS user identity \"sip:+6505550201@example.com\" and selection key \"Metaswitch::::\""} |
Read Examples
The read operation will request transparent data from the HSS for all the APIs configured Service-Indications. By default, these include MMTel-Services
and IMS-ODB-Information
.
Read example using JSON
In this example:
-
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the URI -
the HTTP Request Method is
GET
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is JSON
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
Request |
curl -H 'Accept: application/json' \ -i \ -X GET \ -u "username:password" \ "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
---|---|
Response Header |
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: application/json Transfer-Encoding: chunked Date: Thu, 10 May 2018 05:13:44 GMT |
Response Body |
{"identity":"sip:+6505550201@example.com","fieldGroups":[{"serviceIndication":"MMTEL-Services","fields":[{"name":"OIP Active:","value":"true"},{"name":"OIP Authorized:","value":"true"},{"name":"OIR Active:","value":"true"},{"name":"OIR Authorized:","value":"true"},{"name":"OIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"OIR Mode:","value":"temporary"},{"name":"TIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"TIP Active:","value":"true"},{"name":"TIP Authorized:","value":"true"},{"name":"TIR Active:","value":"true"},{"name":"TIR Authorized:","value":"true"},{"name":"ICB Active:","value":"false"},{"name":"ICB Authorized:","value":"false"},{"name":"OCB Active:","value":"false"},{"name":"OCB Authorized:","value":"true"},{"name":"CW Active:","value":"false"},{"name":"CW Authorized:","value":"true"},{"name":"CDIV Active:","value":"false"},{"name":"CDIV Authorized:","value":"true"},{"name":"CDIV No Reply Timer:","value":"60"},{"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"Flexible Alerting Group Type:","value":null},{"name":"Flexible Alerting Membership Type:","value":null},{"name":"Flexible Alerting Group Members:","value":null},{"name":"Flexible Alerting Pilot Number:","value":null},{"name":"Flexible Alerting Group Authorized:","value":null},{"name":"Flexible Alerting Authorized:","value":"true"},{"name":"Explicit Communication Transfer Authorized:","value":"true"},{"name":"Operator CDIV Rules:","value":null},{"name":"Operator CDIV Maximum Diversion Count:","value":"true"},{"name":"Operator CDIV No Reply Timer:","value":"true"},{"name":"Hold Authorized:","value":"true"},{"name":"Conferencing Authorized:","value":"true"}]},{"serviceIndication":"IMS-ODB-Information","fields":[{"name":"Outgoing barring condition:","value":null},{"name":"Incoming barring condition:","value":null},{"name":"Barring of roaming condition:","value":null},{"name":"Bar premium rate communications information:","value":null},{"name":"Bar premium rate calls information when roaming outside Hplmn country:","value":null},{"name":"Bar premium rate communications entertainment:","value":null},{"name":"Bar premium rate calls entertainment when roaming outside Hplmn country:","value":null},{"name":"Evaluate ruleset Type1:","value":null},{"name":"Evaluate ruleset Type2:","value":null},{"name":"Evaluate ruleset Type3:","value":null},{"name":"Evaluate ruleset Type4:","value":null},{"name":"Barring of supplementary services management:","value":null},{"name":"Diverted to address registration barring:","value":null},{"name":"Simple invocation of communication transfer barring:","value":null},{"name":"Multiple invocation of communication transfer barring:","value":null},{"name":"Invocation of chargeable communication transfer barring:","value":null}]},{"serviceIndication":"Metaswitch-TAS-Services","fields":[{"name":"Basic Settings Operator Authorized:","value":"true"},{"name":"Basic Settings User Additional Attributes:","value":null},{"name":"Basic Settings Operator Additional Attributes:","value":null},{"name":"LBD Operator Authorized:","value":"true"},{"name":"LBD Group ID:","value":null},{"name":"LBD User Additional Attributes:","value":null},{"name":"LBD Operator Additional Attributes:","value":null},{"name":"FTV Active:","value":"true"},{"name":"FTV Operator Authorized:","value":"true"},{"name":"FTV Allow Subscriber Update:","value":"true"},{"name":"FTV Server URI:","value":null},{"name":"FTV User Additional Attributes:","value":null},{"name":"FTV Operator Additional Attributes:","value":null},{"name":"CD Operator Authorized:","value":"true"},{"name":"CD Devices:","value":null},{"name":"CD SharedSipUri:","value":null},{"name":"CD SharedTelUri:","value":null},{"name":"CD Hide:","value":null},{"name":"CD User Additional Attributes:","value":null},{"name":"CD Operator Additional Attributes:","value":null}]}]} |
Response Body with manual format editing for ease of viewing |
{"identity":"sip:+6505550201@example.com", "fieldGroups":[ {"serviceIndication":"MMTEL-Services", "fields":[ {"name":"OIP Active:","value":"true"}, {"name":"OIP Authorized:","value":"true"}, {"name":"OIR Active:","value":"true"}, {"name":"OIR Authorized:","value":"true"}, {"name":"OIR Default Behaviour:","value":"presentation-not-restricted"}, {"name":"OIR Mode:","value":"temporary"}, {"name":"TIR Default Behaviour:","value":"presentation-not-restricted"}, {"name":"TIP Active:","value":"true"}, {"name":"TIP Authorized:","value":"true"}, {"name":"TIR Active:","value":"true"}, {"name":"TIR Authorized:","value":"true"}, {"name":"ICB Active:","value":"false"}, {"name":"ICB Authorized:","value":"false"}, {"name":"OCB Active:","value":"false"}, {"name":"OCB Authorized:","value":"true"}, {"name":"CW Active:","value":"false"}, {"name":"CW Authorized:","value":"true"}, {"name":"CDIV Active:","value":"false"}, {"name":"CDIV Authorized:","value":"true"}, {"name":"CDIV No Reply Timer:","value":"60"}, {"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"Flexible Alerting Group Type:","value":null}, {"name":"Flexible Alerting Membership Type:","value":null}, {"name":"Flexible Alerting Group Members:","value":null}, {"name":"Flexible Alerting Pilot Number:","value":null}, {"name":"Flexible Alerting Group Authorized:","value":null}, {"name":"Flexible Alerting Authorized:","value":"true"}, {"name":"Explicit Communication Transfer Authorized:","value":"true"}, {"name":"Operator CDIV Rules:","value":null}, {"name":"Operator CDIV Maximum Diversion Count:","value":"true"}, {"name":"Operator CDIV No Reply Timer:","value":"true"}, {"name":"Hold Authorized:","value":"true"}, {"name":"Conferencing Authorized:","value":"true"} ] }, {"serviceIndication":"IMS-ODB-Information", "fields":[ {"name":"Outgoing barring condition:","value":null}, {"name":"Incoming barring condition:","value":null}, {"name":"Barring of roaming condition:","value":null}, {"name":"Bar premium rate communications information:","value":null}, {"name":"Bar premium rate calls information when roaming outside Hplmn country:","value":null}, {"name":"Bar premium rate communications entertainment:","value":null}, {"name":"Bar premium rate calls entertainment when roaming outside Hplmn country:","value":null}, {"name":"Evaluate ruleset Type1:","value":null}, {"name":"Evaluate ruleset Type2:","value":null}, {"name":"Evaluate ruleset Type3:","value":null}, {"name":"Evaluate ruleset Type4:","value":null}, {"name":"Barring of supplementary services management:","value":null}, {"name":"Diverted to address registration barring:","value":null}, {"name":"Simple invocation of communication transfer barring:","value":null}, {"name":"Multiple invocation of communication transfer barring:","value":null}, {"name":"Invocation of chargeable communication transfer barring:","value":null} ] }, {"serviceIndication":"Metaswitch-TAS-Services", "fields":[ {"name":"Basic Settings Operator Authorized:","value":"true"}, {"name":"Basic Settings User Additional Attributes:","value":null}, {"name":"Basic Settings Operator Additional Attributes:","value":null}, {"name":"LBD Operator Authorized:","value":"true"}, {"name":"LBD Group ID:","value":null}, {"name":"LBD User Additional Attributes:","value":null}, {"name":"LBD Operator Additional Attributes:","value":null}, {"name":"FTV Active:","value":"true"}, {"name":"FTV Operator Authorized:","value":"true"}, {"name":"FTV Allow Subscriber Update:","value":"true"}, {"name":"FTV Server URI:","value":null}, {"name":"FTV User Additional Attributes:","value":null}, {"name":"FTV Operator Additional Attributes:","value":null}, {"name":"CD Operator Authorized:","value":"true"}, {"name":"CD Devices:","value":null}, {"name":"CD SharedSipUri:","value":null}, {"name":"CD SharedTelUri:","value":null}, {"name":"CD Hide:","value":null}, {"name":"CD User Additional Attributes:","value":null}, {"name":"CD Operator Additional Attributes:","value":null} ] } ] } |
Note: when a field value contains an XML element, it is escaped as the value is defined as JSON string. As an example, any quote characters need to be escaped, newline characters are represented as \n
.
Read for an IMPU with no Sh Transparent Data
In this example:
-
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the URI -
the HTTP Request Method is
GET
-
the user does not have Sh Transparent data
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is JSON
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
Request |
curl -H 'Accept: application/json' \ -i \ -X GET \ -u "username:password" \ "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
---|---|
Response Header |
HTTP/1.1 404 Not Found Server: Apache-Coyote/1.1 Content-Type: application/json Transfer-Encoding: chunked Date: Mon, 14 May 2018 02:09:39 GMT |
Response Body |
{"type":"EntityNotFound","message":"Subscriber data could not be found for IMS user identity \"sip:+6505550201@example.com\" and selection key \"Metaswitch::::\""} |
Read example using XML
In this example:
-
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the URI -
the HTTP Request Method is
GET
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is XML
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
Request |
curl -H 'Accept: application/xml' \ -i \ -X GET \ -u "username:password" \ "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
---|---|
Response Header |
HTTP/1.1 200 OK Server: Apache-Coyote/1.1 Content-Type: application/xml Content-Length: 5943 Date: Thu, 10 May 2018 23:46:59 GMT |
Response Body |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><hssSubscriberData><identity>sip:+6505550201@example.com</identity><fieldGroups><fieldGroup><serviceIndication>MMTEL-Services</serviceIndication><fields><field><name>OIP Active:</name><value>true</value></field><field><name>OIP Authorized:</name><value>true</value></field><field><name>OIR Active:</name><value>true</value></field><field><name>OIR Authorized:</name><value>true</value></field><field><name>OIR Default Behaviour:</name><value>presentation-not-restricted</value></field><field><name>OIR Mode:</name><value>temporary</value></field><field><name>TIR Default Behaviour:</name><value>presentation-not-restricted</value></field><field><name>TIP Active:</name><value>true</value></field><field><name>TIP Authorized:</name><value>true</value></field><field><name>TIR Active:</name><value>true</value></field><field><name>TIR Authorized:</name><value>true</value></field><field><name>ICB Active:</name><value>false</value></field><field><name>ICB Authorized:</name><value>true</value></field><field><name>OCB Active:</name><value>false</value></field><field><name>OCB Authorized:</name><value>true</value></field><field><name>CW Active:</name><value>false</value></field><field><name>CW Authorized:</name><value>true</value></field><field><name>CDIV Active:</name><value>false</value></field><field><name>CDIV Authorized:</name><value>true</value></field><field><name>CDIV No Reply Timer:</name><value>60</value></field><field><name>CDIV Rules:</name><value><?xml version="1.0" encoding="UTF-8" standalone="yes"?>: <cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/> </value></field><field><name>ICB Rules:</name><value><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/> </value></field><field><name>OCB Rules:</name><value><?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/> </value></field><field><name>Flexible Alerting Group Type:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/><</field><field><name>Flexible Alerting Membership Type:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Flexible Alerting Group Members:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Flexible Alerting Pilot Number:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Flexible Alerting Group Authorized:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Flexible Alerting Authorized:</name><value>true</value></field><field><name>Explicit Communication Transfer Authorized:</name><value>true</value></field><field><name>Operator CDIV Rules:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Operator CDIV Maximum Diversion Count:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Operator CDIV No Reply Timer:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field></fields></fieldGroup><fieldGroup><serviceIndication>IMS-ODB-Information</serviceIndication><fields><field><name>Outgoing barring condition:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Incoming barring condition:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Barring of roaming condition:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Bar premium rate communications information:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Bar premium rate calls information when roaming outside Hplmn country:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Bar premium rate communications entertainment:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Bar premium rate calls entertainment when roaming outside Hplmn country:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Evaluate ruleset Type1:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Evaluate ruleset Type2:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Evaluate ruleset Type3:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Evaluate ruleset Type4:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Barring of supplementary services management:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Diverted to address registration barring:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Simple invocation of communication transfer barring:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Multiple invocation of communication transfer barring:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Invocation of chargeable communication transfer barring:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field></fields></fieldGroup><fieldGroup><serviceIndication>Metaswitch-TAS-Services</serviceIndication><fields><field><name>Basic Settings Operator Authorized:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Basic Settings User Additional Attributes:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>Basic Settings Operator Additional Attributes:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>LBD Operator Authorized:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>LBD Group ID:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>LBD User Additional Attributes:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>LBD Operator Additional Attributes:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>CD Operator Authorized:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>CD Devices:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>CD SharedSipUri:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><nameCD SharedTelUri:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>CD Hide:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>CD User Additional Attributes:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field><field><name>CD Operator Additional Attributes:</name><value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/></field></fields></fieldGroup></fieldGroups></hssSubscriberData> |
Response Body with manual format editing for ease of viewing |
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <hssSubscriberData> <identity>sip:+6505550201@example.com</identity> <fieldGroups> <fieldGroup> <serviceIndication>MMTEL-Services</serviceIndication> <fields> <field> <name>OIP Active:</name> <value>true</value> </field> <field> <name>OIP Authorized:</name> <value>true</value> </field> <field> <name>OIR Active:</name> <value>true</value> </field> <field> <name>OIR Authorized:</name> <value>true</value> </field> <field> <name>OIR Default Behaviour:</name> <value>presentation-not-restricted</value> </field> <field> <name>OIR Mode:</name> <value>temporary</value> </field> <field> <name>TIR Default Behaviour:</name> <value>presentation-not-restricted</value> </field> <field> <name>TIP Active:</name> <value>true</value> </field> <field> <name>TIP Authorized:</name> <value>true</value> </field> <field> <name>TIR Active:</name> <value>true</value> </field> <field> <name>TIR Authorized:</name> <value>true</value> </field> <field> <name>ICB Active:</name> <value>false</value> </field> <field> <name>ICB Authorized:</name> <value>true</value> </field> <field> <name>OCB Active:</name> <value>false</value> </field> <field> <name>OCB Authorized:</name> <value>true</value> </field> <field> <name>CW Active:</name> <value>false</value> </field> <field> <name>CW Authorized:</name> <value>true</value> </field> <field> <name>CDIV Active:</name> <value>false</value> </field> <field> <name>CDIV Authorized:</name> <value>true</value> </field> <field> <name>CDIV No Reply Timer:</name> <value>60</value> </field> <field> <name>CDIV Rules:</name> <value><?xml version="1.0" encoding="UTF-8" standalone="yes"?>:<cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/></value> </field> <field> <name>ICB Rules:</name> <value><?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/></value> </field> <field> <name>OCB Rules:</name> <value><?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/></value> </field> <field> <name>Flexible Alerting Group Type:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/>< </field> <field> <name>Flexible Alerting Membership Type:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Flexible Alerting Group Members:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Flexible Alerting Pilot Number:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Flexible Alerting Group Authorized:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Flexible Alerting Authorized:</name> <value>true</value> </field> <field> <name>Explicit Communication Transfer Authorized:</name> <value>true</value> </field> <field> <name>Operator CDIV Rules:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Operator CDIV Maximum Diversion Count:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Operator CDIV No Reply Timer:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> </fields> </fieldGroup> <fieldGroup> <serviceIndication>IMS-ODB-Information</serviceIndication> <fields> <field> <name>Outgoing barring condition:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Incoming barring condition:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Barring of roaming condition:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Bar premium rate communications information:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Bar premium rate calls information when roaming outside Hplmn country:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Bar premium rate communications entertainment:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Bar premium rate calls entertainment when roaming outside Hplmn country:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Evaluate ruleset Type1:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Evaluate ruleset Type2:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Evaluate ruleset Type3:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Evaluate ruleset Type4:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Barring of supplementary services management:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Diverted to address registration barring:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Simple invocation of communication transfer barring:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Multiple invocation of communication transfer barring:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Invocation of chargeable communication transfer barring:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> </fields> </fieldGroup> <fieldGroup> <serviceIndication>Metaswitch-TAS-Services</serviceIndication> <fields> <field> <name>Basic Settings Operator Authorized:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Basic Settings User Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>Basic Settings Operator Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>LBD Operator Authorized:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>LBD Group ID:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>LBD User Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>LBD Operator Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>FTV Active:</name> <value>true</value> </field> <field> <name>FTV Operator Authorized:</name> <value>true</value> </field> <field> <name>FTV Allow Subscriber Update:</name> <value>true</value> </field> <field> <name>FTV Server URI:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>FTV User Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>FTV Operator Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD Operator Authorized:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD Devices:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD SharedSipUri:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD SharedTelUri:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD Hide:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD User Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> <field> <name>CD Operator Additional Attributes:</name> <value xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> </field> </fields> </fieldGroup> </fieldGroups> </hssSubscriberData> |
Note: When an XML element from the HSS is returned inside a "value" XML element, the API has to encode the HSS’s XML element as type xs:string
. This means that elements such as the following occur.
<field> <name>OCB Rules:</name> <value><?xml version="1.0" encoding="UTF-8" standalone="yes"?><cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/></value> </field>
Update Examples
Note: the examples here provide data in-line. It may be preferable to have data provided via a file. See Data in a file instead of inline.
Update of IMS ODB Information using JSON
In this example, a users IMS ODB Information is set to bar outgoing calls to international destinations, excluding the home country.
This example sets:
-
the
Service Indication
to "IMS-ODB-Information" - (serviceIndication in the document) -
a value of "2" in the
OutgoingBarring
element in theOdbForImsOrientedServices
document - an example of an XML document over the Sh interface is provided Bar all outgoing communications when international ex-hplmnc -
all other portions of the document are also provided - in this case they are explicitly set to
null
. -
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the URI -
the HTTP Request Method is
PUT
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is JSON
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
Request Body with manual formatting for ease of viewing |
{"identity":"sip:+6505550201@example.com", "fieldGroups":[ {"serviceIndication":"IMS-ODB-Information", "fields":[ {"name":"Outgoing barring condition:","value":"2"}, {"name":"Incoming barring condition:","value":null}, {"name":"Barring of roaming condition:","value":null}, {"name":"Bar premium rate communications information:","value":null}, {"name":"Bar premium rate calls information when roaming outside Hplmn country:","value":null}, {"name":"Bar premium rate communications entertainment:","value":null}, {"name":"Bar premium rate calls entertainment when roaming outside Hplmn country:","value":null}, {"name":"Evaluate ruleset Type1:","value":null}, {"name":"Evaluate ruleset Type2:","value":null}, {"name":"Evaluate ruleset Type3:","value":null}, {"name":"Evaluate ruleset Type4:","value":null}, {"name":"Barring of supplementary services management:","value":null}, {"name":"Diverted to address registration barring:","value":null}, {"name":"Simple invocation of communication transfer barring:","value":null}, {"name":"Multiple invocation of communication transfer barring:","value":null}, {"name":"Invocation of chargeable communication transfer barring:","value":null} ] } ] } |
---|---|
Request using Curl |
curl -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -i \ -X PUT \ -u "username:password" \ --data '{"identity":"sip:+6505550201@example.com","fieldGroups":[{"serviceIndication":"IMS-ODB-Information","fields":[{"name":"Outgoing barring condition:","value":"2"},{"name":"Incoming barring condition:","value":null},{"name":"Barring of roaming condition:","value":null},{"name":"Bar premium rate communications information:","value":null},{"name":"Bar premium rate calls information when roaming outside Hplmn country:","value":null},{"name":"Bar premium rate communications entertainment:","value":null},{"name":"Bar premium rate calls entertainment when roaming outside Hplmn country:","value":null},{"name":"Evaluate ruleset Type1:","value":null},{"name":"Evaluate ruleset Type2:","value":null},{"name":"Evaluate ruleset Type3:","value":null},{"name":"Evaluate ruleset Type4:","value":null},{"name":"Barring of supplementary services management:","value":null},{"name":"Diverted to address registration barring:","value":null},{"name":"Simple invocation of communication transfer barring:","value":null},{"name":"Multiple invocation of communication transfer barring:","value":null},{"name":"Invocation of chargeable communication transfer barring:","value":null}]}]}' \ "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
Response Header |
HTTP/1.1 100 Continue HTTP/1.1 204 No Content Server: Apache-Coyote/1.1 Date: Sun, 13 May 2018 21:53:43 GMT |
Response Body |
There is no response body |
Update of CDIV rules using JSON
In this example, a users CDIV rules are set to the Unconditional
rule, to always retarget to a specific number. The users CDIV Active
flag is set to true so that diversion can occur.
Note that CDIV Rules are able to be modified by an end user. Therefore a workflow implemented in a provisioning system is expected to:
-
Read the existing document using the Read operation, and parse into an in-memory form
-
modify this in-memory document add the specific rule (into the existing set of rules),
-
Update the document using the Update operation
A read for a user with no CDIV rules set will return a document. A trimmed version of that document is show below, including the two relevant fields:
-
CDIV Active
-
CDIV Rules
{"identity":"sip:+6505550201@example.com", "fieldGroups":[ {"serviceIndication":"MMTEL-Services", "fields":[ .. trimmed some output of Read .. {"name":"CDIV Active:","value":"false"}, {"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, .. trimmed some output of Read .. ] }, .. trimmed some output of Read .. ] }
The existing value of CDIV Active is "false". In order for CDIV to divert the call, the new value shall be "true"
.
The existing value of CDIV Rules - after removal of JSON escaping is:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"/>
The desired value for this element according to the MMTel Services document schema is:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <cp:ruleset xmlns="http://uri.etsi.org/ngn/params/xml/simservs/xcap" xmlns:ocp="urn:oma:xml:xdm:common-policy" xmlns:cp="urn:ietf:params:xml:ns:common-policy"> <cp:rule id="unconditional"> <cp:conditions> </cp:conditions> <cp:actions> <forward-to> <target>sip:+6505550202@example.com</target> <notify-caller>true</notify-caller> </forward-to> </cp:actions> </cp:rule> </cp:ruleset>
The JSON string form of the XML document above (preserving whitespace) is:
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\">\n <cp:rule id=\"unconditional\">\n <cp:conditions>\n </cp:conditions>\n <cp:actions>\n <forward-to>\n <target>sip:6505550202@example.com</target>\n <notify-caller>true</notify-caller>\n </forward-to>\n </cp:actions>\n </cp:rule>\n</cp:ruleset>\n"
Request Body with manual formatting for ease of viewing |
{"identity":"sip:+6505550201@example.com", "fieldGroups":[ {"serviceIndication":"MMTEL-Services", "fields":[ {"name":"OIP Active:","value":"true"}, {"name":"OIP Authorized:","value":"true"}, {"name":"OIR Active:","value":"true"}, {"name":"OIR Authorized:","value":"true"}, {"name":"OIR Default Behaviour:","value":"presentation-not-restricted"}, {"name":"OIR Mode:","value":"temporary"}, {"name":"TIR Default Behaviour:","value":"presentation-not-restricted"}, {"name":"TIP Active:","value":"true"}, {"name":"TIP Authorized:","value":"true"}, {"name":"TIR Active:","value":"true"}, {"name":"TIR Authorized:","value":"true"}, {"name":"ICB Active:","value":"false"}, {"name":"ICB Authorized:","value":"false"}, {"name":"OCB Active:","value":"false"}, {"name":"OCB Authorized:","value":"true"}, {"name":"CW Active:","value":"false"}, {"name":"CW Authorized:","value":"true"}, {"name":"CDIV Active:","value":"true"}, {"name":"CDIV Authorized:","value":"true"}, {"name":"CDIV No Reply Timer:","value":"60"}, {"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\">\n <cp:rule id=\"unconditional\">\n <cp:conditions>\n </cp:conditions>\n <cp:actions>\n <forward-to>\n <target>sip:+6505550202@example.com</target>\n <notify-caller>true</notify-caller>\n </forward-to>\n </cp:actions>\n </cp:rule>\n</cp:ruleset>\n"}, {"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"}, {"name":"Flexible Alerting Group Type:","value":null}, {"name":"Flexible Alerting Membership Type:","value":null}, {"name":"Flexible Alerting Group Members:","value":null}, {"name":"Flexible Alerting Pilot Number:","value":null}, {"name":"Flexible Alerting Group Authorized:","value":null}, {"name":"Flexible Alerting Authorized:","value":"true"}, {"name":"Explicit Communication Transfer Authorized:","value":"true"}, {"name":"Operator CDIV Rules:","value":null}, {"name":"Operator CDIV Maximum Diversion Count:","value":"true"}, {"name":"Operator CDIV No Reply Timer:","value":"true"}, {"name":"Hold Authorized:","value":"true"}, {"name":"Conferencing Authorized:","value":"true"} ] } ] } |
---|---|
Request body without formatting |
{"identity":"sip:+6505550201@example.com","fieldGroups":[{"serviceIndication":"MMTEL-Services","fields":[{"name":"OIP Active:","value":"true"},{"name":"OIP Authorized:","value":"true"},{"name":"OIR Active:","value":"true"},{"name":"OIR Authorized:","value":"true"},{"name":"OIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"OIR Mode:","value":"temporary"},{"name":"TIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"TIP Active:","value":"true"},{"name":"TIP Authorized:","value":"true"},{"name":"TIR Active:","value":"true"},{"name":"TIR Authorized:","value":"true"},{"name":"ICB Active:","value":"false"},{"name":"ICB Authorized:","value":"false"},{"name":"OCB Active:","value":"false"},{"name":"OCB Authorized:","value":"true"},{"name":"CW Active:","value":"false"},{"name":"CW Authorized:","value":"true"},{"name":"CDIV Active:","value":"true"},{"name":"CDIV Authorized:","value":"true"},{"name":"CDIV No Reply Timer:","value":"60"},{"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\">\n <cp:rule id=\"unconditional\">\n <cp:conditions>\n </cp:conditions>\n <cp:actions>\n <forward-to>\n <target>sip:+6505550202@example.com</target>\n <notify-caller>true</notify-caller>\n </forward-to>\n </cp:actions>\n </cp:rule>\n</cp:ruleset>\n"},{"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"Flexible Alerting Group Type:","value":null},{"name":"Flexible Alerting Membership Type:","value":null},{"name":"Flexible Alerting Group Members:","value":null},{"name":"Flexible Alerting Pilot Number:","value":null},{"name":"Flexible Alerting Group Authorized:","value":null},{"name":"Flexible Alerting Authorized:","value":"true"},{"name":"Explicit Communication Transfer Authorized:","value":"true"},{"name":"Operator CDIV Rules:","value":null},{"name":"Operator CDIV Maximum Diversion Count:","value":"true"},{"name":"Operator CDIV No Reply Timer:","value":"true"},{"name":"Hold Authorized:","value":"true"},{"name":"Conferencing Authorized:","value":"true"}]}]} |
Request using Curl |
curl -H 'Accept: application/json' \ -H 'Content-Type: application/json' \ -i \ -X PUT \ -u "username:password" \ --data '{"identity":"sip:+6505550201@example.com","fieldGroups":[{"serviceIndication":"MMTEL-Services","fields":[{"name":"OIP Active:","value":"true"},{"name":"OIP Authorized:","value":"true"},{"name":"OIR Active:","value":"true"},{"name":"OIR Authorized:","value":"true"},{"name":"OIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"OIR Mode:","value":"temporary"},{"name":"TIR Default Behaviour:","value":"presentation-not-restricted"},{"name":"TIP Active:","value":"true"},{"name":"TIP Authorized:","value":"true"},{"name":"TIR Active:","value":"true"},{"name":"TIR Authorized:","value":"true"},{"name":"ICB Active:","value":"false"},{"name":"ICB Authorized:","value":"false"},{"name":"OCB Active:","value":"false"},{"name":"OCB Authorized:","value":"true"},{"name":"CW Active:","value":"false"},{"name":"CW Authorized:","value":"true"},{"name":"CDIV Active:","value":"true"},{"name":"CDIV Authorized:","value":"true"},{"name":"CDIV No Reply Timer:","value":"60"},{"name":"CDIV Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\">\n <cp:rule id=\"unconditional\">\n <cp:conditions>\n </cp:conditions>\n <cp:actions>\n <forward-to>\n <target>sip:+6505550202@example.com</target>\n <notify-caller>true</notify-caller>\n </forward-to>\n </cp:actions>\n </cp:rule>\n</cp:ruleset>\n"},{"name":"ICB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"OCB Rules:","value":"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n<cp:ruleset xmlns=\"http://uri.etsi.org/ngn/params/xml/simservs/xcap\" xmlns:ocp=\"urn:oma:xml:xdm:common-policy\" xmlns:cp=\"urn:ietf:params:xml:ns:common-policy\"/>\n"},{"name":"Flexible Alerting Group Type:","value":null},{"name":"Flexible Alerting Membership Type:","value":null},{"name":"Flexible Alerting Group Members:","value":null},{"name":"Flexible Alerting Pilot Number:","value":null},{"name":"Flexible Alerting Group Authorized:","value":null},{"name":"Flexible Alerting Authorized:","value":"true"},{"name":"Explicit Communication Transfer Authorized:","value":"true"},{"name":"Operator CDIV Rules:","value":null},{"name":"Operator CDIV Maximum Diversion Count:","value":"true"},{"name":"Operator CDIV No Reply Timer:","value":"true"},{"name":"Hold Authorized:","value":"true"},{"name":"Conferencing Authorized:","value":"true"}]}]}' \ "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
Response Header |
HTTP/1.1 100 Continue HTTP/1.1 204 No Content Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=B09687CA5DE7037230D0D8EBF04924E2; Path=/rem/; HttpOnly Date: Sun, 13 May 2018 23:59:08 GMT |
Response Body |
There is no response body |
Delete Examples
The delete operation will remove any Sh Transparent User Data document that the API is configured for, By default this means that both the IMS-ODB-Information and MMTel-Services documents are deleted.
Deleting a subscriber that has Sh Transparent Data
In this example:
-
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the URI -
the HTTP Request Method is
DELETE
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is JSON
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
Request |
curl -H 'Accept: application/json' \ -i \ -X DELETE \ -u "username:password" "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
---|---|
Response headers |
HTTP/1.1 204 No Content Server: Apache-Coyote/1.1 Set-Cookie: JSESSIONID=A0944D87B81D23D8B9246CF994DE7067; Path=/rem/; HttpOnly Date: Mon, 14 May 2018 01:57:15 GMT |
Response body |
There is no response body |
Deleting a subscriber that has no Sh Transparent Data
In this example:
-
the
imsUserIdentity
issip:+6505550201@example.com
- it is specified in the URI -
the HTTP Request Method is
DELETE
-
there is no configured transparent data
-
the
rhinoInstanceId
isLocal
-
the
selectionKey
isMetaswitch::::
-
the requested framing format is JSON
-
the
username
isusername
-
the
password
ispassword
-
the server is located on
localhost
running on port8080
Request |
curl -H 'Accept: application/json' \ -i -X DELETE \ -u "username:password" "http://localhost:8080/rem/sentinel/api/hssdata/subscriberdata/sip:+6505550201@example.com?rhinoInstanceId=Local&selectionKey=Metaswitch::::" |
---|---|
Response headers |
HTTP/1.1 404 Not Found Server: Apache-Coyote/1.1 Content-Type: application/json Transfer-Encoding: chunked Date: Mon, 14 May 2018 01:57:27 GMT |
Response body |
{"type":"EntityNotFound","message":"Subscriber data could not be found for IMS user identity \"sip:+6505550201@example.com\" and selection key \"Metaswitch::::\""} |
Configuring using simple tools and scripts
Higher-level clients can be used to configure subscriber data using the REST API from Java or other application code, but you really just need to be able to make HTTP requests. See this example:
Turning on HomeZone for a subscriber using Ruby (JSON)
Note: this specific example is not relevant to the Sentinel VoLTE application as the Home Zone feature is not part of Sentinel VoLTE. This example is intended to show how Ruby can be used with the configuration API.
require 'rubygems'
require 'json'
require 'net/http'
Net::HTTP.start('localhost', '8080') {|http|
req = Net::HTTP::Get.new('/rem/sentinel/api/hssdata/subscriberdata/records/34600000003?rhinoInstanceId=Local&selectionKey=OpenCloud::::', {'Accept' => 'application/json'})
req.basic_auth 'username', 'password'
response = http.request(req)
subscriber = JSON.parse(response.body)
subscriber['subscriberData'].each {|item|
if item['name'] == 'HomeZoneEnabled'
item['valueBoolean'] = true;
end
}
req = Net::HTTP::Put.new('/rem/sentinel/api/hssdata/subscriberdata/records/34600000003?rhinoInstanceId=Local&selectionKey=OpenCloud::::', {'Content-Type' => 'application/json'})
req.basic_auth 'username', 'password'
response = http.request(req, JSON.generate(subscriber))
}
HSS Configuration REST API
Resource HSS Configuration
Resource |
HSS Configuration |
---|---|
Workspace |
VoLTE Services |
Path |
/hss |
Operations
Operation |
Retrieve a list of sub-resources offered by this resource |
---|---|
Request Method |
GET |
Path |
/hss |
Parameters |
|
Request Body |
Not used |
Success Result |
200 OK |
Response Headers |
None |
Response Body |
/hss/shcmraconfiguration
Operation |
Delete the existing Sh Cache Microservice Client configuration |
---|---|
Request Method |
DELETE |
Path |
/hss/shcmraconfiguration |
Parameters |
|
Request Body |
Not used |
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
Operation |
Create a new Sh Cache Microservice Client configuration |
---|---|
Request Method |
POST |
Path |
/hss/shcmraconfiguration |
Parameters |
|
Request Body |
|
Success Result |
201 Created |
Response Headers |
Location — contains the URL to access the created record |
Response Body |
Not used |
Operation |
Update the existing Sh Cache Microservice Client configuration |
---|---|
Request Method |
PUT |
Path |
/hss/shcmraconfiguration |
Parameters |
|
Request Body |
|
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
Operation |
Retrieve the existing Sh Cache Microservice Client configuration |
---|---|
Request Method |
GET |
Path |
/hss/shcmraconfiguration |
Parameters |
|
Request Body |
Not used |
Success Result |
200 OK |
Response Headers |
None |
Response Body |
Schemas
Feature
Class: com.opencloud.sentinel.rest.common.Feature
JSON
{
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"resources" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"rel" : {
"type" : "string"
},
"href" : {
"type" : "string"
},
"title" : {
"type" : "string"
}
}
}
}
}
}
XML
<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="feature" type="FeatureType"/>
<xs:element name="link" type="LinkType"/>
<xs:complexType name="FeatureType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="resources" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LinkType">
<xs:sequence/>
<xs:attribute name="rel" type="xs:string"/>
<xs:attribute name="href" type="xs:string"/>
<xs:attribute name="title" type="xs:string"/>
</xs:complexType>
</xs:schema>
ShCMRAConfigurationDto
Class: com.opencloud.volte.sentinel.provisioning.hss.ShCMRAConfigurationDto
JSON
{
"type" : "object",
"properties" : {
"proxyEnabled" : {
"type" : "boolean",
"required" : true
},
"proxyHost" : {
"type" : "string"
},
"proxyPort" : {
"type" : "integer"
},
"serverURL" : {
"type" : "string"
},
"httpIoThreads" : {
"type" : "integer"
},
"httpConnectTimeout" : {
"type" : "integer"
},
"httpIdleTimeout" : {
"type" : "integer"
},
"httpRequestTimeout" : {
"type" : "integer"
},
"httpKeepAlive" : {
"type" : "boolean",
"required" : true
},
"httpKeepAliveTimeout" : {
"type" : "integer"
},
"httpMaxPoolSize" : {
"type" : "integer"
}
}
}
XML
<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shcmraConfiguration" type="ShCMRAConfigurationType"/>
<xs:complexType name="ShCMRAConfigurationType">
<xs:sequence>
<xs:element name="proxyEnabled" type="xs:boolean"/>
<xs:element name="proxyHost" type="xs:string" minOccurs="0"/>
<xs:element name="proxyPort" type="xs:int" minOccurs="0"/>
<xs:element name="serverURL" type="xs:string"/>
<xs:element name="httpIoThreads" type="xs:int"/>
<xs:element name="httpConnectTimeout" type="xs:int"/>
<xs:element name="httpIdleTimeout" type="xs:int"/>
<xs:element name="httpRequestTimeout" type="xs:int"/>
<xs:element name="httpKeepAlive" type="xs:boolean"/>
<xs:element name="httpKeepAliveTimeout" type="xs:int" minOccurs="0"/>
<xs:element name="httpMaxPoolSize" type="xs:int"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
HSS Data and Data Configuration REST API
Resource HSS Data and Data Configuration
Resource |
HSS Data and Data Configuration |
---|---|
Workspace |
VoLTE Services |
Path |
/hssdata |
Operations
Operation |
Retrieve a list of sub-resources offered by this resource |
---|---|
Request Method |
GET |
Path |
/hssdata |
Parameters |
|
Request Body |
Not used |
Success Result |
200 OK |
Response Headers |
None |
Response Body |
/hssdata/provisioningfieldmappings
Operation |
Create a new HSS subscriber data field mappings set |
---|---|
Request Method |
POST |
Path |
/hssdata/provisioningfieldmappings |
Parameters |
|
Request Body |
|
Success Result |
201 Created |
Response Headers |
Location — contains the URL to access the created record |
Response Body |
Not used |
Operation |
Retrieve the existing HSS subscriber data field mappings |
---|---|
Request Method |
GET |
Path |
/hssdata/provisioningfieldmappings |
Parameters |
|
Request Body |
Not used |
Success Result |
200 OK |
Response Headers |
None |
Response Body |
Operation |
Update the existing HSS subscriber data field mappings |
---|---|
Request Method |
PUT |
Path |
/hssdata/provisioningfieldmappings |
Parameters |
|
Request Body |
|
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
Operation |
Delete the existing HSS subscriber data field mappings |
---|---|
Request Method |
DELETE |
Path |
/hssdata/provisioningfieldmappings |
Parameters |
|
Request Body |
Not used |
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
/hssdata/subscriberdata
Operation |
Create new subscriber data |
---|---|
Request Method |
POST |
Path |
/hssdata/subscriberdata |
Parameters |
|
Request Body |
|
Success Result |
201 Created |
Response Headers |
Location — contains the URL to access the created record |
Response Body |
Not used |
Operation |
Retrieve an existing subscriber data record |
---|---|
Request Method |
GET |
Path |
/hssdata/subscriberdata/{imsUserIdentity} |
Parameters |
|
Request Body |
Not used |
Success Result |
200 OK |
Response Headers |
None |
Response Body |
Operation |
Update an existing subscriber data record |
---|---|
Request Method |
PUT |
Path |
/hssdata/subscriberdata/{imsUserIdentity} |
Parameters |
|
Request Body |
|
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
Operation |
Delete existing subscriber data |
---|---|
Request Method |
DELETE |
Path |
/hssdata/subscriberdata/{imsUserIdentity} |
Parameters |
|
Request Body |
Not used |
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
Schemas
Feature
Class: com.opencloud.sentinel.rest.common.Feature
JSON
{
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"resources" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"rel" : {
"type" : "string"
},
"href" : {
"type" : "string"
},
"title" : {
"type" : "string"
}
}
}
}
}
}
XML
<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="feature" type="FeatureType"/>
<xs:element name="link" type="LinkType"/>
<xs:complexType name="FeatureType">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="resources" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="link" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="LinkType">
<xs:sequence/>
<xs:attribute name="rel" type="xs:string"/>
<xs:attribute name="href" type="xs:string"/>
<xs:attribute name="title" type="xs:string"/>
</xs:complexType>
</xs:schema>
SubscriberDataFieldSetDto
Class: com.opencloud.volte.sentinel.provisioning.hssdata.SubscriberDataFieldSetDto
JSON
{
"type" : "object",
"properties" : {
"fieldGroups" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"serviceIndication" : {
"type" : "string"
},
"serviceDataClass" : {
"type" : "string"
},
"serviceDataCodecClass" : {
"type" : "string"
},
"jxpathFactoryClass" : {
"type" : "string"
},
"fieldMappings" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"type" : {
"type" : "string"
},
"description" : {
"type" : "string"
},
"xPath" : {
"type" : "string"
},
"required" : {
"type" : "boolean",
"required" : true
}
}
}
}
}
}
}
}
}
XML
<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="fieldMapping" type="SubscriberDataFieldMappingType"/>
<xs:element name="subscriberDataFieldGroup" type="SubscriberDataFieldGroupType"/>
<xs:element name="subscriberDataFieldSet" type="SubscriberDataFieldSetType"/>
<xs:complexType name="SubscriberDataFieldSetType">
<xs:sequence>
<xs:element name="fieldGroups" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="subscriberDataFieldGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SubscriberDataFieldGroupType">
<xs:sequence>
<xs:element name="serviceIndication" type="xs:string"/>
<xs:element name="serviceDataClass" type="xs:string"/>
<xs:element name="serviceDataCodecClass" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="jxpathFactoryClass" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="fieldMappings" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="fieldMapping" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="SubscriberDataFieldMappingType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="type" type="xs:string"/>
<xs:element name="description" type="xs:string" nillable="true" minOccurs="0"/>
<xs:element name="xPath" type="xs:string"/>
<xs:element name="required" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
HssSubscriberData
Class: com.opencloud.volte.sentinel.provisioning.hssdata.HssSubscriberData
JSON
{
"type" : "object",
"properties" : {
"identity" : {
"type" : "string"
},
"fieldGroups" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"serviceIndication" : {
"type" : "string"
},
"fields" : {
"type" : "array",
"items" : {
"type" : "object",
"properties" : {
"name" : {
"type" : "string"
},
"value" : {
"type" : "string"
}
}
}
}
}
}
}
}
}
XML
<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="field" type="HssSubscriberDataFieldType"/>
<xs:element name="fieldGroup" type="HssSubscriberDataFieldGroupType"/>
<xs:element name="hssSubscriberData" type="HssSubscriberDataType"/>
<xs:complexType name="HssSubscriberDataType">
<xs:sequence>
<xs:element name="identity" type="xs:string"/>
<xs:element name="fieldGroups" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="fieldGroup" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="HssSubscriberDataFieldGroupType">
<xs:sequence>
<xs:element name="serviceIndication" type="xs:string"/>
<xs:element name="fields" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element ref="field" minOccurs="0" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<xs:complexType name="HssSubscriberDataFieldType">
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="value" type="xs:string" nillable="true" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
ShCache cache handling REST API
Resource ShCache cache handling
Resource |
ShCache cache handling |
---|---|
Workspace |
VoLTE Services |
Path |
shcache |
Operations
Operation |
Drop/invalidate data caches or cache entries, depending on the parameters. |
---|---|
Request Method |
DELETE |
Path |
shcache |
Parameters |
|
Request Body |
Not used |
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
shcache/{dataReference}
Operation |
Drop/invalidate data caches or cache entries, depending on the parameters. |
---|---|
Request Method |
DELETE |
Path |
shcache/{dataReference};serviceIndication=?;userIdentity=?;userIdentityType=?;privateIdentity=?;applicationServerName=?;dsaiTags=?;identitySets=? |
Parameters |
|
Request Body |
Not used |
Success Result |
204 No content |
Response Headers |
None |
Response Body |
Not used |
Sh Cache Microservice REST API
The Sentinel REM extension provides a RESTful API for invalidating caches and cache entries managed by the Sh Cache Microservice.
It is based on the Sh Cache Microservice’s Invalidation Management API, as detailed in the Sh Cache Microservice documentation.
The basic mechanism for accessing this REST API is the same as for the rest of the Sentinel VoLTE Provisioning REST API. |
This page covers
Dropping caches and invalidating cache entries
The Sh Cache Microservice section of the api, within the /rem/sentinel/api/shcache
path, is chiefly concerned with dropping whole caches, and invalidating individual cache entries. Both of these are achieved by issuing a DELETE
request for the appropriate URL.
For example, DELETE
with path /rem/sentinel/api/shcache
would drop all caches.
As another example, invalidating a single entry within a cache is also achieved using a DELETE
request, but with URL matrix parameters to specify which cache entry should be deleted. E.g.:
/rem/sentinel/api/shcache/cs-user-state
;userIdentity=0211111111;userIdentityType=msisdn;requestedNodes=1.
Note that these DELETE
operations take effect across the cluster as a whole.
Accessing cache counts and cache entry counts
For each DELETE
operation which operates on either whole caches, or individual cache entries, there is an analogous GET
operation which can be used to inspect a count related to those caches or cache entries.
Note that these operations only query cache information from the single node which services the request, rather than from the cluster as a whole. This is in contrast to the DELETE
requests which operate on the cluster as a whole. These GET
requests therefore are useful more for integration testing, and are not appropriate for querying the definitive state of the caches across the whole cluster.
Notes on URL format
Notes on the format of the URL schemes below:
-
{someValue}
indicates a position where some value should be supplied. -
A
[…]
indicates an optional part of the URL. E.g.:[;privateIdentity={privateIdentity}]
. -
An alternative is indicated as
(A|B)
, where either A or B should be specified. -
The available values for many of the URL parameters are described in available arguments for individual parameters.
Specifying the Rhino Instance Id
For all requests, the ?rhinoInstanceId={rhinoInstanceId}
URL query parameter must be specified after the URL path, and after any URL matrix parameters.
An example of a full URL for a DELETE
request:
http://thehostname/rem/sentinel/api/shcache/repository-data
;serviceIndication=MMTEL-Services
;userIdentity=sip:alice@home1.opencloud.co.nz?rhinoInstanceId=Local
After the path (ending with repository-data
), we see the URL matrix parameters (each of the form ;key=value
), followed by the URL query parameter ?rhinoInstanceId=Local
at the end.
The value of the rhinoInstanceId
parameter is the ID of the Rhino instance to connect to. This should exactly match the name of a Rhino instance configured in the Rhino Element Manager (REM), such as ?rhinoInstanceId=Local
.
For the sake of brevity, the rest of this document assumes that the query parameter ?rhinoInstanceId={rhinoInstanceId}
is appended to all DELETE
and GET
requests related to the this API, and it is not explicitly included in the URLs below.
URLs for querying or dropping whole caches
For these URLs:
-
A
GET
request returns the number of caches present on the node which services the request. -
A
DELETE
request drops the caches across all nodes in the cluster.
A successful GET
request will return a 200 OK
response, containing a response body such as the following:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cacheInfo><cacheCount>1</cacheCount></cacheInfo>
A successful DELETE
request will return a 204 No Content
response, containing no response body.
URL for all caches within a given data reference
/rem/sentinel/api/shcache/{dataReference}
Acts on all Sh caches related to the given data reference.
For queries where the dataReference
is repository-data
, the query can be optionally narrowed by serviceIndication
:
/rem/sentinel/api/shcache/repository-data[;serviceIndication={serviceIndication}]
URLs for querying or dropping cache entries
For these URLs:
-
A
GET
request returns the number of cache entries on the node which services the request. -
A
DELETE
request invalidates the cache entries across all nodes in the cluster.
A successful GET
request will return a 200 OK
response, containing a response body such as the following:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<cacheInfo><entryCount>1</entryCount></cacheInfo>
A successful DELETE
request will return a 204 No Content
response, containing no response body.
URL for entries within a given data reference
/rem/sentinel/api/shcache/{dataReference}
;userIdentity={userIdentity};userIdentityType=impu
[;privateIdentity={privateIdentity}]
Acts on cache entries within the given data reference, as narrowed by the given parameters.
Rules:
-
dataReference
must not berepository-data
. Forrepository-data
specific queries, see the URL query format which is specific torepository-data
. -
The
privateIdentity
parameter may only be included when using one of the following data references:msisdn
,sms-registration-info
,ue-reachability-for-ip
,tads-information
,stn-sr
,ue-srvcc-capability
,extended-priority
,csrn
,reference-location-information
.
URL for entries within the RepositoryData data reference
/rem/sentinel/api/shcache/repository-data
;userIdentity={userIdentity}
[;serviceIndication={serviceIndication}]
Acts on cache entries within the RepositoryData data reference, optionally narrowed by service indication.
Rules:
-
The userIdentity is treated as an IMPU. The
userIdentityType
parameter does not need to be provided in the URL, but if provided it must be set toimpu
.
URL for entries within the DSAI data reference
/rem/sentinel/api/shcache/dsai
;userIdentity={userIdentity};userIdentityType={userIdentityType}
;applicationServerName={applicationServerName};dsaiTags={dsaiTags}
Acts on cache entries within the DSAI data reference, narrowed by the given parameters.
URL for entries within the IMSPublicIdentity data reference
/rem/sentinel/api/shcache/ims-public-identity
;userIdentity={userIdentity};userIdentityType={userIdentityType}
[;identitySets={identitySets}]
Acts on cache entries within the IMSPublicIdentity data reference, narrowed by the given parameters.
URL for entries within the InitialFilterCriteria data reference
/rem/sentinel/api/shcache/initial-filter-criteria
;userIdentity={userIdentity};userIdentityType={userIdentityType}
;applicationServerName={applicationServerName}
Acts on cache entries within the InitialFilterCriteria data reference, narrowed by the given parameters.
URL for entries within the LocationInformation data reference
/rem/sentinel/api/shcache/(cs-location-information\|ps-location-information)
;userIdentity={userIdentity};userIdentityType={userIdentityType}
[;privateIdentity={privateIdentity}]
;currentLocation={currentLocation}
[;servingNodeIndication={servingNodeIndication}]
[;requestedNodes={requestedNodes}]
[;localTimeZoneIndication={localTimeZoneIndication}]
Acts on cache entries within the LocationInformation data reference within either the CS or PS domain, narrowed by the given parameters.
Rules:
-
userIdentityType
may specify eitherimpu
ormsisdn
.
URL for entries within the UserState data reference
/rem/sentinel/api/shcache/(cs-user-state\|ps-user-state)
;userIdentity={userIdentity};userIdentityType={userIdentityType}
[;privateIdentity={privateIdentity}]
[;requestedNodes={requestedNodes}]
Acts on cache entries within the UserState data reference within either the CS or PS domain, narrowed by the given parameters.
Rules:
-
userIdentityType
may specify eitherimpu
ormsisdn
.
Available arguments for individual parameters
Available values for the dataReference
parameter:
Note: the repository-data
data reference has its own specific URLs, as shown above.
-
charging-information
-
cs-location-information
-
csrn
-
cs-user-state
-
dsai
-
extended-priority
-
ims-public-identity
-
ims-user-state
(Recognized, but not yet supported in any of the above methods) -
initial-filter-criteria
-
ip-address-secure-binding-information
-
msisdn
-
psi-activation
-
ps-location-information
-
ps-user-state
-
reference-location-information
-
repository-data
-
scscf-name
-
service-level-trace-info
-
service-priority-level
-
sms-registration-info
-
stn-sr
-
tads-information
-
ue-reachability-for-ip
-
ue-srvcc-capability
Available values for the userIdentityType
parameter:
-
impu
-
msisdn
-
psi
When querying the HSS for MSISDN data, VoLTE by default sets the identity type to IMPU. If the FetchCMSISDNFeatureConfigProfileTable
profile has UDRIncludedIdentities
set to IMPU_IMPI
then the IMPI is also included in the query. When using the Sh Cache Rest API to act on the MSISDN caches, set the identity type to IMPU
and include both the IMPU and IMPI or just the IMPU, depending on the FetchCMSISDNFeatureConfigProfileTable configuration.
Available values for the localTimeZoneIndication
parameter:
-
local-time-zone-with-location-info-requested
-
only-local-time-zone-requested
Available values for the identitySets
parameter:
-
alias-identities
-
all-identities
-
implicit-identities
-
registered-identities