Edit this page

The following pages and posts are tagged with

TitleTypeExcerpt
Conditional requests on things Page Ditto already supports Conditional Requests as defined in RFC-7232 where the If-Match and If-None-Match headers can be used to specify if a request should be applied or not. With the condition header it is possible to specify a condition based on the...
Signal enrichment Page Signals which are emitted to subscribers via WebSocket API, HTTP SSEs or established connections may be enriched by extraFields to also be included in the sent message. Events, for example, only contain the actually changed data by default, so when they are subscribed...
RQL expressions Page Ditto utilizes a subset of RQL as language for specifying queries. The RQL project page says about it: Resource Query Language (RQL) is a query language designed for use in URIs with object style data structures. […] RQL can be thought as...
AMQP 0.9.1 protocol binding Page Consume messages from AMQP 0.9.1 brokers via sources and send messages to AMQP 0.9.1 brokers via targets. Content-type When messages are sent in Ditto Protocol (as UTF-8 encoded String payload), the content-type of AMQP 0.9.1 messages must be set to: <div class="language-plaintext...
AMQP 1.0 protocol binding Page Consume messages from AMQP 1.0 endpoints via sources and send messages to AMQP 1.0 endpoints via targets. Content-type When messages are sent in Ditto Protocol (as UTF-8 encoded String payload), the content-type of AMQP 1.0 messages must be set to: <div class="language-plaintext...
HTTP 1.1 protocol binding Page Perform HTTP request (with verbs GET, POST, PUT, PATCH) to HTTP endpoints via targets. Specific connection configuration The common configuration for connections in Connections > Targets applies here as well. Following are some specifics for HTTP connections: Source format Note:...
Apache Kafka 2.x protocol binding Page Consume messages from Apache Kafka brokers via sources and send messages to Apache Kafka brokers via targets. Content-type When messages are sent in Ditto Protocol (as UTF-8 encoded String payload), the content-type of Apache Kafka messages must be set to: <div class="language-plaintext...
MQTT 3.1.1 protocol binding Page Consume messages from MQTT brokers via sources and send messages to MQTT brokers via targets. Content-type When MQTT messages are sent in Ditto Protocol, the payload should be UTF-8 encoded strings. If messages, which are not in Ditto Protocol, should be processed, a <a...
MQTT 5 protocol binding Page Consume messages from MQTT 5 brokers via sources and send messages to MQTT 5 brokers via targets. Content-type When MQTT messages are sent in Ditto Protocol, the payload should be UTF-8 encoded strings. If messages, which are not in Ditto Protocol, should be processed,...
Cloud Events HTTP protocol binding Page Implements the HTTP Protocol Binding for CloudEvents - Version 1.0. Unless mentioned otherwise, the endpoint following the Cloud Events specification for the HTTP binding in version 1.0. Cloud Events features The Cloud Events endpoint provides an alternative to the other connectivity APIs to stream data into your instance....
WebSocket protocol binding Page Ditto Protocol messages can be sent as is as WebSocket message. The Ditto Protocol JSON must be sent as UTF-8 encoded String payload. WebSocket features The WebSocket provides an alternative to the HTTP API in order to manage your digital twins. The benefits of...
Protocol bindings Page A protocol binding defines how the Ditto protocol messages are transported using a specific network protocol e.g. “Ditto Protocol over WebSocket”. The binding defines a set of rules how Ditto protocol messages are mapped to network protocol messages and back. Currently the following protocol bindings are supported: WebSocket...
Protocol examples Page The structure of the examples in this section is as follows: Command Each example always starts with a command message that initiates an operation at Ditto (e.g. create a thing, retrieve a thing). { "topic": "org.eclipse.ditto/fancy-thing/things/twin/commands/modify", <span...
Protocol overview Page The Ditto Protocol defines a JSON based text protocol for communicating with digital twins and the actual physical devices they mirror. It defines several commands both the actual device and the digital twin are able to understand. The communication pattern is defined by the Ditto protocol and shown in the...
Protocol specification for acknowledgements Page Ditto Protocol messages of acknowledgements come in 2 different protocol topic variants. Acknowledgement An acknowledgment addressing a specific acknowledgement label contains that label as last part of the topic: <namespace>/<thingName>/things/<channel>/acks/<ack-label> The Ditto Protocol representation of an Acknowledgement is specified...
Connections - Announcement protocol specification Page Note: The topic path of connection announcements contains a _ (underscore) as namespace and no channel element. See the specification for details. Connection announcements A connection announcement contains the announcement name as last part of the topic: <pre...
Protocol specification for connections Page Ditto Protocol topic structure for connections A valid topic consists of four elements, describing the connection affected by this message and the type of the message: _/<connectionId>/connections/announcements/<subject> _: empty field. connectionId: the ID of the connection. group:...
Protocol specification for errors Page Ditto Protocol messages of error responses transport information about encountered errors, e.g. client errors or server errors: The error codes Ditto provides in addition to the HTTP status code (e.g. error codes like “things:thing.tooLarge”) is not to be considered as API and must therefore not...
Policies - Announcement protocol specification Page Note: The topic path of policy commands contains no channel element. See the specification for details. Policy announcements A Policy announcement contains the announcement name as last part of the topic: <namespace>/<policyName>/policies/announcements/<announcement-name> The Ditto Protocol representation...
Policies - Create-Or-Modify protocol specification Page Create a Policy Create a Policy with the ID specified by the <namespace>/<policyName> pair in the topic and the JSON representation provided in the value. Command Field Value topic <namespace>/<policyName>/policies/commands/create path <code class="language-plaintext...
Policies - Delete protocol specification Page Delete a Policy Delete the policy identified by the <namespace>/<policyName> pair in the topic field. Command Field Value topic <namespace>/<policyName>/policies/commands/delete path / Response Field...
Policies - Retrieve protocol specification Page Note: The topic path of policy commands contains no channel element. See the specification for details. Retrieve a Policy Retrieves a Policy identified by the <namespace>/<policyName> pair in the topic field. Command Field Value...
Protocol specification for Policies Page Ditto Protocol topic structure for Policies A valid topic consists of five elements, describing the policy affected by this message and the type of the message: <namespace>/<policyName>/policies/commands/<action> namespace: the namespace of the Policy. policyName: the name of the Policy....
Streaming subscription protocol specification Page The history capabilities of the Ditto protocol consists of 3 commands and 4 events that together implement the reactive-streams protocol over any duplex transport layer. For each streaming subscription request, Ditto acts as the reactive-streams publisher of pages of historical events, and the client acts as the subscriber....
Things - Create-Or-Modify protocol specification Page All topics contain the <channel> which may be either twin or live. For the meaning of those two channels see Protocol specification. Create a Thing This command creates the thing specified by the <namespace> and <code class="language-plaintext...
Things - Delete protocol specification Page All topics contain the <channel> which may be either twin or live. For the meaning of those two channels see Protocol specification. Delete a Thing Deletes the Thing identified by the <namespace> and <thingId> in...
Things - Merge protocol specification Page All topics contain the <channel> which may be either twin or live. For the meaning of those two channels see Protocol specification. For all merge commands the value field is provided in JSON merge patch format. In...
Things - Messages protocol specification Page Messages within the Ditto Protocol allow sending, receiving and responding to Messages. They contain an arbitrary payload, so you can choose what content fits your solution best. If you want to learn more about the basic concepts of the Messages functionality, please have a look at the Messages page....
Things - Retrieve protocol specification Page All topics contain the <channel> which may be either twin or live. For the meaning of those two channels see Protocol specification. Retrieve a Thing Retrieve the Thing specified by the <namespace> and <thingId> in...
Things - Search protocol specification Page The search aspect of the Ditto protocol consists of 3 commands and 4 events that together implement the reactive-streams protocol over any duplex transport layer. For each search request, Ditto acts as the reactive-streams publisher of pages of search results, and the client acts as the subscriber. By...
Protocol specification for Things Page Ditto Protocol topic structure for Things A valid topic consists of six elements, describing the thing affected by this message and the type of the message: <namespace>/<thingName>/things/<channel>/<criterion>/<action> namespace: the namespace of the Thing. thingName: the name of the Thing....
Protocol topic Page The Ditto Protocol defines a Topic for each Protocol message having following structure: {namespace}/{entity-name}/{group}/{channel}/{criterion}/{action} Examples for valid topic paths are: org.eclipse.ditto/fancy-car-1/things/twin/commands/create org.eclipse.ditto/fancy-car-23/things/twin/commands/merge org.eclipse.ditto/fancy-car-0815/things/live/events/modified org.eclipse.ditto/fancy-car-23/things/twin/search org.eclipse.ditto/fancy-car-42/things/live/messages/hello.world org.eclipse.ditto/fancy-policy-1/policies/commands/create org.eclipse.ditto/fancy-policy-1/policies/commands/delete <code class="language-plaintext...
Protocol specification Page In order to comply with the Ditto Protocol, a protocol message must consist of a Ditto Protocol envelope (JSON) and a Ditto Protocol payload (JSON). Ditto Protocol The communication protocol envelope is implicitly defined by the underlying messaging system (e.g. WebSocket) used to transport/serialize the messages...
Protocol twin/live channel Page The Ditto Protocol furthermore covers two different communication channels to address different aspects of devices and their digital twins. Twin The first channel, twin, connects to the digital representation of a Thing. This Thing is managed with Ditto and its state and properties can be read and updated. <img...
Support conditional requests for live messages Post With the upcoming release of Eclipse Ditto version 3.1.0 it will be possible to process live messages based on conditions. Conditional live messages Ditto now supports conditional message sending based on a specified condition in the request. This functionality can be used via the HTTP API with an HTTP...
Support conditional requests for things resources Post With the upcoming release of Eclipse Ditto version 2.1.0 it will be possible to execute conditional requests on things and their sub-resources. Conditional requests for things resources Ditto now supports conditional requests on things and all of its sub-resources based on a specified condition in the request. This functionality...
Support merge functionality for things resources Post With the upcoming release of Eclipse Ditto version 2.0.0 it will be possible to merge existing things and their subresources. Merge functionality for things resources Ditto now supports merging of existing things and all of its subresources with the provided payload in the request. This can be done by...