The following pages and posts are tagged with
| Title | Type | Excerpt |
|---|---|---|
| Conditional requests on things | Page | Conditional requests let you apply commands to Things only when specific conditions about the Thing’s current state are met. TL;DR: Use the condition header with an RQL expression to make updates conditional on the Thing’s current state. You can also use If-Match/If-None-Match... |
| Signal Enrichment | Page | Signal enrichment lets you attach additional Thing data to events and messages when they are delivered to subscribers, so you get the context you need without making extra API calls. TL;DR: Use extraFields when subscribing to events or messages to include additional Thing data (like attributes... |
| RQL expressions | Page | You query Ditto using a subset of Resource Query Language (RQL) for specifying queries, filters, and conditions. TL;DR: RQL provides nestable operators like eq(), gt(), like(), and exists() combined with and(), or(), not(). Use... |
| AMQP 0.9.1 protocol binding | Page | You use the AMQP 0.9.1 binding to connect Ditto with message brokers like RabbitMQ for consuming and publishing messages. TL;DR: Configure an AMQP 0.9.1 connection with connectionType: "amqp-091". Source addresses are queue names, and target addresses use the format exchange_name/routing_key. Overview The AMQP... |
| AMQP 1.0 protocol binding | Page | You use the AMQP 1.0 binding to connect Ditto with AMQP 1.0 endpoints such as Eclipse Hono or Azure Service Bus. TL;DR: Configure an AMQP 1.0 connection with connectionType: "amqp-10". Source addresses are AMQP link names, and target addresses can be queues (queue://) or... |
| HTTP 1.1 protocol binding | Page | You use the HTTP 1.1 binding to push data from Ditto to external HTTP endpoints using GET, POST, PUT, or PATCH requests. TL;DR: Configure an HTTP connection with connectionType: "http-push". Target addresses use the format VERB:/path. HTTP connections are outbound-only – they do not... |
| Apache Kafka 2.x protocol binding | Page | You use the Kafka 2.x binding to consume messages from and publish messages to Apache Kafka brokers. TL;DR: Configure a Kafka connection with connectionType: "kafka". You must set bootstrapServers in specificConfig. Source addresses are Kafka topics, and target addresses support <code class="language-plaintext... |
| MQTT 3.1.1 protocol binding | Page | You use the MQTT 3.1.1 binding to connect Ditto with MQTT brokers for lightweight, publish-subscribe messaging. TL;DR: Configure an MQTT 3.1.1 connection with connectionType: "mqtt". Source addresses are MQTT topics (wildcards + and # allowed). Set the qos field on... |
| MQTT 5 protocol binding | Page | You use the MQTT 5 binding to connect Ditto with MQTT 5 brokers, gaining access to user-defined properties and enhanced message metadata. TL;DR: Configure an MQTT 5 connection with connectionType: "mqtt-5". Source addresses are MQTT topics (wildcards + and # allowed). MQTT... |
| Cloud Events Binding | Page | You use the Cloud Events endpoint to ingest data into Ditto using the standardized CloudEvents HTTP Protocol Binding (v1.0), enabling integration with CloudEvents-aware platforms like Knative. TL;DR: Send CloudEvents-formatted HTTP requests to /api/2/cloudevents with Ditto Protocol JSON as the payload and ditto: as... |
| WebSocket Binding | Page | You use the WebSocket binding to send Ditto Protocol messages over a persistent, duplex connection – enabling real-time change notifications, bidirectional messaging, and live device interaction. TL;DR: Connect to ws://localhost:8080/ws/2, send Ditto Protocol JSON messages, and subscribe to events, messages, or live commands using plain-text... |
| Protocol bindings | Page | A protocol binding defines how you transport Ditto Protocol messages over a specific network protocol (e.g., “Ditto Protocol over WebSocket”). TL;DR: Ditto supports seven protocol bindings – WebSocket, AMQP 1.0, AMQP 0.9.1, MQTT 3.1.1, MQTT 5, HTTP 1.1, and Kafka 2.x. Each binding maps Ditto Protocol JSON messages... |
| Protocol examples | Page | This page explains the structure of Ditto Protocol examples and provides reference samples for commands, responses, events, and acknowledgements. TL;DR: Every protocol interaction follows the pattern: send a command, receive a response (success or error), and optionally observe an event. Use correlation-id to link related messages.... |
| Protocol overview | Page | The Ditto Protocol is a JSON-based text protocol for communicating with digital twins and the physical devices they represent. TL;DR: The Ditto Protocol defines a structured JSON message format for sending commands, receiving responses, and subscribing to events on digital twins and live devices. Overview Every interaction... |
| Protocol specification for acknowledgements | Page | The Ditto Protocol represents acknowledgements in two forms: individual acknowledgements for a specific label, and aggregated acknowledgements that combine multiple results. TL;DR: A single acknowledgement targets one label (e.g., twin-persisted) and carries a status code. Aggregated acknowledgements combine multiple acks into one message, with a combined... |
| Connections - Announcement protocol specification | Page | Note: This content has been merged into the main Connections protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Protocol specification for connections | Page | The Connections specification defines the Ditto Protocol topic structure and announcements for managed connections. TL;DR: Connection announcements use the topic pattern _/connectionId/connections/announcements/subject. Ditto publishes opened and closed announcements when a connection’s state changes. Topic structure for Connections A valid topic consists... |
| Protocol specification for errors | Page | When a command fails, Ditto returns an error response containing details about what went wrong. TL;DR: Error responses follow the standard Ditto Protocol envelope format and include an HTTP-semantics status code, an error code string, a human-readable message, and an optional description with resolution hints. Overview Ditto... |
| Policies - Announcement protocol specification | Page | Note: This content has been merged into the main Policies protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Policies - Create-Or-Modify protocol specification | Page | Note: This content has been merged into the main Policies protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Policies - Delete protocol specification | Page | Note: This content has been merged into the main Policies protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Policies - Retrieve protocol specification | Page | Note: This content has been merged into the main Policies protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Protocol specification for Policies | Page | The Policies specification defines all Ditto Protocol commands, responses, and announcements for managing Policies and their sub-resources (entries, subjects, resources, imports). TL;DR: Policy commands use the topic pattern namespace/policyName/policies/commands/action with no channel segment. You can create, modify, retrieve, and delete Policies, entries, subjects, resources, and imports.... |
| Streaming subscription protocol specification | Page | The streaming subscription protocol lets you stream historical persisted events for Things and Policies using a reactive-streams-based flow. TL;DR: Send a subscribeForPersistedEvents command to start streaming historical events, use request to pull items, and cancel to stop early. Ditto responds with <code... |
| Things - Create-Or-Modify protocol specification | Page | Note: This content has been merged into the main Things protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Things - Delete protocol specification | Page | Note: This content has been merged into the main Things protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Things - Merge protocol specification | Page | Note: This content has been merged into the main Things protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Things - Messages protocol specification | Page | The Messages protocol lets you send, receive, and respond to custom messages between applications and devices through Ditto. TL;DR: Messages carry arbitrary payloads over the live channel. You address them to a Thing’s inbox (sending to a device) or outbox (sending from a device), and correlate request/response pairs... |
| Things - Retrieve protocol specification | Page | Note: This content has been merged into the main Things protocol specification. Please refer to that page for the complete and up-to-date reference. |
| Things - Search protocol specification | Page | The search protocol lets you query across all digital twins using a reactive-streams-based flow of paginated results. TL;DR: Send a subscribe command to start a search, then use request to pull pages of results and cancel to stop early. Ditto responds with... |
| Protocol specification for Things | Page | The Things specification defines all Ditto Protocol commands, responses, and events for managing Things and their sub-resources (attributes, features, properties, definitions). TL;DR: You interact with Things through four command types – create/modify, merge, retrieve, and delete – each targeting the Thing itself or any sub-resource. All commands use... |
| Protocol topic | Page | Every Ditto Protocol message includes a topic string that identifies the target entity, the communication channel, and the intent of the message. TL;DR: The topic path determines routing and authorization — Ditto uses it to resolve the target entity, select twin or live processing, and dispatch the correct... |
| Protocol specification | Page | Every Ditto Protocol message consists of a JSON envelope and a JSON payload that together describe what action to perform on which entity. TL;DR: A Ditto Protocol message is a JSON object with topic, headers, path, and value fields. The... |
| Protocol twin/live channel | Page | The Ditto Protocol supports two communication channels that address different aspects of devices and their digital twins. TL;DR: Use the twin channel to read/write the server-side digital twin. Use the live channel to communicate directly with the actual device. Policy commands use neither channel. Overview When you... |
| 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... |