RESTful APIs for the Location Service
The RESTful Location Service APIs are:
Store Registrations for Address-of-Record
Stores registrations for the AOR.
An HTTP response 200 message is returned on success.
HTTP Method
POST
URI
proxyregistrarssr/locationservice/registration/
uri
Where the URI is of the form: sip:username@domain.com
Request Header
Accept application/json, Content-Type
application/json
Request Body
The cseq
, contactAddress
, and
callId
parameters are required and
case-sensitive.
[ { "cseq":7, "callId":"a97d0d177949304c@enpoYWkwMS5hcGFjLmJlYS5jb20.", "contactAddress":"<sip:alice@10.182.101.231:5060>;expires=3600", "methodsParam":"INVITE,BYE,CANCEL,ACK" } ]
Response Body
[{ "aor":"sip:alice@example.com", "contactUri":"sip:alice@10.182.101.231:5060", "contactAddress":"<sip:alice@10.182.101.231:5060>;expires=3600", "callId":"a97d0d177949304c@enpoYWkwMS5hcGFjLmJlYS5jb20.", "cseq":7, "qvalue":1.0, "methodsParam":"INVITE,BYE,CANCEL,ACK", "expiresParam":3600, "expires":1335173253469, "path":null, "sipInstanceId":null, "regId":null, "remoteIP":"localhost", "remotePort":2169, "created":1335169653469, "updated":1335169653469 }]
Example
Example 17-1 stores an AOR registration in the Proxy Registrar using the following parameters:
final String DEST_URL = "/proxyregistrarssr/locationservice/registration/sip:alice@example.com"; private String account_name = "alice"; private String account_pass = "<password>";
Example 17-1 Storing AOR Registrations
public void StoreRegistration() throws Exception { String restUrl = "http://127.0.0.1:7001" + DEST_URL; URL url = new URL(restUrl); HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); setHttpConnReqProperty(httpConn); httpConn.setRequestMethod("POST"); httpConn.connect(); OutputStreamWriter outWriter = new OutputStreamWriter(httpConn.getOutputStream(), "UTF-8"); String requestRegistration = "[{\"cseq\":2," + "\"callId\":\"LSRestfulTest.testStoreRegistration@10.182.107.197:5071\"," + "\"contactAddress\":\"<sip:alice@10.182.107.197:5071>;expires=300\"," + "\"methodsParam\":\"INVITE,BYE,CANCEL,ACK\"}]"; outWriter.write(requestRegistration); outWriter.flush(); outWriter.close(); int responseCode = httpConn.getResponseCode(); assertEquals(HttpURLConnection.HTTP_UNAUTHORIZED, responseCode); String digestValue = httpConn.getHeaderField(HttpAuthenticationUtils.HEADER_WWW_AUTHENTICATE); // Calculate the authorization header value from the authenticate header String authorizeValue = caculateAuthorizationFromDigest(digestValue, DEST_URL, account_name, account_pass, "POST"); httpConn = (HttpURLConnection)url.openConnection(); setHttpConnReqProperty(httpConn); httpConn.setRequestMethod("POST"); httpConn.setRequestProperty(HttpAuthenticationUtils.HEADER_AUTHORIZATION, authorizeValue); httpConn.connect(); outWriter = new OutputStreamWriter(httpConn.getOutputStream(), "UTF-8"); outWriter.write(requestRegistration); outWriter.flush(); outWriter.close(); responseCode = httpConn.getResponseCode(); assertEquals(HttpURLConnection.HTTP_OK, responseCode); InputStream input = httpConn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8")); String responseContent = ""; String line = null; while ((line = reader.readLine()) != null) { responseContent += line; } reader.close(); httpConn.disconnect(); } void setHttpConnReqProperty(HttpURLConnection httpConn) throws ProtocolException { httpConn.setRequestProperty("Accept", "application/json"); httpConn.setRequestProperty("Content-Type", "application/json"); httpConn.setDoInput(true); httpConn.setDoOutput(true); }
Lookup an Address-of-Record
This API looks up all bindings of an AOR. An HTTP response 200 message is returned on success.
HTTP Method
GET
URI
proxyregistrarssr/locationservice/registration/
uri
Request Header
Accept application/json, Content-Type
application/json
Request Body
None.
Response Body
[{ "aor":"sip:alice@example.com", "contactUri":"sip:alice@10.182.101.231:5060", "contactAddress":"<sip:alice@10.182.101.231:5060>;expires=3600", "callId":"a97d0d177949304c@enpoYWkwMS5hcGFjLmJlYS5jb20.", "cseq":7, "qvalue":1.0, "methodsParam":"INVITE,BYE,CANCEL,ACK", "expiresParam":3600, "expires":1335173253469, "path":null, "sipInstanceId":null, "regId":null, "remoteIP":"localhost", "remotePort":2169, "created":1335169653469, "updated":1335169653469 }]
Example
Example 17-2 stores an AOR registration in the Proxy Registrar using the following parameters:
final String DEST_URL = "/proxyregistrarssr/locationservice/registration/sip:alice@example.com"; private String account_name = "alice"; private String account_pass = "<password>";
Example 17-2 Looking Up An AOR
public void LookupRegistration() throws Exception { String restUrl = "http://127.0.0.1:7001" + DEST_URL; URL url = new URL(restUrl); HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); setHttpConnReqProperty(httpConn); httpConn.setRequestMethod("GET"); httpConn.connect(); String digestValue = httpConn.getHeaderField(HttpAuthenticationUtils.HEADER_WWW_ AUTHENTICATE); String authorizeValue = caculateAuthorizationFromDigest(digestValue, DEST_URL, account_name, account_pass, "GET"); httpConn = (HttpURLConnection)url.openConnection(); setHttpConnReqProperty(httpConn); httpConn.setRequestMethod("GET"); httpConn.setRequestProperty(HttpAuthenticationUtils.HEADER_AUTHORIZATION, authorizeValue); httpConn.connect(); responseCode = httpConn.getResponseCode(); assertEquals(HttpURLConnection.HTTP_OK, responseCode); InputStream input = httpConn.getInputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(input, "UTF-8")); String responseContent = ""; String line = null; while ((line = reader.readLine()) != null) { responseContent += line; } reader.close(); httpConn.disconnect(); }
Clear All Address of Record Bindings
An HTTP response 204 message is returned on success.
HTTP Method
DELETE
URI
proxyregistrarssr/locationservice/registration/
uri
Where the URI is of the form: sip:username@domain.com
Parameters
None.
Request Header
None.
Request Body
None.
Response Body
None.
Examples
Example 17-3 clears an AOR registration in the Proxy Registrar using the following parameters:
final String DEST_URL = "/proxyregistrarssr/locationservice/registration/sip:alice@example.com"; private String account_name = "alice";private String account_pass = "<password>";
Example 17-3 Clearing AOR Binding
public void testClearAllBindings() throws Exception { String restUrl = "http://127.0.0.1:7001" + DEST_URL; URL url = new URL(restUrl); HttpURLConnection httpConn = (HttpURLConnection)url.openConnection(); setHttpConnReqProperty(httpConn); httpConn.setRequestMethod("DELETE"); httpConn.connect(); String digestValue = httpConn.getHeaderField(HttpAuthenticationUtils.HEADER_ WWW_AUTHENTICATE); String authorizeValue = caculateAuthorizationFromDigest(digestValue, DEST_URL, account_name, account_pass, "DELETE"); httpConn = (HttpURLConnection)url.openConnection(); setHttpConnReqProperty(httpConn); httpConn.setRequestMethod("DELETE"); httpConn.setRequestProperty(HttpAuthenticationUtils.HEADER_AUTHORIZATION, authorizeValue); httpConn.connect(); respCode = httpConn.getResponseCode(); assertEquals(HttpURLConnection.HTTP_NO_CONTENT, respCode); httpConn.disconnect(); }