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
  1. A sensor server can choose to start readout at a later time, and returning the accepted element 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.

  2. A sensor server can choose to return the started element 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.

  3. If the sensor server responded to the request with an accepted response, it sends the started element in a message stanza, when the readout starts.

  4. The sensor server can choose to return sensor data directly in the response to the request, by returning a resp element in the iq result stanza. 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 a more attribute on the resp element.

  5. If the sensor server has responded to the request using any of the accepted, started or resp elements, any further sensor data reported is sent in separate message stanzas. Any of the resp elements without a more attribute having value true indicates that the readout is complete.

  6. If the sensor server has indicated that more information is to be sent (either by returning accepted or started in the response, but not included any resp messages, or by sending an resp in a message, with a more attribute set to true), but there is no more sensor data to report, a done element 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
  1. Required, if the e2e presence 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
  1. Optional to implement, depending on concentrator capabilities, which the concentrator server defines in the response to the getCapabilities request.

  2. Needs to be implenented if the getNodeCommands operation returns commands that can be executed and which are not queries.

  3. Needs to be implenented if the getNodeCommands operation returns queries that can be executed.

  4. Needs to be implenented if the getCommonNodeCommands operation returns commands that can be executed and which are not queries.

  5. Needs to be implenented if the getCommonNodeCommands operation returns queries that can be executed.

  6. Requires implementation if client executes node queries on the concentrator server.

  7. 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