|  | <!DOCTYPE html> | 
|  | <html> | 
|  | <head> | 
|  | <meta charset="utf-8"> | 
|  | <meta http-equiv="X-UA-Compatible" content="IE=edge"> | 
|  | <meta name="viewport" content="width=device-width, initial-scale=1"> | 
|  | <meta name="description" content=""> | 
|  | <meta name="keywords" content="model,  router, content-type, correlation-id, feature, message, payload, thing"> | 
|  | <title>  Messages • Eclipse Ditto™ • a digital twin framework</title> | 
|  |  | 
|  | <link rel="stylesheet" href="css/syntax.css"> | 
|  | <link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" crossorigin="anonymous"> | 
|  | <link rel="stylesheet" href="css/modern-business.css"> | 
|  | <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/css/bootstrap.min.css" crossorigin="anonymous"> | 
|  | <link rel="stylesheet" href="css/customstyles.css"> | 
|  | <link rel="stylesheet" href="css/boxshadowproperties.css"> | 
|  | <link rel="stylesheet" href="css/theme-ditto.css"> | 
|  | <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700"> | 
|  |  | 
|  | <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js" crossorigin="anonymous"></script> | 
|  | <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.7/js/bootstrap.min.js" crossorigin="anonymous"></script> | 
|  | <script src="//cdnjs.cloudflare.com/ajax/libs/anchor-js/2.0.0/anchor.min.js" crossorigin="anonymous"></script> | 
|  | <script src="js/toc.js"></script> | 
|  | <script src="js/customscripts.js"></script> | 
|  |  | 
|  | <script type="application/ld+json"> | 
|  | { | 
|  | "@context": "http://schema.org", | 
|  | "@type": "Organization", | 
|  | "url": "https://eclipse.org/ditto/", | 
|  | "logo": "https://eclipse.org/ditto/images/ditto.svg" | 
|  | } | 
|  | </script> | 
|  |  | 
|  | <link rel="icon" type="image/png" href="images/favicon-16x16.png" sizes="16x16"> | 
|  | <link rel="icon" type="image/png" href="images/favicon-32x32.png" sizes="32x32"> | 
|  | <link rel="icon" type="image/png" href="images/favicon-96x96.png" sizes="96x96"> | 
|  |  | 
|  | <link rel="alternate" type="application/rss+xml" title="Eclipse Ditto Blog" href="https://www.eclipse.org/ditto/feed.xml"> | 
|  |  | 
|  | <!-- Eclipse Foundation cookie consent: --> | 
|  | <link rel="stylesheet" type="text/css" href="//www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css" /> | 
|  | <script src="//www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script> | 
|  |  | 
|  | <script> | 
|  | $(document).ready(function() { | 
|  | $("#tg-sb-link").click(function() { | 
|  | $("#tg-sb-sidebar").toggle(); | 
|  | $("#tg-sb-content").toggleClass('col-md-9'); | 
|  | $("#tg-sb-content").toggleClass('col-md-12'); | 
|  | $("#tg-sb-icon").toggleClass('fa-toggle-on'); | 
|  | $("#tg-sb-icon").toggleClass('fa-toggle-off'); | 
|  | }); | 
|  | }); | 
|  | </script> | 
|  | </head> | 
|  |  | 
|  |  | 
|  | <script> | 
|  | (function(w,d,s,l,i){ | 
|  | w[l]=w[l]||[]; | 
|  | w[l].push({'gtm.start': | 
|  | new Date().getTime(),event:'gtm.js'}); | 
|  | var f=d.getElementsByTagName(s)[0], | 
|  | j=d.createElement(s), | 
|  | dl=l!='dataLayer'?'&l='+l:''; | 
|  | j.async=true; | 
|  | j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl; | 
|  | f.parentNode.insertBefore(j,f); | 
|  | })(window,document,'script','dataLayer','GTM-5WLCZXC'); | 
|  | </script> | 
|  |  | 
|  |  | 
|  |  | 
|  | <body> | 
|  | <!-- Navigation --> | 
|  | <nav class="navbar navbar-inverse navbar-fixed-top"> | 
|  | <div class="container topnavlinks"> | 
|  | <div class="navbar-header"> | 
|  | <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1"> | 
|  | <span class="sr-only">Toggle navigation</span> | 
|  | <span class="icon-bar"></span> | 
|  | <span class="icon-bar"></span> | 
|  | <span class="icon-bar"></span> | 
|  | </button> | 
|  | <a class="navbar-ditto-home" href="index.html"> <img src="images/ditto_allwhite_symbolonly.svg" class="ditto-navbar-symbol" alt="Home"> <img src="images/ditto_allwhite_textonly.svg" class="ditto-navbar-symbol-text" alt="Eclipse Ditto™"></a> | 
|  | </div> | 
|  | <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> | 
|  | <ul class="nav navbar-nav navbar-right"> | 
|  | <!-- toggle sidebar button --> | 
|  | <!--<li><a id="tg-sb-link" href="#"><i id="tg-sb-icon" class="fa fa-toggle-on"></i> Nav</a></li>--> | 
|  | <!-- entries without drop-downs appear here --> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="blog.html">Blog</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="intro-overview.html">Documentation</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="http-api-doc.html">HTTP API</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="sandbox.html">Sandbox</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://github.com/eclipse/ditto" target="_blank"> | 
|  | <img src="images/GitHub-Mark-Light-32px.png" alt="Sources at GitHub"> | 
|  | </a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://github.com/eclipse/ditto-clients" target="_blank"> | 
|  | <img src="images/GitHub-Mark-Light-32px.png" alt="SDK sources at GitHub">SDKs | 
|  | </a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://github.com/eclipse/ditto-examples" target="_blank"> | 
|  | <img src="images/GitHub-Mark-Light-32px.png" alt="Example sources at GitHub">examples | 
|  | </a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <!-- entries with drop-downs appear here --> | 
|  | <!-- conditional logic to control which topnav appears for the audience defined in the configuration file.--> | 
|  |  | 
|  |  | 
|  | <li class="dropdown"> | 
|  | <a href="#" class="dropdown-toggle" data-toggle="dropdown">Links<b class="caret"></b></a> | 
|  | <ul class="dropdown-menu"> | 
|  |  | 
|  |  | 
|  | <li><a href="https://projects.eclipse.org/projects/iot.ditto" target="_blank">Eclipse Ditto Project</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://www.eclipse.org/forums/index.php/f/364/" target="_blank">Forum</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://ci.eclipse.org/ditto/" target="_blank">Jenkins</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://dev.eclipse.org/mhonarc/lists/ditto-dev/" target="_blank">Mailing list archives</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="https://gitter.im/eclipse/ditto" target="_blank">Gitter.im chat</a></li> | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <!--comment out this block if you want to hide search--> | 
|  | <li> | 
|  | <!--start search--> | 
|  | <div id="search-demo-container"> | 
|  | <input type="text" id="search-input" placeholder="search..."> | 
|  | <ul id="results-container"></ul> | 
|  | </div> | 
|  | <script src="//cdnjs.cloudflare.com/ajax/libs/simple-jekyll-search/0.0.9/jekyll-search.js" type="text/javascript"></script> | 
|  | <script type="text/javascript"> | 
|  | SimpleJekyllSearch.init({ | 
|  | searchInput: document.getElementById('search-input'), | 
|  | resultsContainer: document.getElementById('results-container'), | 
|  | dataSource: 'search.json', | 
|  | searchResultTemplate: '<li><a href="{url}" title="Messages">{title}</a></li>', | 
|  | noResultsText: 'No results found.', | 
|  | limit: 10, | 
|  | fuzzy: true, | 
|  | }) | 
|  | </script> | 
|  | <!--end search--> | 
|  | </li> | 
|  | </ul> | 
|  | </div> | 
|  | </div> | 
|  | <!-- /.container --> | 
|  | </nav> | 
|  |  | 
|  | <!-- Page Content --> | 
|  | <div class="container"> | 
|  | <div id="main"> | 
|  | <!-- Content Row --> | 
|  | <div class="row"> | 
|  |  | 
|  |  | 
|  | <!-- Sidebar Column --> | 
|  | <div class="col-md-3" id="tg-sb-sidebar"> | 
|  |  | 
|  |  | 
|  | <ul id="mysidebar" class="nav"> | 
|  | <li class="sidebarTitle"> | 
|  | <label for="docVersion">Eclipse Ditto™ version:</label> | 
|  | <div class="select-wrapper"> | 
|  | <select id="docVersion" name="docVersion"> | 
|  |  | 
|  | <option value="">development</option> | 
|  |  | 
|  | <option value="1.0">1.0</option> | 
|  |  | 
|  | <option value="1.1">1.1</option> | 
|  |  | 
|  | <option value="1.2">1.2</option> | 
|  |  | 
|  | <option value="1.3">1.3</option> | 
|  |  | 
|  | <option value="1.4">1.4</option> | 
|  |  | 
|  | <option value="1.5">1.5</option> | 
|  |  | 
|  | </select> | 
|  | </div> | 
|  | <div id="dev-warning"> | 
|  | <div markdown="span" class="alert alert-warning" role="alert" style="font-size:0.6em"><i class="fa fa-warning"></i> <b>Important:</b> This documentation reflects the latest 'development'. You might want to choose a released version.</div> | 
|  | </div> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Introduction</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="intro-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="intro-digitaltwins.html">Digital twins</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="intro-hello-world.html">Hello world</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Release Notes</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_151.html">1.5.1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_150.html">1.5.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_140.html">1.4.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Archive</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_130.html">1.3.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_121.html">1.2.1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_120.html">1.2.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_115.html">1.1.5</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_113.html">1.1.3</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_112.html">1.1.2</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_111.html">1.1.1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_110.html">1.1.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_100.html">1.0.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_090.html">0.9.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_080.html">0.8.0</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_100-M2.html">1.0.0-M2</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_100-M1a.html">1.0.0-M1a</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_090-M2.html">0.9.0-M2</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_090-M1.html">0.9.0-M1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_080-M3.html">0.8.0-M3</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_080-M2.html">0.8.0-M2</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_080-M1.html">0.8.0-M1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_030-M2.html">0.3.0-M2</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_030-M1.html">0.3.0-M1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_020-M1.html">0.2.0-M1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_010-M3.html">0.1.0-M3</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="release_notes_010-M1.html">0.1.0-M1</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Installation</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="installation-building.html">Building Ditto</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="installation-running.html">Running Ditto</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="installation-operating.html">Operating Ditto</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Basic concepts</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Model entities</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-thing.html">Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-acl.html">Access Control List (ACL)</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-feature.html">Feature</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-policy.html">Policy</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-namespaces-and-names.html">Namespaces and Names</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-metadata.html">Thing Metadata</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-errors.html">Errors</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-auth.html">Authentication and Authorization</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="active"><a href="basic-messages.html">Messages</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-signals.html">Signals</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Signal types</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-signals-command.html">Command</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-signals-commandresponse.html">Command response</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-signals-errorresponse.html">Error response</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-signals-event.html">Event</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-signals-announcement.html">Announcement</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-apis.html">APIs</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-connections.html">Connections</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-placeholders.html">Placeholders</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-changenotifications.html">Change notifications</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-rql.html">RQL expressions</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-enrichment.html">Signal enrichment</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-search.html">Search</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="basic-acknowledgements.html">Acknowledgements / QoS</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Advanced concepts</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="advanced-data-by-pass.html">Data By-Pass</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Architecture</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Services</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-services-policies.html">Policies</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-services-things.html">Things</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-services-things-search.html">Things-Search</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-services-connectivity.html">Connectivity</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-services-concierge.html">Concierge</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="architecture-services-gateway.html">Gateway</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>HTTP API</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-concepts.html">Concepts</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-search.html">Search</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-messages.html">Messages</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-protocol-bindings-websocket.html">WebSocket protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-protocol-bindings-cloudevents.html">Cloud Events HTTP protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="httpapi-sse.html">Server sent events</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Connectivity API</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-manage-connections.html">Manage connections</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-protocol-bindings-amqp091.html">AMQP 0.9.1 protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-protocol-bindings-amqp10.html">AMQP 1.0 protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-protocol-bindings-mqtt.html">MQTT 3.1.1 protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-protocol-bindings-mqtt5.html">MQTT 5 protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-protocol-bindings-http.html">HTTP 1.1 protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-protocol-bindings-kafka2.html">Kafka 2.x protocol binding</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-mapping.html">Payload mapping</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-header-mapping.html">Header mapping</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-tls-certificates.html">TLS certificates</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="connectivity-ssh-tunneling.html">SSH tunneling</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Client SDK</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="client-sdk-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="client-sdk-java.html">Java</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="client-sdk-javascript.html">JavaScript</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>Ditto Protocol</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-overview.html">Overview</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-twinlive.html">Twin/live channel</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification.html">Specification</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-topic.html">Protocol topic</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things.html">Things group</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>→ commands/events</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things-create-or-modify.html">Create/Modify</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things-merge.html">Merge</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things-retrieve.html">Retrieve</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things-delete.html">Delete</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-acks.html">Acknowledgements</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-errors.html">Errors</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>→ search/messages</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things-search.html">Search</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-things-messages.html">Messages</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-policies.html">Policies group</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>→ commands/events</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-policies-create-or-modify.html">Create/Modify</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-policies-retrieve.html">Retrieve</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-policies-delete.html">Delete</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-specification-policies-announcement.html">Announcement</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-bindings.html">Bindings</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples.html">Examples</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>→ Things examples</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-creatething.html">Create a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletething.html">Delete a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifything.html">Modify a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievething.html">Retrieve a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievethings.html">Retrieve multiple Things</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifypolicyid.html">Modify the Policy ID of a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createattributes.html">Create Attributes</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deleteattributes.html">Delete Attributes</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifyattributes.html">Modify Attributes</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrieveattributes.html">Retrieve Attributes</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createattribute.html">Create a single Attribute</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deleteattribute.html">Delete a single Attribute</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifyattribute.html">Modify a single Attribute</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrieveattribute.html">Retrieve a single Attribute</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createthingdefinition.html">Create a Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletethingdefinition.html">Delete a Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifythingdefinition.html">Modify a Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievethingdefinition.html">Retrieve a Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createfeatures.html">Create Features</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletefeatures.html">Delete Features</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifyfeatures.html">Modify Features</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievefeatures.html">Retrieve Features</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createfeature.html">Create a single Feature</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletefeature.html">Delete a single Feature</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifyfeature.html">Modify a single Feature</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievefeature.html">Retrieve a single Feature</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createdefinition.html">Create Feature Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletedefinition.html">Delete Feature Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifydefinition.html">Modify Feature Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievedefinition.html">Retrieve Feature Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createproperties.html">Create Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deleteproperties.html">Delete Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifyproperties.html">Modify Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrieveproperties.html">Retrieve Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createproperty.html">Create a single Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deleteproperty.html">Delete a single Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifyproperty.html">Modify a single Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrieveproperty.html">Retrieve a single Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createdesiredproperties.html">Create desired Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletedesiredproperties.html">Delete desired Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifydesiredproperties.html">Modify desired Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievedesiredproperties.html">Retrieve desired Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-createdesiredproperty.html">Create a single desired Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-deletedesiredproperty.html">Delete a single desired Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-modifydesiredproperty.html">Modify a single desired Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-retrievedesiredproperty.html">Retrieve a single desired Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-errorresponses.html">Error responses</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>→ Things merge examples</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergething.html">Merge a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergepolicyid.html">Merge the Policy ID of a Thing</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergeattributes.html">Merge Attributes</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergeattribute.html">Merge a single Attribute</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergethingdefinition.html">Merge a Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergefeatures.html">Merge Features</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergefeature.html">Merge a single Feature</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergefeaturedefinition.html">Merge Feature Definition</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergeproperties.html">Merge Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergeproperty.html">Merge a single Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergedesiredproperties.html">Merge desired Feature Properties</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-mergedesiredproperty.html">Merge a single desired Property</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-errorresponses.html">Error responses</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li class="subfolders"> | 
|  | <a href="#"><span></span>→ Policies examples</a> | 
|  | <ul> | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-createpolicy.html">Create a Policy</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-deletepolicy.html">Delete a Policy</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifypolicy.html">Modify a Policy</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrievepolicy.html">Retrieve a Policy</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifypolicyentries.html">Modify entries</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrievepolicyentries.html">Retrieve entries</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-createpolicyentry.html">Create a single entry</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-deletepolicyentry.html">Delete a single entry</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifypolicyentry.html">Modify a single entry</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrievepolicyentry.html">Retrieve a single entry</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifysubjects.html">Modify subjects</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrievesubjects.html">Retrieve subjects</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-createsubject.html">Create a single subject</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-deletesubject.html">Delete a single subject</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifysubject.html">Modify a single subject</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrievesubject.html">Retrieve a single subject</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifyresources.html">Modify resources</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrieveresources.html">Retrieve resources</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-createresource.html">Create a single resource</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-deleteresource.html">Delete a single resource</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-modifyresource.html">Modify a single resource</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-retrieveresource.html">Retrieve a single resource</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-errorresponses.html">Error responses</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-policies-announcement-subjectDeletion.html">Announcement for subject deletion</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="protocol-examples-search.html">→ Search examples</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | </ul> | 
|  | </li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="sandbox.html">Sandbox</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="presentations.html">Presentations</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="glossary.html">Glossary</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <li><a href="feedback.html">Feedback</a></li> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <p class="external"> | 
|  | <a href="#" id="collapseAll">Collapse All</a> | <a href="#" id="expandAll">Expand All</a> | 
|  | </p> | 
|  |  | 
|  | </ul> | 
|  |  | 
|  | <!-- this highlights the active parent class in the sidebar. this is critical so that the parent expands when you're viewing a page. This must appear below the sidebar code above. Otherwise, if placed inside customscripts.js, the script runs before the sidebar code runs and the class never gets inserted.--> | 
|  | <script>$("li.active").parents('li').toggleClass("active"); | 
|  | </script> | 
|  |  | 
|  | </div> | 
|  |  | 
|  |  | 
|  |  | 
|  | <!-- Content Column --> | 
|  | <div class="col-md-9" id="tg-sb-content"> | 
|  | <div class="post-header"> | 
|  | <h1 class="post-title-main">Messages</h1> | 
|  | </div> | 
|  |  | 
|  |  | 
|  |  | 
|  | <div class="post-content"> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <!-- this handles the automatic toc. use ## for subheads to auto-generate the on-page minitoc. if you use html tags, you must supply an ID for the heading element in order for it to appear in the minitoc. --> | 
|  | <script> | 
|  | $( document ).ready(function() { | 
|  | // Handler for .ready() called. | 
|  |  | 
|  | $('#toc').toc({ minimumHeaders: 0, listType: 'ul', showSpeed: 0, headers: 'h2,h3,h4' }); | 
|  |  | 
|  | /* this offset helps account for the space taken up by the floating toolbar. */ | 
|  | $('#toc').on('click', 'a', function() { | 
|  | var target = $(this.getAttribute('href')) | 
|  | , scroll_target = target.offset().top | 
|  |  | 
|  | $(window).scrollTop(scroll_target - 10); | 
|  | return false | 
|  | }) | 
|  |  | 
|  | }); | 
|  | </script> | 
|  |  | 
|  | <div id="toc"></div> | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  |  | 
|  | <p>Messages <em>do not affect</em> the state of a digital twin or an actual device. | 
|  | Therefore Ditto does not handle messages like <a href="basic-signals-command.html">commands</a>: there are no responses which are | 
|  | produced by Ditto and no events which are emitted for messages.</p> | 
|  |  | 
|  | <div class="alert alert-info" role="alert"><i class="fa fa-info-circle"></i> <b>Note:</b> Ditto has no knowledge of the payload of messages but merely routes messages between | 
|  | connected devices.</div> | 
|  |  | 
|  | <p>Messages provide the possibility to send something <strong>to</strong> or <strong>from</strong> an actual device using an arbitrary subject/topic. | 
|  | They contain a custom payload with a custom content-type, so you can choose what content best | 
|  | fits your solution.</p> | 
|  |  | 
|  | <p>Expressed differently, Messages</p> | 
|  | <ul> | 
|  | <li><strong>to</strong> devices are operations which should trigger an action on a device (e.g. with a subject <code class="highlighter-rouge">turnOff</code>),</li> | 
|  | <li><strong>from</strong> devices are events/alarms which are emitted by devices (e.g. with a subject <code class="highlighter-rouge">smokeDetected</code>).</li> | 
|  | </ul> | 
|  |  | 
|  | <figure><img class="docimage" src="images/pages/basic/ditto-messages.png" alt="Ditto Messages" style="max-width: 600px" /><figcaption>How Ditto acts as router for Messages</figcaption></figure> | 
|  |  | 
|  | <h2 id="characteristics-of-messages">Characteristics of Messages</h2> | 
|  |  | 
|  | <p>Eclipse Ditto is not a message broker and does not want to offer features a message broker does.</p> | 
|  |  | 
|  | <p>It can be seen as a message router which:</p> | 
|  | <ul> | 
|  | <li>accepts messages via 2 APIs (<a href="httpapi-messages.html">HTTP</a> and | 
|  | <a href="protocol-specification-things-messages.html">Ditto Protocol</a>, e.g. via <a href="httpapi-protocol-bindings-websocket.html">WebSocket binding</a>)</li> | 
|  | <li>checks for <strong>currently connected</strong> interested parties whether they may receive a specific Message | 
|  | (performs <a href="basic-auth.html#authorization">authorization checks</a>)</li> | 
|  | <li> | 
|  | <p>routes the Message and reply Messages in between connected clients</p> | 
|  |  | 
|  | <div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-circle"></i> <b>Warning:</b> Ditto offers no message retention. If a device isn’t connected when a Message should | 
|  | be routed, it will never receive the Message.</div> | 
|  |  | 
|  | <div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-circle"></i> <b>Warning:</b> Ditto makes no statement about Message QoS. Messages are routed <strong>at most once</strong>.</div> | 
|  |  | 
|  | <div class="alert alert-danger" role="alert"><i class="fa fa-exclamation-circle"></i> <b>Warning:</b> Ditto does deliver messages only in “fan out” style, | 
|  | if the same credentials are connected twice, both connections will receive Messages if the credential is authorized | 
|  | to read a Message.</div> | 
|  | </li> | 
|  | </ul> | 
|  |  | 
|  | <h2 id="elements">Elements</h2> | 
|  |  | 
|  | <p>Ditto messages always have to have at least this elements:</p> | 
|  | <ul> | 
|  | <li><strong>Direction</strong>: <em>to</em> / <em>from</em>,</li> | 
|  | <li><strong>Thing ID</strong>: the ID of the <code class="highlighter-rouge">Thing</code> (actual device) which should receive/send the message and</li> | 
|  | <li><strong>Subject</strong>: the custom subject/topic.</li> | 
|  | </ul> | 
|  |  | 
|  | <p>Additionally, they can contain more information:</p> | 
|  | <ul> | 
|  | <li><strong>Feature ID</strong>: if a message should be addressed to the <a href="basic-feature.html">Feature</a> of a Thing, this specifies | 
|  | its ID.</li> | 
|  | <li><strong>content-type</strong>: defines which content-type the optional payload has.</li> | 
|  | <li><strong>correlation-id</strong>: Ditto can route message responses back to the issuer of a message. Therefore, a correlation-id has | 
|  | to be present in the message.</li> | 
|  | </ul> | 
|  |  | 
|  | <h2 id="payload">Payload</h2> | 
|  |  | 
|  | <p>A message can optionally contain a payload. As Ditto does neither have to understand the message nor its payload, the | 
|  | content-type and serialization is arbitrary.</p> | 
|  |  | 
|  | <h2 id="apis">APIs</h2> | 
|  |  | 
|  | <p>Messages can be sent via</p> | 
|  | <ul> | 
|  | <li>the <a href="httpapi-protocol-bindings-websocket.html">WebSocket API</a> as <a href="protocol-overview.html">Ditto Protocol</a> messages,</li> | 
|  | <li>the <a href="httpapi-overview.html">HTTP API</a> either as “fire and forget” messages or, when expecting a response, in a | 
|  | blocking way at the <a href="http-api-doc.html#/Messages">Messages HTTP API endpoint</a></li> | 
|  | </ul> | 
|  |  | 
|  | <p>Messages can, however, be received only via the <a href="httpapi-protocol-bindings-websocket.html">WebSocket API</a> as | 
|  | <a href="protocol-overview.html">Ditto Protocol</a> messages.</p> | 
|  |  | 
|  | <h2 id="receiving-messages">Receiving Messages</h2> | 
|  |  | 
|  | <p>To be able to receive Messages for a Thing, you need to have <code class="highlighter-rouge">READ</code> access on that Thing. | 
|  | When a Message is sent to or from a Thing, <strong>every</strong> connected WebSocket or | 
|  | <a href="basic-connections.html#targets">connection target</a> with the correct | 
|  | access rights will receive the Message.</p> | 
|  |  | 
|  | <p>If there is more than one response to a message received by multiple consumers, only the | 
|  | first response will be routed back to the initial issuer of a Message.</p> | 
|  |  | 
|  | <h2 id="sending-messages">Sending Messages</h2> | 
|  |  | 
|  | <p>If you want to send a Message to or from a Thing, you need <code class="highlighter-rouge">WRITE</code> permissions on that Thing. | 
|  | Every WebSocket or <a href="basic-connections.html#targets">connection target</a> that is able to receive Messages for the | 
|  | Thing (<code class="highlighter-rouge">READ</code> permission), will receive your message.</p> | 
|  |  | 
|  | <h2 id="responding-to-messages">Responding to Messages</h2> | 
|  |  | 
|  | <p>Since messages are stateless there is no <em>direct</em> response to a Message.</p> | 
|  |  | 
|  | <p>For Ditto to be able to route the response of a Message back to the issuer, the | 
|  | correlation-ids need to match. E.g. when the sender uses correlation-id <code class="highlighter-rouge">random-aa98s</code>, | 
|  | any receiver can reply by using the same correlation-id <code class="highlighter-rouge">random-aa98s</code>.</p> | 
|  |  | 
|  | <h2 id="permissions">Permissions</h2> | 
|  |  | 
|  | <h3 id="api-version-1">API version 1</h3> | 
|  |  | 
|  | <p>Permissions in API version 1 are simple for the Message API. If you want to receive Messages of a Thing, | 
|  | you need <code class="highlighter-rouge">READ</code> access on the Thing. To be able to send Messages to or from a Thing | 
|  | you need to have <code class="highlighter-rouge">WRITE</code> permissions.</p> | 
|  |  | 
|  | <p>There is one sole exception, which are <a href="#claim-messages">Claim Messages</a>. You do | 
|  | not need the access rights for sending them.</p> | 
|  |  | 
|  | <h3 id="api-version-2">API version 2</h3> | 
|  |  | 
|  | <p>Permissions in API version 2 can be more fine grained. In order to be able to receive all Messages of a Thing, | 
|  | you need <code class="highlighter-rouge">READ</code> permission for the <code class="highlighter-rouge">message:/</code> resource in the used <a href="basic-policy.html#message">Policy</a>.<br /> | 
|  | There can however be specified that you may only receive specific Messages (with a defined subject), also | 
|  | expressed via <a href="basic-policy.html#message">Policy entry</a>.<br /> | 
|  | The same applies for being able to send Messages, here a <code class="highlighter-rouge">WRITE</code> permission is required either globally for | 
|  | all messages via the <code class="highlighter-rouge">message:/</code> resource or only for specific ones.</p> | 
|  |  | 
|  | <p>There is one sole exception, which are <a href="#claim-messages">Claim Messages</a>. You do | 
|  | not need the access rights for sending them.</p> | 
|  |  | 
|  | <h2 id="claim-messages">Claim Messages</h2> | 
|  |  | 
|  | <p>A Claim Message is used to gain access to a Thing. For this purpose a Claim Messages has two specifics:</p> | 
|  | <ul> | 
|  | <li>the predefined message subject is always <em>claim</em></li> | 
|  | <li>you do not require <code class="highlighter-rouge">WRITE</code> permission to send a Claim Message</li> | 
|  | </ul> | 
|  |  | 
|  | <p>Apart from that the Claim Message is handled like a standard Message. It is forwarded to all Ditto Protocol bindings | 
|  | that registered for Claim Messages of the specific Thing. The decision whether to grant access (by setting permissions) | 
|  | is completely up to the receiver of the Claim Message e.g. after verifying the payload of the Message.</p> | 
|  |  | 
|  |  | 
|  | <div class="tags"> | 
|  |  | 
|  | <b>Tags: </b> | 
|  |  | 
|  |  | 
|  |  | 
|  | <a href="tag_model.html" class="btn btn-default navbar-btn cursorNorm" role="button">model</a> | 
|  |  | 
|  |  | 
|  |  | 
|  | </div> | 
|  |  | 
|  | </div> | 
|  |  | 
|  | <hr class="shaded"/> | 
|  |  | 
|  | <footer> | 
|  | <div class="row"> | 
|  | <div class="col-lg-12 footer"> | 
|  | <div class="logo"> | 
|  | <a href="https://eclipse.org"><img src="images/eclipse_foundation_logo.svg" alt="Eclipse logo"/></a> | 
|  | </div> | 
|  | <p class="notice"> | 
|  | ©2021 Eclipse Ditto™. | 
|  | Site last generated: Apr 8, 2021 <br /> | 
|  | </p> | 
|  | <div class="quickLinks"> | 
|  | <a href="https://www.eclipse.org/legal/privacy.php" target="_blank"> | 
|  | > Privacy Policy | 
|  | </a> | 
|  | <a href="https://www.eclipse.org/legal/termsofuse.php" target="_blank"> | 
|  | > Terms of Use | 
|  | </a> | 
|  | <a href="https://www.eclipse.org/legal/copyright.php" target="_blank"> | 
|  | > Copyright Agent | 
|  | </a> | 
|  | <a href="https://www.eclipse.org/legal" target="_blank"> | 
|  | > Legal | 
|  | </a> | 
|  | <a href="https://www.eclipse.org/legal/epl-2.0/" target="_blank"> | 
|  | > License | 
|  | </a> | 
|  | <a href="https://eclipse.org/security" target="_blank"> | 
|  | > Report a Vulnerability | 
|  | </a> | 
|  | </div> | 
|  | </div> | 
|  | </div> | 
|  | </footer> | 
|  |  | 
|  |  | 
|  | </div> | 
|  | <!-- /.row --> | 
|  | </div> | 
|  | <!-- /.container --> | 
|  | </div> | 
|  | <!-- /#main --> | 
|  | </div> | 
|  |  | 
|  | </body> | 
|  | </html> |