Implementation Requirements
Each article defining a namespace and its interfaces list requirements for implementations. These requirements are also summarized on this page, with references to the articles where they are described.
Client ↔ Client Interfaces
Following requirements apply to interfaces between XMPP clients.
Sensor Data
The Sensor Data namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. Both the Sensor Client and Sensor Server entities are XMPP clients. The Sensor Data namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between sensor clients and sensor servers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Sensor Client | Sensor Server |
req |
iq get |
⇒ | Required |
accepted |
iq result |
Required¹ | ⇐ |
started |
iq result |
Required² | ⇐ |
message |
Required³ | ⇐ | |
resp |
iq result |
Required4 | ⇐ |
message |
Required5 | ⇐ | |
cancel |
iq set |
⇒ | Required |
done |
message |
Required6 | ⇐ |
A sensor server can choose to start readout at a later time, and returning the
acceptedelement in the response, to let the client know the request has been received and been accepted, but the sensor data readout has not yet started.A sensor server can choose to return the
startedelement in the response, to let the client know the request has been accepted, and that the sensor data readout has started, but there are yet no data to return.If the sensor server responded to the request with an
acceptedresponse, it sends thestartedelement in a message stanza, when the readout starts.The sensor server can choose to return sensor data directly in the response to the request, by returning a
respelement in theiq resultstanza. This means the request has been accepted, the readout has started, and sensor data is being returned. The sensor data does not have to be complete, and further data can be sent in subsequent message stanzas. This is indicated using amoreattribute on therespelement.If the sensor server has responded to the request using any of the
accepted,startedorrespelements, any further sensor data reported is sent in separate message stanzas. Any of therespelements without amoreattribute having valuetrueindicates that the readout is complete.If the sensor server has indicated that more information is to be sent (either by returning
acceptedorstartedin the response, but not included anyrespmessages, or by sending anrespin a message, with amoreattribute set totrue), but there is no more sensor data to report, adoneelement is sent in a message to conclude the readout.
Event Subscription
The Event Subscription namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. Both the Sensor Client and Sensor Server entities are XMPP clients. The Sensor Data Event Subscription namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between sensor clients and sensor servers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Sensor Client | Sensor Server |
subscribe |
iq set |
⇒ | Required |
unsubscribe |
iq set |
⇒ | Required |
Actuator Control
The Control namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. Both the Control Client and Control Server entities are XMPP clients. The Control namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between control clients and control servers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Control Client | Control Server |
set |
iq set |
⇒ | Required |
getForm |
iq get |
⇒ | Required |
Harmonized Interfaces
The harmonized interfaces namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. Both the Client Entity and Server Entity entities are XMPP clients. The harmonized interfaces namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between entity clients.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Entity Client | Entity Server |
getInterfaces |
iq get |
⇒ | Required |
Peer-to-Peer Communication
The Peer-to-Peer communication namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. All Peers are XMPP clients. The Peer-to-Peer communication namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between peers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Peer | Peer |
p2p |
presence |
⇒ | Optional |
End-to-End Encryption
The End-to-End encryption namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. All Peers are XMPP clients. The End-to-End encryption namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between peers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Peer | Peer |
e2e |
presence |
⇒ | Optional |
aes |
Any | ⇒ | Required¹ |
cha |
Any | ⇒ | Required¹ |
acp |
Any | ⇒ | Required¹ |
synchE2e |
iq set |
⇒ | Required |
Required, if the
e2epresence element is available in the client’s online presence.
Concentrators
The Concentrator namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. Both the Concentrator Client and Concentrator Server entities are XMPP clients. The Concentrator namespace is primarily intended for connected clients. The broker is only involved in routing stanzas between concentrator clients and concentrator servers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Concentrator Client | Concentrator Server |
getCapabilities |
iq get |
⇒ | Required |
getAllDataSources |
iq get |
⇒ | Optional¹ |
getRootDataSources |
iq get |
⇒ | Optional¹ |
getChildDataSources |
iq get |
⇒ | Optional¹ |
containsNode |
iq get |
⇒ | Optional¹ |
containsNodes |
iq get |
⇒ | Optional¹ |
getNode |
iq get |
⇒ | Optional¹ |
getNodes |
iq get |
⇒ | Optional¹ |
getAllNodes |
iq get |
⇒ | Optional¹ |
getNodeInheritance |
iq get |
⇒ | Optional¹ |
getRootNodes |
iq get |
⇒ | Optional¹ |
getChildNodes |
iq get |
⇒ | Optional¹ |
getAncestors |
iq get |
⇒ | Optional¹ |
getNodeParametersForEdit |
iq get |
⇒ | Optional¹ |
setNodeParametersAfterEdit |
iq set |
⇒ | Optional¹ |
getCommonNodeParametersForEdit |
iq get |
⇒ | Optional¹ |
setCommonNodeParametersAfterEdit |
iq set |
⇒ | Optional¹ |
getAddableNodeTypes |
iq get |
⇒ | Optional¹ |
getParametersForNewNode |
iq get |
⇒ | Optional¹ |
createNewNode |
iq set |
⇒ | Optional¹ |
destroyNode |
iq set |
⇒ | Optional¹ |
moveNodeUp |
iq set |
⇒ | Optional¹ |
moveNodeDown |
iq set |
⇒ | Optional¹ |
moveNodesUp |
iq set |
⇒ | Optional¹ |
moveNodesDown |
iq set |
⇒ | Optional¹ |
subscribe |
iq set |
⇒ | Optional¹ |
unsubscribe |
iq set |
⇒ | Optional¹ |
nodeAdded |
message |
Optional | ⇐ |
nodeUpdated |
message |
Optional | ⇐ |
nodeStatusChanged |
message |
Optional | ⇐ |
nodeRemoved |
message |
Optional | ⇐ |
nodeMovedUp |
message |
Optional | ⇐ |
nodeMovedDown |
message |
Optional | ⇐ |
getNodeCommands |
iq get |
⇒ | Optional¹ |
getCommandParameters |
iq get |
⇒ | Optional¹ |
executeNodeCommand |
iq set |
⇒ | Optional² |
executeNodeQuery |
iq set |
⇒ | Optional³ |
getCommonNodeCommands |
iq get |
⇒ | Optional¹ |
getCommonCommandParameters |
iq get |
⇒ | Optional¹ |
executeCommonNodeCommand |
iq set |
⇒ | Optional4 |
executeCommonNodeQuery |
iq set |
⇒ | Optional5 |
abortNodeQuery |
iq set |
⇒ | Optional³ |
abortCommonNodeQuery |
iq set |
⇒ | Optional5 |
queryProgress |
message |
Optional6 | ⇐ |
queryStarted |
message |
Optional6 | ⇐ |
queryDone |
message |
Optional6 | ⇐ |
queryAborted |
message |
Optional6 | ⇐ |
newTable |
message |
Optional6 | ⇐ |
newRecords |
message |
Optional6 | ⇐ |
tableDone |
message |
Optional6 | ⇐ |
newObject |
message |
Optional6 | ⇐ |
queryMessage |
message |
Optional6 | ⇐ |
title |
message |
Optional6 | ⇐ |
status |
message |
Optional6 | ⇐ |
beginSection |
message |
Optional6 | ⇐ |
endSection |
message |
Optional6 | ⇐ |
registerSniffer |
iq set |
⇒ | Optional¹ |
unregisterSniffer |
iq set |
⇒ | Optional¹ |
sniff |
message |
Optional7 | ⇐ |
Optional to implement, depending on concentrator capabilities, which the concentrator server defines in the response to the
getCapabilitiesrequest.Needs to be implenented if the
getNodeCommandsoperation returns commands that can be executed and which are not queries.Needs to be implenented if the
getNodeCommandsoperation returns queries that can be executed.Needs to be implenented if the
getCommonNodeCommandsoperation returns commands that can be executed and which are not queries.Needs to be implenented if the
getCommonNodeCommandsoperation returns queries that can be executed.Requires implementation if client executes node queries on the concentrator server.
Requires implementation if client registers sniffers on the concentrator server.
Client ↔ Broker Interfaces
Following requirements apply to interfaces between XMPP clients and XMPP brokers or components.
Tokens for distributed transactions
The Tokens namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client requesting to create a token is assumed to be an XMPP Client, and the Service Component an XMPP Component on the broker the client is connected to. Third party entities can be any connected XMPP entity, a client, component or broker.
| Namespace elements | ||||
|---|---|---|---|---|
| Element | Stanza Type | Client | Service Component | Entity |
getToken |
iq get |
⇒ | Required | |
getTokenChallenge |
iq result |
Required | ⇐ | |
getTokenChallengeResponse |
iq get |
⇒ | Required | |
getTokenResponse |
iq result |
Required | ⇐ | |
getCertificate |
iq get |
Required | ⇐ | |
certificate |
iq result |
⇒ | Required | |
tokenChallenge |
iq get |
Required | ⇐ | |
tokenChallengeResponse |
iq result |
⇒ | Required | |
Decision Support
The Decision Support namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Client, and the Service Component an XMPP Component on the broker the client is connected to.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Client | Service Component |
isFriend |
iq get |
⇒ | Required |
isFriendResponse |
iq result |
Required | ⇐ |
canRead |
iq get |
⇒ | Required |
canReadResponse |
iq result |
Required | ⇐ |
canControl |
iq get |
⇒ | Required |
canControlResponse |
iq result |
Required | ⇐ |
clearCache |
iq set |
Required | ⇐ |
unfriend |
message |
Optional | ⇐ |
friend |
message |
Optional | ⇐ |
Provisioning for Owners
The Provisioning namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Client, and the Service Component an XMPP Component on the broker the client is connected to.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Client | Service Component |
isFriend |
message |
Required | ⇐ |
isFriendRule |
message |
⇒ | Required |
canRead |
message |
Required | ⇐ |
canReadResponse |
message |
⇒ | Required |
canControl |
message |
Required | ⇐ |
canControlResponse |
message |
⇒ | Required |
clearCache |
message |
⇒ | Required |
getDevices |
iq get |
⇒ | Required |
deleteRules |
iq set |
⇒ | Required |
Discovery
The Discovery namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Clients (either owners, devices, or applications), and the Service Component an XMPP Component on a broker, not necessarily the same broker as the client is connected to (depends on element).
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Client | Service Component |
register |
iq set |
⇒ | Required |
mine |
iq set |
⇒ | Required |
update |
iq set |
⇒ | Required |
claimed |
iq set |
Required | ⇐ |
remove |
iq set |
⇒ | Required |
removed |
iq set |
Required | ⇐ |
unregister |
iq set |
⇒ | Required |
disown |
iq set |
⇒ | Required |
disowned |
iq set |
Required | ⇐ |
search |
iq get |
⇒ | Required |
found |
iq result |
Required | ⇐ |
Software Updates
The Software updates namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Client, and the Service Component an XMPP Component on the broker the client is connected to. The broker itself can also be an XMPP client to a parent broker from which it receives software updates.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Client | Service Component |
getPackageInfo |
iq get |
⇒ | Required |
packageInfo |
iq result |
Required | ⇐ |
getPackages |
iq get |
⇒ | Required |
packages |
iq result |
Required | ⇐ |
subscribe |
iq set |
⇒ | Required |
unsubscribe |
iq set |
⇒ | Required |
packageInfo |
message |
Required | ⇐ |
packageDeleted |
message |
Required | ⇐ |
getSubscriptions |
iq get |
⇒ | Required |
subscriptions |
iq result |
Required | ⇐ |
Real-time Geo-spatial information
The Geo-spatial namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Client, and the Service Component an XMPP Component.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Client | Service Component |
subscribe |
iq set |
⇒ | Required |
subscribed |
iq result |
Required | ⇐ |
unsubscribe |
iq set |
⇒ | Required |
unsubscribed |
iq result |
Required | ⇐ |
publish |
iq set |
⇒ | Required |
published |
iq result |
Required | ⇐ |
delete |
iq set |
⇒ | Required |
deleted |
iq result |
Required | ⇐ |
search |
iq get |
⇒ | Required |
references |
iq result |
Required | ⇐ |
added |
message |
Required | ⇐ |
updated |
message |
Required | ⇐ |
removed |
message |
Required | ⇐ |
Legal Identities
The Legal Identities namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Client, and the Service Component an XMPP Component on the broker the client is connected to.
| Namespace elements | ||||
|---|---|---|---|---|
| Element | Stanza Type | Client | Service Component | External Broker |
getPublicKey |
iq get |
⇒ | Required | |
publicKey |
iq result |
Required | ⇐ | |
applicationAttributes |
iq get |
⇒ | Required | |
apply |
iq set |
⇒ | Required | |
identity |
iq result |
Required | ⇐ | |
getLegalIdentities |
iq get |
⇒ | Required | |
identities |
iq result |
Required | ⇐ | |
getLegalIdentity |
iq get |
⇒ | Required | |
validateSignature |
iq get |
⇒ | Required | |
obsoleteLegalIdentity |
iq set |
⇒ | Required | |
compromisedLegalIdentity |
iq set |
⇒ | Required | |
petitionIdentity |
iq set |
⇒ | Required | |
petitionIdentityMsg |
message |
Required | ⇐ | |
petitionIdentityResponse |
iq set |
⇒ | Required | |
petitionIdentityResponseMsg |
message |
Required | ⇐ | |
petitionSignature |
iq set |
⇒ | Required | |
petitionSignatureMsg |
message |
Required | ⇐ | |
petitionSignatureResponse |
iq set |
⇒ | Required | |
petitionSignatureResponseMsg |
message |
Required | ⇐ | |
addAttachment |
iq set |
⇒ | Required | |
removeAttachment |
iq set |
⇒ | Required | |
authorizeAccess |
iq set |
⇒ | Required | |
getNetworkIdentity |
iq get |
Required | ⇐ | |
reviewIdProviders |
iq get |
⇒ | Required | |
selectReviewService |
iq set |
⇒ | Required | |
readyForApproval |
iq set |
⇒ | Required | |
clientMessage |
message |
Optional | ⇐ | |
identityReview |
message |
Required | ⇐ | |
getTrustChain |
iq get |
⇒ | Required | |
trustChain |
iq result |
Required | ⇐ | |
Smart Contracts
The Smart Contracts namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the service component’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. The Client making the requests is assumed to be an XMPP Client, and the Service Component an XMPP Component on the broker the client is connected to.
| Namespace elements | ||||
|---|---|---|---|---|
| Element | Stanza Type | Client | Service Component | External Component |
createContract |
iq set |
⇒ | Required | |
contract |
iq result |
Required | ⇐ | |
signContract |
iq set |
⇒ | Required | |
contractSigned |
message |
Required | ⇐ | |
getCreatedContracts |
iq get |
⇒ | Required | |
getSignedContracts |
iq get |
⇒ | Required | |
getContract |
iq get |
⇒ | Required | |
getContracts |
iq get |
⇒ | Required | |
contractReferences |
iq result |
Required | ⇐ | |
contracts |
iq result |
Required | ⇐ | |
isPart |
iq get |
⇒ | Required | |
part |
iq result |
Required | ⇐ | |
obsoleteContract |
iq set |
⇒ | Required | |
deleteContract |
iq set |
⇒ | Required | |
contractCreated |
message |
Required | ⇐ | |
contractUpdated |
message |
Required | ⇐ | |
contractDeleted |
message |
Required | ⇐ | |
updateContract |
iq set |
⇒ | Required | |
getSchemas |
iq get |
⇒ | Required | |
schemas |
iq result |
Required | ⇐ | |
getSchema |
iq get |
⇒ | Required | |
schema |
iq result |
Required | ⇐ | |
getLegalIdentities |
iq get |
⇒ | Required | |
getNetworkIdentities |
iq get |
⇒ | Required | |
networkIdentities |
iq result |
Required | ⇐ | |
searchPublicContracts |
iq get |
⇒ | Required | |
searchResult |
iq result |
Required | ⇐ | |
petitionContract |
iq set |
⇒ | Required | |
petitionContractMsg |
message |
Required | ⇐ | |
petitionContractResponse |
iq set |
⇒ | Required | |
petitionContractResponseMsg |
message |
Required | ⇐ | |
addAttachment |
iq set |
⇒ | Required | |
removeAttachment |
iq set |
⇒ | Required | |
contractProposal |
message |
Required | ⇐ | |
failContract |
message |
Required | ⇐ | |
Mixed Interfaces
Following requirements apply to interfaces that may be between any connected XMPP entities, being clients, brokers or components.
Clock Synchronization
The Clock-Synchronization namespace defines the following elements that can be sent in stanzas. The following table lists the elements, the type of stanza used, the entities that can or need to handle incoming stanzas containing the corresponding element, as well as implementation requirements, if the namespace is present in the device’s XEP-0030 Service Discovery response. Elements associated with any response stanzas are assumed to be implemented by the entity making the corresponding request. Entities can be XMPP clients, components or brokers.
| Namespace elements | |||
|---|---|---|---|
| Element | Stanza Type | Entity | Entity |
req |
iq get |
⇒ | Required |
resp |
iq result |
Required | ⇐ |
sourceReq |
iq get |
⇒ | Required |
sourceResp |
iq result |
Required | ⇐ |