The information exchange between the IoT Broker and other components is based on the FIWARE NGSI standards. Therefore, for readers familiar with FIWARE NGSI, this manual does not contain a lot of new information.
For the formal specification documents, please refer to this archive.
The central aspect of the FIWARE NGSI information model is the concept of 'entities'. Entities are the virtual representation of all kinds of physical objects in the real world. Examples for physical entities are tables, rooms, or persons. Virtual entities have an identifier and a type. For example, a virtual entity representing a person named “John” could have the identifier “John” and the type “person”.
Any information about physical entities is expressed in the form of 'attributes' of virtual entities. Attributes have a name and a type as well. For example, the body temperature of John would be represented as an attribute having the name “body_temperature” and the type “temperature”. Values of such attributes are contained by value containers. This kind of container does not only consist of the actual attribute value, but also contains a set of metadata. Metadata is data about data; in in our body temperature example this metadata could represent the time of measurement, the measurement unit, and other information about the attribute value.
There also is a concept of 'attribute domains' in version 1.0 of FIWARE NGSI. An attribute domain logically groups together a set of attributes. For example, the attribute domain "health_status" could comprise of the attributes "body_temperature" and "blood_pressure".
Please note that the attribute domains features is likely to become deprecated in future versions of FIWARE NGSI.
The data structure used for exchanging information about entities is 'context element'. A context element contains information about multiple attributes of one entity. The domain of these attributes can also be specified inside the context element; in this case all provided attribute values have to belong to that domain.
Formally, a context element contains the following information:
an entity id and type
a list of triplets
FIWARE NGSI defines two interfaces for exchanging information based on the information model. The NGSI-10 is the 'data interface', used for exchanging information about entities and their attribute, i.e., attribute values and metadata. The NGSI-9 is the 'availability interface'; used for 'availability' information about entities and their attributes. Here, instead of exchanging attribute values, information about which provider can provide which context information is exchanged.
Please note that NGSI-9 and NGSI-10 represent different functionalities and are not different versions of the same interface. To avoid confusion, it is likely that in the future the names 'NGSI-10' and 'NGSI-10' will be replaced by more meaningful names.
The IoT Broker GE, being a data broker, mainly uses NGSI 10. This interface is used both for exchanging data between data consumers and the IoT Broker, and for exchanging data between the IoT Broker and data providers.
The IoT Broker additionally uses NGSI 9 for communicating with an instance of the IoT Discovery GE in order to get information about the addresses of data providers matching the requests of the data consumers. The NGSI-9 interface used in this communication is mainly specified in the documentation of the IoT Discovery GE (http://docs.ngsi9.apiary.io/#).
While this guide describes the message formats and service endpoints, please refer to the IoT Broker Open Specification (https://forge.fiware.org/plugins/mediawiki/wiki/fiware/index.php/FIWARE.OpenSpecification.IoT.Backend.IoTBroker) for details about the IoT Broker data flows.
FIWARE NGSI-10 supports a direct XML-representation of the NGSI-10 operations that were defined in the OMA specification of NGSI-10. These operations can be invoked by issuing a POST request on HTTP resources that correspond to the respective operation.Any possible interaction with the IoT Broker can be done using these six standard operations.
In addition, FIWARE NGSI defines also a set of operations for simplified interaction with data providers. These operations are called 'convenience operations'. They are redundant in the sense that the same results could be achieved as well by using only standard operations instead, so they only exist for the sake of convenience. For example, all information about a specific context entity can be retrieved by a HTTP GET on a convenience resource representing that context entity, while with standard operations the user would have to fomulate a request message in the right format and submit it to the generic query resource using HTTP POST.
Below the standard operations defined by NGSI 10 are described, followed by the convenience operations.
Generic queries for context information. The expected request body is an instance of queryContextRequest; the response body is an instance of queryContextResponse.
Generic subscriptions for context information. The expected request body is an instance of subscribeContextRequest; the response body is an instance of subscribeContextResponse.
Generic update of context subscriptions. The expected request body is an instance of updateContexSubscriptiontRequest; the response body is an instance of updateContextSubscriptionResponse.
Generic unsubscribe operations. The expected request body is an instance of unsubscribeContextRequest; the response body is an instance of unsubscribeContextResponse.
Notification operation to send context data matching a previous subscription. The expected request body is an instance of notifyContextRequest; the response body is an instance of notifyContextResponse.
Generic context updates. The expected request body is an instance of updateContextRequest; the response body is an instance of updateContextResponse.
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<queryContextRequest>
<entityIdList>
<entityId isPattern="false" type="Room">
<id>ConferenceRoom</id>
</entityId>
</entityIdList>
<attributeList>
<attribute>temperature</attribute>
</attributeList>
</queryContextRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<queryContextResponse>
<contextResponseList/>
<errorCode>
<code>404</code>
<reasonPhrase>CONTEXT ELEMENT NOT FOUND</reasonPhrase>
</errorCode>
</queryContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<queryContextResponse>
<contextResponseList>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>Room</type>
<contextValue>6</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
</contextResponseList>
</queryContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<subscribeContextRequest>
<entityIdList>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
</entityIdList>
<attributeList>
<attribute>temperature</attribute>
</attributeList>
<reference>127.0.0.1</reference>
<duration>P5M</duration>
<restriction>
<attributeExpression>someXPATH</attributeExpression>
<scope>
<operationScope>
<scopeType>someScopeType</scopeType>
<scopeValue>someScopeValue</scopeValue>
</operationScope>
</scope>
</restriction>
<notifyConditions>
<notifyCondition>
<type>ONCHANGE</type>
</notifyCondition>
<throttling>P5M</throttling>
</subscribeContextRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<subscribeContextResponse>
<subscribeError>
<subscriptionId></subscriptionId>
<errorCode>
<code>500</code>
<reasonPhrase>Subscription Error</reasonPhrase>
<details>Internal Error</details>
</errorCode>
</subscribeError>
</subscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<subscribeContextResponse>
<subscribeResponse>
<subscriptionId>12345</subscriptionId>
<duration>P5Y</duration>
<throttling>P5Y</throttling>
</subscribeResponse>
</subscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextSubscriptionRequest>
<duration>P5Y</duration>
<restriction>
<attributeExpression></attributeExpression>
<scope>
<operationScope>
<scopeType>myScopeType</scopeType>
<scopeValue>myScopeValue</scopeValue>
</operationScope>
</updateContextSubscriptionRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextSubscriptionResponse>
<subscribeError>
<subscriptionId>12345</subscriptionId>
<errorCode>
<code>404</code>
<reasonPhrase>Subscription ID not found</reasonPhrase>
<details>Internal Error</details>
</errorCode>
</subscribeError>
</updateContextSubscriptionResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextSubscriptionResponse>
<subscribeResponse>
<subscriptionId>12345</subscriptionId>
<duration>P5Y</duration>
<throttling>P1D</throttling>
</subscribeResponse>
</updateContextSubscriptionResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<unsubscribeContextRequest>
<subscriptionId>1245</subscriptionId>
</unsubscribeContextRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<unsubscribeContextResponse>
<subscriptionId>12345</subscriptionId>
<statusCode>
<code>200</code>
<reasonPhrase>OK</reasonPhrase>
</statusCode>
</unsubscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<unsubscribeContextResponse>
<subscriptionId>12345</subscriptionId>
<statusCode>
<code>404</code>
<reasonPhrase>Subscription ID not found</reasonPhrase>
<details>Internal Error</details>
</statusCode>
</unsubscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<notifyContextRequest>
<subscriptionId>12345</subscriptionId>
<originator>http://localhost/test</originator>
<contextResponseList>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>Room</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
</contextResponseList>
</notifyContextRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<notifyContextResponse>
<responseCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</responseCode>
</notifyContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextRequest>
<contextElementList>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>20</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>long</type>
<value>1</value>
</contextMetadata>
<contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</contextElement>
</contextElementList>
<updateAction>UPDATE</updateAction>
</updateContextRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextResponse>
<contextResponseList>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
</contextResponseList>
</updateContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>Room</type>
<contextValue>6</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
<details>a</details>
</statusCode>
</contextElementResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextElementRequest>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
<contextValue>70</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>2312</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</updateContextElementRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextElementResponse>
<contextResponse>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
</contextAttribute>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
</contextAttribute>
</contextAttributeList>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextResponse>
</updateContextElementResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextElementResponse>
<errorCode>
<code>404</code>
<reasonPhrase>Context Element not Found</reasonPhrase>
<details>No Attribute with given value IDs found</details>
</errorCode>
</updateContextElementResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<appendContextElementRequest>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
<contextValue>70</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>2312</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</appendContextElementRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<appendContextElementResponse>
<contextResponse>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
<contextValue>70</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>2312</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextResponse>
</appendContextElementResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<appendContextElementResponse>
<errorCode>
<code>500</code>
<reasonPhrase>Internal Error</reasonPhrase>
</errorCode>
</appendContextElementResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<statusCode>
<code>404</code>
<reasonPhrase>Context Element not found</reasonPhrase>
</statusCode>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<contextAttributeResponse>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>12</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>4837</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
<statusCode>
<code>200</code>
<reasonPhrase>OK</reasonPhrase>
</statusCode>
</contextAttributeResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextAttributeRequest>
<type>degree</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</updateContextAttributeRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<contextAttributeResponse>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
</contextAttribute>
</contextAttributeList>
<statusCode>
<code>200</code>
<reasonPhrase>OK</reasonPhrase>
</statusCode>
</contextAttributeResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<contextAttributeResponse>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
</contextAttribute>
</contextAttributeList>
<statusCode>
<code>404</code>
<reasonPhrase>Not Found</reasonPhrase>
<details>Value ID id77 not found.</details>
</statusCode>
</contextAttributeResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextAttributeRequest>
<type>degree</type>
<contextValue>10</contextValue>
</updateContextAttributeRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<contextAttributeResponse>
<contextAttributeList>
<contextAttribute>
<name>temperature</name>
<type>degree</type>
<contextValue>10</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
<contextValue>70</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>2312</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextAttributeResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<queryContextResponse>
<contextResponseList>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>degree</type>
<contextValue>6</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>Office</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
<contextValue>70</contextValue>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
</contextResponseList>
</queryContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<queryContextResponse>
<contextResponseList>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>degree</type>
<contextValue>6</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>Office</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>degree</type>
<contextValue>13</contextValue>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
</contextResponseList>
</queryContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<queryContextResponse>
<contextResponseList>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>degree</type>
<contextValue>6</contextValue>
<metadata>
<contextMetadata>
<name>ID</name>
<type>string</type>
<value>1110</value>
</contextMetadata>
</metadata>
</contextAttribute>
<contextAttribute>
<name>humidity</name>
<type>percentage</type>
<contextValue>70</contextValue>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
<contextElementResponse>
<contextElement>
<entityId type="Room" isPattern="false">
<id>Office</id>
</entityId>
<contextAttributeList>
<contextAttribute>
<name>indoorTemperature</name>
<type>degree</type>
<contextValue>13</contextValue>
</contextAttribute>
</contextAttributeList>
</contextElement>
<statusCode>
<code>200</code>
<reasonPhrase>Ok</reasonPhrase>
</statusCode>
</contextElementResponse>
</contextResponseList>
</queryContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<subscribeContextRequest>
<entityIdList>
<entityId type="Room" isPattern="false">
<id>ConferenceRoom</id>
</entityId>
</entityIdList>
<attributeList>
<attribute>temperature</attribute>
</attributeList>
<reference>127.0.0.1</reference>
<duration>P5Y</duration>
<restriction>
<attributeExpression>someXPATH</attributeExpression>
<scope>
<operationScope>
<scopeType>someScopeType</scopeType>
<scopeValue>someScopeValue</scopeValue>
</operationScope>
</scope>
</restriction>
<notifyConditions>
<notifyCondition>
<type>ONCHANGE</type>
</notifyCondition>
<throttling>P5Y</throttling>
</subscribeContextRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<subscribeContextResponse>
<subscribeError>
<subscriptionId></subscriptionId>
<errorCode>
<code>400</code>
<reasonPhrase>Subscription Error</reasonPhrase>
<details>Internal Error</details>
</errorCode>
</subscribeError>
</subscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<subscribeContextResponse>
<subscribeResponse>
<subscriptionId>123</subscriptionId>
<duration>P5Y</duration>
<throttling>P5Y</throttling>
</subscribeResponse>
</subscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextSubscriptionRequest>
<duration>P5Y</duration>
</updateContextSubscriptionRequest>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextSubscriptionResponse>
<subscribeError>
<subscriptionId>12345</subscriptionId>
<errorCode>
<code>404</code>
<reasonPhrase>Subscription ID not found</reasonPhrase>
</errorCode>
</subscribeError>
</updateContextSubscriptionResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<updateContextSubscriptionResponse>
<subscribeResponse>
<subscriptionId>12345</subscriptionId>
<duration>P5Y</duration>
<throttling>P1D</throttling>
</subscribeResponse>
</updateContextSubscriptionResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<unsubscribeContextResponse>
<subscriptionId>12345</subscriptionId>
<statusCode>
<code>200</code>
<reasonPhrase>OK</reasonPhrase>
</statusCode>
</unsubscribeContextResponse>
Headers
Content-Type: application/xml
Body
<?xml version="1.0" encoding="UTF-8"?>
<unsubscribeContextResponse>
<subscriptionId>12345</subscriptionId>
<statusCode>
<code>404</code>
<reasonPhrase>Subscription ID not found</reasonPhrase>
<details>Internal Error</details>
</statusCode>
</unsubscribeContextResponse>