Website build Hono-Website-Declarative-Pipeline-81
Signed-off-by: Hono Bot <hono-bot@eclipse.org>
diff --git a/docs/1.5/api/authentication/get-token.svg b/docs/1.5/api/authentication/get-token.svg
new file mode 100644
index 0000000..a71589a
--- /dev/null
+++ b/docs/1.5/api/authentication/get-token.svg
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="544.8px" preserveAspectRatio="none" style="width:470px;height:544px;" version="1.1" viewBox="0 0 470 544" width="470.4px" zoomAndPan="magnify"><defs><filter height="300%" id="fqoijhe1a4k0w" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fqoijhe1a4k0w)" height="100.0781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="357" y="200.1938"/><rect fill="#FFFFFF" filter="url(#fqoijhe1a4k0w)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="357" y="440.1094"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="496.6688"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="363" x2="363" y1="45.9563" y2="496.6688"/><rect fill="#FEFECE" filter="url(#fqoijhe1a4k0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fqoijhe1a4k0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="495.4688"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="519.4629">Client</text><rect fill="#FEFECE" filter="url(#fqoijhe1a4k0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="136.8" x="292.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="120" x="300.6" y="27.5941">Authentication</text><rect fill="#FEFECE" filter="url(#fqoijhe1a4k0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="136.8" x="292.2" y="495.4688"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="120" x="300.6" y="519.4629">Authentication</text><rect fill="#FFFFFF" filter="url(#fqoijhe1a4k0w)" height="100.0781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="357" y="200.1938"/><rect fill="#FFFFFF" filter="url(#fqoijhe1a4k0w)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="357" y="440.1094"/><polygon fill="#A80036" points="348.6,78.5156,360.6,83.3156,348.6,88.1156,353.4,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="355.8" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="290.4" x="52.2" y="77.2365">1.0 SASL PLAIN (username/password)</text><path d="M283.2,98.9156 L283.2,128.9156 L438,128.9156 L438,110.9156 L426,98.9156 L283.2,98.9156 " fill="#FBFB77" filter="url(#fqoijhe1a4k0w)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M426,98.9156 L426,110.9156 L438,110.9156 L426,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="129.6" x="290.4" y="119.3959">verify credentials</text><polygon fill="#A80036" points="57,160.4344,45,165.2344,57,170.0344,52.2,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="361.8" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="96" x="64.2" y="159.1553">1.1 SASL OK</text><polygon fill="#A80036" points="342.6,195.3937,354.6,200.1938,342.6,204.9938,347.4,200.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="349.8" y1="200.1938" y2="200.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="52.2" y="194.1146">2.0 open</text><path d="M265.2,215.7938 L265.2,263.7938 L456,263.7938 L456,227.7938 L444,215.7938 L265.2,215.7938 " fill="#FBFB77" filter="url(#fqoijhe1a4k0w)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M444,215.7938 L444,227.7938 L456,227.7938 L444,215.7938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="165.6" x="272.4" y="236.274">determine authorities</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="97.2" x="272.4" y="254.4334">create token</text><polygon fill="#A80036" points="57,295.4719,45,300.2719,57,305.0719,52.2,300.2719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="361.8" y1="300.2719" y2="300.2719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="64.2" y="294.1928">2.1 open</text><polygon fill="#A80036" points="348.6,330.4313,360.6,335.2313,348.6,340.0313,353.4,335.2313" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="355.8" y1="335.2313" y2="335.2313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="168" x="52.2" y="329.1521">3.0 attach(REC, "cbs")</text><polygon fill="#A80036" points="57,365.3906,45,370.1906,57,374.9906,52.2,370.1906" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="361.8" y1="370.1906" y2="370.1906"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="78" x="64.2" y="364.1115">3.1 attach</text><polygon fill="#A80036" points="57,400.35,45,405.15,57,409.95,52.2,405.15" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="361.8" y1="405.15" y2="405.15"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="144" x="64.2" y="399.0709">3.2 transfer(token)</text><polygon fill="#A80036" points="342.6,435.3094,354.6,440.1094,342.6,444.9094,347.4,440.1094" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="349.8" y1="440.1094" y2="440.1094"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="68.4" x="52.2" y="434.0303">4.0 close</text><polygon fill="#A80036" points="57,470.2687,45,475.0687,57,479.8688,52.2,475.0687" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="361.8" y1="475.0687" y2="475.0687"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="68.4" x="64.2" y="468.9896">4.1 close</text><!--
+@startuml
+scale 1.2
+
+participant Client
+participant Authentication
+
+Client -> Authentication: 1.0 SASL PLAIN (username/password)
+
+note over Authentication
+ verify credentials
+end note
+
+Client <- Authentication: 1.1 SASL OK
+
+Client -> Authentication ++: 2.0 open
+
+note over Authentication
+ determine authorities
+ create token
+end note
+
+Client <- Authentication - -: 2.1 open
+
+Client -> Authentication: 3.0 attach(REC, "cbs")
+Client <- Authentication: 3.1 attach
+Client <- Authentication: 3.2 transfer(token)
+
+Client -> Authentication ++: 4.0 close
+Client <- Authentication - -: 4.1 close
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/authentication/index.html b/docs/1.5/api/authentication/index.html
new file mode 100644
index 0000000..835b9a9
--- /dev/null
+++ b/docs/1.5/api/authentication/index.html
@@ -0,0 +1,2925 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Authentication API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Authentication API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Authentication API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/authentication//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/authentication/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/authentication/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/authentication/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/authentication/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/authentication/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/authentication/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/authentication/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/authentication/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/authentication/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/authentication/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Authentication API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#get-token">Get Token</a></li>
+<li><a href="#token-format">Token Format</a>
+<ul>
+<li><a href="#resource-authorities">Resource Authorities</a></li>
+<li><a href="#operation-authorities">Operation Authorities</a></li>
+</ul></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Authentication API Specification</h1>
+
+
+
+
+
+<p>The <em>Authentication API</em> is used to retrieve a <em>token</em> asserting a subject’s identity and granted authorities. Other service implementations use such a token to make authorization decisions on a client’s request to read or write from/to a resource or to invoke a certain operation.</p>
+
+<p>The Authentication API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to an Authentication service using an AMQP 1.0 client in order to invoke operations of the API as described in the following sections.</p>
+
+<p>Note that a component implementing this API will most likely need to also provide means to add, alter or remove identities and authorities as well. However, Hono itself does not require this kind of functionality, thus this kind of functionality is considered out of scope of this API.</p>
+
+<p>In a real world environment there will often already be an <em>identity management system</em> in place. In such cases it can make sense to just implement a <em>facade</em> exposing the Authentication API operations and mapping them to the underlying existing system’s functionality.</p>
+
+<h2 id="get-token">Get Token</h2>
+
+<p>Clients use this operation to</p>
+
+<ul>
+<li>verify a set of credentials and</li>
+<li>retrieve a token asserting the authenticated subject’s identity and granted authorities.</li>
+</ul>
+
+<p><strong>Message Flow</strong></p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in a <em>Client</em> retrieving a token.</p>
+
+<figure>
+ <img src="get-token.svg"/> <figcaption>
+ <h4>Get Token message flow</h4>
+ </figcaption>
+</figure>
+
+
+<ol>
+<li>The <em>Client</em> and <em>Authentication</em> service have agreed to use the SASL PLAIN mechanism for authenticating the client. The <em>Client</em> therefore sends the credentials of the identity it wants to retrieve a token for. The <em>Authentication</em> service successfully verifies the credentials and establishes the <em>authorization ID</em>.
+
+<ol>
+<li>The <em>Authentication</em> service completes the SASL exchange with a successful outcome (SASL OK).</li>
+</ol></li>
+<li>The <em>Client</em> continues by opening an AMQP connection with the <em>Authentication</em> service. The <em>Authentication</em> service creates a token asserting the <em>authorization ID</em> and authorities established during the SASL exchange and associates it with the connection.</li>
+<li>The <em>Client</em> opens a receiving link using source address <code>cbs</code>.
+
+<ol>
+<li>The <em>Authentication</em> service opens the link and</li>
+<li>sends the token associated with the connection to the <em>Client</em>.</li>
+</ol></li>
+<li>The <em>Client</em> closes the connection.</li>
+</ol>
+
+<p><strong>Token Message Format</strong></p>
+
+<p>On successful establishment of the receiving link with the client as described above, the server sends a message to the client containing a token asserting the identity and authorities of the client that has been authenticated as part of establishing the underlying AMQP connection.</p>
+
+<p>The following table provides an overview of the properties of the message sent to the client.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Value</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>type</em></td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>amqp:jwt</code></td>
+</tr>
+</tbody>
+</table>
+
+<p>The message’s body consists of a single AMQP 1.0 <em>AmqpValue</em> section which contains the UTF-8 representation of a JSON Web Token as defined in <a href="#token-format">Token Format</a>.</p>
+
+<h2 id="token-format">Token Format</h2>
+
+<p>The token returned by the <em>get Token</em> operation is a cryptographically signed JSON Web Token as defined by <a href="https://tools.ietf.org/html/rfc7519">RFC 7519</a>.</p>
+
+<p>The token contains the following mandatory <em>claims</em>:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="left">Type</th>
+<th align="left">Value</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>sub</em></td>
+<td align="left"><a href="https://tools.ietf.org/html/rfc7519#section-4.1.2">RFC 7519, Section 4.1.2</a></td>
+<td align="left">The <em>authorization ID</em> of the authenticated client. This represents the asserted identity.</td>
+</tr>
+
+<tr>
+<td align="left"><em>exp</em></td>
+<td align="left"><a href="https://tools.ietf.org/html/rfc7519#section-4.1.4">RFC 7519, Section 4.1.4</a></td>
+<td align="left">The point in time after which the claims contained in this token must be considered no longer valid. Clients MUST NOT use any information from a token that has expired.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The subject’s authorities on resources and operations are represented by additional JWT <em>claims</em> with a name identifying the resource or operation and a value containing the activities the subject is allowed to perform. The following activities are supported:</p>
+
+<ul>
+<li>READ - The client is allowed to establish a receiving link using the resource’s node address as the link’s <em>source address</em>.</li>
+<li>WRITE - The client is allowed to establish a sending link using the resource’s node address as the link’s <em>target address</em>.</li>
+<li>EXECUTE - The client is allowed to <em>invoke</em> an operation on an endpoint, i.e. send a message over a link with a <em>subject</em> representing the operation name and the link’s target address representing the API endpoint’s node address.</li>
+</ul>
+
+<p>The allowed activities are encoded in a claim’s value by means of simply concatenating the activities’ initial characters (<code>R</code>, <code>W</code>, <code>E</code>).</p>
+
+<p>The token may contain any number of additional claims which may be ignored by clients that do not understand their meaning.</p>
+
+<h3 id="resource-authorities">Resource Authorities</h3>
+
+<p>A client’s authority on a resource is represented by a JWT <em>claim</em> with a name containing the resource node address prefixed with <code>r:</code> and a value containing the activities the client is allowed to perform on the resource. The node address MAY contain one or more wildcard (<code>*</code>) characters to represent <em>any</em> string.</p>
+
+<p><strong>Example:</strong></p>
+
+<p>Assuming a client which is allowed to</p>
+
+<ul>
+<li>send and consume events for tenant <code>my-tenant</code> and</li>
+<li>consume telemetry data for all tenants</li>
+</ul>
+
+<p>the corresponding claims (in the token’s JSON representation) would look like this:</p>
+
+<pre><code class="language-json">{
+ ...
+ "r:event/my-tenant": "RW",
+ "r:telemetry/*": "R",
+ ...
+}
+</code></pre>
+
+<h3 id="operation-authorities">Operation Authorities</h3>
+
+<p>A client’s authority to invoke an endpoint’s operation(s) is represented by a JWT <em>claim</em> with a name containing the endpoint’s node address and operation identifier prefixed with <code>o:</code> and a value of <code>E</code> (for <code>EXECUTE</code>). The endpoint node address MAY contain one or more wildcard (<code>*</code>) characters to represent <em>any</em> string. The operation identifier is the <em>subject</em> value defined by the corresponding API for the operation. The operation identifier MAY be set to <code>*</code> to represent <em>any</em> operation of the endpoint.</p>
+
+<p><strong>Example:</strong></p>
+
+<p>Assuming a client which is allowed to</p>
+
+<ul>
+<li>invoke the Device Registration API’s <em>assert Registration</em> operation for any tenant and</li>
+<li>invoke all methods of the Credentials API for tenant <code>my-tenant</code></li>
+</ul>
+
+<p>the corresponding claims (in the token’s JSON representation) would look like this:</p>
+
+<pre><code class="language-json">{
+ ...
+ "o:registration/*:assert": "E",
+ "o:credentials/my-tenant:*": "E",
+ ...
+}
+</code></pre>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/command-and-control/device_not_connected.svg b/docs/1.5/api/command-and-control/device_not_connected.svg
new file mode 100644
index 0000000..47ad864
--- /dev/null
+++ b/docs/1.5/api/command-and-control/device_not_connected.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="234px" preserveAspectRatio="none" style="width:777px;height:234px;" version="1.1" viewBox="0 0 777 234" width="777.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f522yk1blx9om" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="115.2" x2="115.2" y1="45.9563" y2="186.8344"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="672.6" x2="672.6" y1="45.9563" y2="186.8344"/><rect fill="#FEFECE" filter="url(#f522yk1blx9om)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="27.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="36" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f522yk1blx9om)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="27.6" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="36" y="209.6285">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f522yk1blx9om)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="576.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="585" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#f522yk1blx9om)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="576.6" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="585" y="209.6285">Business Application</text><polygon fill="#A80036" points="128.4,78.5156,116.4,83.3156,128.4,88.1156,123.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="121.2" x2="672" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="529.2" x="135.6" y="77.2365">transfer(to: "command/DEFAULT_TENANT/4711", subject: "switchOn")</text><path d="M9.6,98.9156 L9.6,128.9156 L216,128.9156 L216,110.9156 L204,98.9156 L9.6,98.9156 " fill="#FBFB77" filter="url(#f522yk1blx9om)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M204,98.9156 L204,110.9156 L216,110.9156 L204,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="181.2" x="16.8" y="119.3959">device is not connected</text><polygon fill="#A80036" points="658.8,160.4344,670.8,165.2344,658.8,170.0344,663.6,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="115.2" x2="666" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="220.8" x="123.6" y="159.1553">disposition(state: "released")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+
+"Business Application" -> "AMQP 1.0 Network": transfer(to: "command/DEFAULT_TENANT/4711", subject: "switchOn")
+note over "AMQP 1.0 Network"
+device is not connected
+end note
+"AMQP 1.0 Network" -> "Business Application": disposition(state: "released")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-and-control/index.html b/docs/1.5/api/command-and-control/index.html
new file mode 100644
index 0000000..de06ee2
--- /dev/null
+++ b/docs/1.5/api/command-and-control/index.html
@@ -0,0 +1,3146 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Command & Control API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Command & Control API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Command & Control API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/command-and-control//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/command-and-control/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/command-and-control/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/command-and-control/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/command-and-control/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/command-and-control/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/command-and-control/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/command-and-control/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/command-and-control/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/command-and-control/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/command-and-control/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Command & Control API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#send-a-one-way-command">Send a One-Way Command</a></li>
+<li><a href="#send-a-request-response-command">Send a (Request/Response) Command</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Command & Control API Specification</h1>
+
+
+
+
+
+<p>The <em>Command & Control</em> API of Eclipse Hono™ is used by <em>Business Applications</em> to send commands to connected devices.</p>
+
+<p>Commands can be used to trigger actions on devices. Examples include updating a configuration property, installing a software component or switching the state of an actuator.</p>
+
+<p>Hono distinguishes two types of commands. The first type is <em>one-way</em> only. In this case the sender of the command does not expect the device to send back a message in response to the command. This type of command is referred to as a <em>one-way command</em> in the remainder of this page. One-way commands may be used to e.g. <em>notify</em> a device about a change of state.</p>
+
+<p>The second type of commands expects a <em>response</em> to be sent back from the device as a result of processing the command. In this case the response contains a <em>status</em> code which indicates whether the command could be processed successfully. If so, the response may also include data representing the result of processing the command. This type of command is plainly referred to as a <em>command</em> because it represents the default case.</p>
+
+<p>The Command & Control API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to Hono using AMQP 1.0 in order to invoke operations of the API as described in the following sections. Throughout the remainder of this page we will simply use AMQP when referring to AMQP 1.0.</p>
+
+<h2 id="send-a-one-way-command">Send a One-Way Command</h2>
+
+<p>Business Applications use this operation to send a command to a device for which they do not expect to receive a response from the device.</p>
+
+<p><strong>Preconditions</strong></p>
+
+<ol>
+<li>The <em>Business Application</em> has established an AMQP connection with the AMQP 1.0 Network.</li>
+<li>The <em>Business Application</em> has established an AMQP link in role <em>sender</em> with the target address <code>command/${tenant_id}</code>, where <code>${tenant_id}</code> is the ID of the tenant that the device belongs to. This link is used by the <em>Business Application</em> to send command messages.</li>
+</ol>
+
+<p>The following sequence diagram illustrates the establishment of the required link:</p>
+
+<figure>
+ <img src="send_preconditions.svg"/> <figcaption>
+ <h4>Application connecting to the AMQP 1.0 Messaging Network</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Message Format</strong></p>
+
+<p>The following table provides an overview of the properties the <em>Business Application</em> needs to set on a one-way command message.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the target address <code>command/${tenant_id}/${device_id}</code> of the message, where <code>${device_id}</code> is the ID of the device to send the message to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The name of the command to be executed by the device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">If present, MUST contain a <em>Media Type</em> as defined by <a href="https://tools.ietf.org/html/rfc2046">RFC 2046</a> which describes the semantics and format of the command’s input data contained in the message payload. However, not all protocol adapters will support this property as not all transport protocols provide means to convey this information, e.g. MQTT 3.1.1 has no notion of message headers.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">An identifier that uniquely identifies the message at the sender side.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The command message MAY contain arbitrary payload to be sent to the device in a single AMQP <em>Data</em> section. The value of the message’s <em>subject</em> property may provide a hint to the device regarding the format, encoding and semantics of the payload data.</p>
+
+<p>Hono indicates the outcome of the operation by means of the following AMQP delivery states:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><code>accepted</code></td>
+<td align="left">The command has been delivered to the device for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><code>released</code></td>
+<td align="left">The command has not been delivered to the device because the device is (currently) not connected.</td>
+</tr>
+
+<tr>
+<td align="left"><code>rejected</code></td>
+<td align="left">The command has not been delivered to the device because it does not contain all required information.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>Note</strong> that Hono relies on the particular protocol adapter to deliver commands to devices. Depending on the used transport protocol and the adapter’s implementation, the <code>accepted</code> outcome may thus indicate any of the following:</p>
+
+<ul>
+<li>An <em>attempt</em> has been made to deliver the command to the device. However, it is unclear if the device has received (or processed) the command.</li>
+<li>The device has acknowledged the reception of the command but has not processed the command yet.</li>
+<li>The device has received and processed the command.</li>
+</ul>
+
+<p><strong>Examples</strong></p>
+
+<p>The following sequence diagram shows the successful delivery of a one-way command called <code>switchOn</code> to device <code>4711</code> of the <code>DEFAULT_TENANT</code>:</p>
+
+<figure>
+ <img src="one_way_success.svg"/> <figcaption>
+ <h4>Successfully send a One-Way Command</h4>
+ </figcaption>
+</figure>
+
+
+<p>The following sequence diagram shows how the delivery of the same one-way command fails because the device is not connected:</p>
+
+<figure>
+ <img src="device_not_connected.svg"/> <figcaption>
+ <h4>Device not connected</h4>
+ </figcaption>
+</figure>
+
+
+<p>The following sequence diagram illustrates how a malformed command sent by a <em>Business Application</em> gets rejected:</p>
+
+<figure>
+ <img src="malformed_message.svg"/> <figcaption>
+ <h4>Malformed Command message</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="send-a-request-response-command">Send a (Request/Response) Command</h2>
+
+<p><em>Business Applications</em> use this operation to send a command to a device for which they expect the device to send back a response.</p>
+
+<p><a name="receiver-link-precondition"></a></p>
+
+<p><strong>Preconditions</strong></p>
+
+<ol>
+<li>The <em>Business Application</em> has established an AMQP connection with the AMQP 1.0 Network.</li>
+<li>The <em>Business Application</em> has established an AMQP link in role <em>sender</em> with the target address <code>command/${tenant_id}</code>, where <code>${tenant_id}</code> is the ID of the tenant that the device belongs to. This link is used by the <em>Business Application</em> to send command messages.</li>
+<li>The <em>Business Application</em> has established an AMQP link in role <em>receiver</em> with the source address <code>command_response/${tenant_id}/${reply_id}</code>.
+This link is used by the <em>Business Application</em> to receive the response to the command from the device. This link’s source address is also used as the <code>reply-to</code> address for the request messages. The <code>${reply_id}</code> may be any arbitrary string chosen by the application.</li>
+</ol>
+
+<p>The following sequence diagram illustrates the establishment of the required links:</p>
+
+<figure>
+ <img src="receive_preconditions.svg"/> <figcaption>
+ <h4>Application connecting to the AMQP 1.0 Messaging Network</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Command Message Format</strong></p>
+
+<p>The following table provides an overview of the properties the <em>Business Application</em> needs to set on a command message.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the target address <code>command/${tenant_id}/${device_id}</code> of the message, where <code>${device_id}</code> is the ID of the device to send the message to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the command name to be executed by a device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">If present, MUST contain a <em>Media Type</em> as defined by <a href="https://tools.ietf.org/html/rfc2046">RFC 2046</a> which describes the semantics and format of the command’s input data contained in the message payload. However, not all protocol adapters will support this property as not all transport protocols provide means to convey this information, e.g. MQTT 3.1.1 has no notion of message headers.</td>
+</tr>
+
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an ID used to correlate a response message to the original request. If set, it is used as the <em>correlation-id</em> property in the response, otherwise the value of the <em>message-id</em> property is used. Either this or the <em>message-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an identifier that uniquely identifies the message at the sender side. Either this or the <em>correlation-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the source address that the application expects to receive the response from. This address MUST be the same as the source address used for establishing the client’s receiver link (see <a href="./#receiver-link-precondition">Preconditions</a> above).</td>
+</tr>
+</tbody>
+</table>
+
+<p>The command message MAY contain arbitrary payload to be sent to the device in a single AMQP <em>Data</em> section. The value of the command message’s <em>subject</em> value may provide a hint to the device regarding the format, encoding and semantics of the payload data.</p>
+
+<p>Hono uses following AMQP delivery states to indicate the outcome of sending the command to the device:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><code>accepted</code></td>
+<td align="left">The command has been delivered to the device for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><code>released</code></td>
+<td align="left">The command has not been delivered to the device because the device is (currently) not connected.</td>
+</tr>
+
+<tr>
+<td align="left"><code>rejected</code></td>
+<td align="left">The command has not been delivered to the device because it does not contain all required information.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>Note</strong> that Hono relies on the particular protocol adapter to deliver commands to devices. Depending on the used transport protocol and the adapter’s implementation, the <code>accepted</code> outcome may thus indicate any of the following:</p>
+
+<ul>
+<li>An <em>attempt</em> has been made to deliver the command to the device. However, it is unclear if the device has received (or processed) the command.</li>
+<li>The device has acknowledged the reception of the command but has not processed the command yet.</li>
+</ul>
+
+<p>An application can determine the overall outcome of the operation by means of the response to the command that is sent back by the device. An application should consider execution of a command to have failed, if it does not receive a response within a reasonable amount of time.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>The following table provides an overview of the properties set on a message sent in response to a command.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">If present, MUST contain a <em>Media Type</em> as defined by <a href="https://tools.ietf.org/html/rfc2046">RFC 2046</a> which describes the semantics and format of the command’s input data contained in the message payload. However, not all protocol adapters will support this property as not all transport protocols provide means to convey this information, e.g. MQTT 3.1.1 has no notion of message headers.</td>
+</tr>
+
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the correlation ID used to match the command message with the response message containing the result of execution on the device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>device_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the device that sent the response.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>integer</em></td>
+<td align="left">MUST indicate the status of the execution. See table below for possible values.</td>
+</tr>
+
+<tr>
+<td align="left"><em>tenant_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the tenant that the device belongs to.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The <em>status</em> property must contain an <a href="https://tools.ietf.org/html/rfc7231#section-6">HTTP 1.1 response status code</a>:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>2xx</em></td>
+<td align="left">The command has been processed successfully.</td>
+</tr>
+
+<tr>
+<td align="left"><em>4xx</em></td>
+<td align="left">The command could not be processed due to a client error, e.g. malformed message payload.</td>
+</tr>
+
+<tr>
+<td align="left"><em>5xx</em></td>
+<td align="left">The command could not be processed due to an internal problem at the device side.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The semantics of the individual codes are specific to the device and command. For status codes indicating an error (codes in the <code>400 - 599</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<p>If a command message response contains a payload, the body of the message MUST consist of a single AMQP <em>Data</em> section containing the response message data.</p>
+
+<p><strong>Examples</strong></p>
+
+<p>The following sequence diagram illustrates how a <em>Business Application</em> sends a command called <code>getReading</code> to device <code>4711</code> of the <code>DEFAULT_TENANT</code> and receives a response from the device:</p>
+
+<figure>
+ <img src="request_response_success.svg"/> <figcaption>
+ <h4>Successfully send a Command</h4>
+ </figcaption>
+</figure>
+
+
+<p>The sending of a command may fail for the same reasons as those illustrated for sending a one-way command. Additionally, the sending of a command may be considered unsuccessful by an application if it does not receive the response from the device in a reasonable amount of time:</p>
+
+<figure>
+ <img src="response_time_out.svg"/> <figcaption>
+ <h4>Command times out</h4>
+ </figcaption>
+</figure>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/command-and-control/malformed_message.svg b/docs/1.5/api/command-and-control/malformed_message.svg
new file mode 100644
index 0000000..20ecfd4
--- /dev/null
+++ b/docs/1.5/api/command-and-control/malformed_message.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="318px" preserveAspectRatio="none" style="width:790px;height:318px;" version="1.1" viewBox="0 0 790 318" width="790.8px" zoomAndPan="magnify"><defs><filter height="300%" id="f10hxv9l3i6bed" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="116.4" x2="116.4" y1="45.9563" y2="270.1125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="673.8" x2="673.8" y1="45.9563" y2="270.1125"/><rect fill="#FEFECE" filter="url(#f10hxv9l3i6bed)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="28.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="37.2" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f10hxv9l3i6bed)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="28.8" y="268.9125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="37.2" y="292.9066">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f10hxv9l3i6bed)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="577.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="586.2" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#f10hxv9l3i6bed)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="577.8" y="268.9125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="586.2" y="292.9066">Business Application</text><polygon fill="#A80036" points="129.6,78.5156,117.6,83.3156,129.6,88.1156,124.8,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="122.4" x2="673.2" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="529.2" x="136.8" y="77.2365">transfer(to: "command/DEFAULT_TENANT/4711", subject: "switchOn")</text><path d="M9.6,98.9156 L9.6,128.9156 L218.4,128.9156 L218.4,110.9156 L206.4,98.9156 L9.6,98.9156 " fill="#FBFB77" filter="url(#f10hxv9l3i6bed)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M206.4,98.9156 L206.4,110.9156 L218.4,110.9156 L206.4,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="183.6" x="16.8" y="119.3959">command is malformed</text><polygon fill="#A80036" points="660,160.4344,672,165.2344,660,170.0344,664.8,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="116.4" x2="667.2" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="217.2" x="124.8" y="159.1553">disposition(state: "rejected")</text><path d="M567.6,180.8344 L567.6,246.8344 L776.4,246.8344 L776.4,192.8344 L764.4,180.8344 L567.6,180.8344 " fill="#FBFB77" filter="url(#f10hxv9l3i6bed)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M764.4,180.8344 L764.4,192.8344 L776.4,192.8344 L764.4,180.8344 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="574.8" y="201.3146">may want to close</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="100.8" x="574.8" y="219.474">response link</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="183.6" x="574.8" y="237.6334">(if scoped to command)</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+
+"Business Application" -> "AMQP 1.0 Network": transfer(to: "command/DEFAULT_TENANT/4711", subject: "switchOn")
+note over "AMQP 1.0 Network"
+command is malformed
+end note
+"AMQP 1.0 Network" -> "Business Application": disposition(state: "rejected")
+
+note over "Business Application"
+may want to close
+response link
+(if scoped to command)
+end note
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-and-control/one_way_success.svg b/docs/1.5/api/command-and-control/one_way_success.svg
new file mode 100644
index 0000000..c6218b3
--- /dev/null
+++ b/docs/1.5/api/command-and-control/one_way_success.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="253.2px" preserveAspectRatio="none" style="width:759px;height:253px;" version="1.1" viewBox="0 0 759 253" width="759.6px" zoomAndPan="magnify"><defs><filter height="300%" id="frby4mmuumt0w" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="97.2" x2="97.2" y1="45.9563" y2="204.9938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="654.6" x2="654.6" y1="45.9563" y2="204.9938"/><rect fill="#FEFECE" filter="url(#frby4mmuumt0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#frby4mmuumt0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="203.7938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="227.7879">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#frby4mmuumt0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="558.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="567" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#frby4mmuumt0w)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="558.6" y="203.7938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="567" y="227.7879">Business Application</text><polygon fill="#A80036" points="110.4,78.5156,98.4,83.3156,110.4,88.1156,105.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="654" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="529.2" x="117.6" y="77.2365">transfer(to: "command/DEFAULT_TENANT/4711", subject: "switchOn")</text><path d="M12,98.9156 L12,146.9156 L176.4,146.9156 L176.4,110.9156 L164.4,98.9156 L12,98.9156 " fill="#FBFB77" filter="url(#frby4mmuumt0w)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M164.4,98.9156 L164.4,110.9156 L176.4,110.9156 L164.4,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="19.2" y="119.3959">forward command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="69.6" x="19.2" y="137.5553">to device</text><polygon fill="#A80036" points="640.8,178.5938,652.8,183.3937,640.8,188.1938,645.6,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="648" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="105.6" y="177.3146">disposition(state: "accepted")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+
+"Business Application" -> "AMQP 1.0 Network": transfer(to: "command/DEFAULT_TENANT/4711", subject: "switchOn")
+note over "AMQP 1.0 Network"
+forward command
+to device
+end note
+"AMQP 1.0 Network" -> "Business Application": disposition(state: "accepted")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-and-control/receive_preconditions.svg b/docs/1.5/api/command-and-control/receive_preconditions.svg
new file mode 100644
index 0000000..63ba733
--- /dev/null
+++ b/docs/1.5/api/command-and-control/receive_preconditions.svg
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="327.6px" preserveAspectRatio="none" style="width:788px;height:327px;" version="1.1" viewBox="0 0 788 327" width="788.4px" zoomAndPan="magnify"><defs><filter height="300%" id="fy69okj2fbq34" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="97.2" x2="97.2" y1="45.9563" y2="279.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="683.4" x2="683.4" y1="45.9563" y2="279.7125"/><rect fill="#FEFECE" filter="url(#fy69okj2fbq34)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fy69okj2fbq34)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="302.5066">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fy69okj2fbq34)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="587.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="595.8" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#fy69okj2fbq34)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="587.4" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="595.8" y="302.5066">Business Application</text><polygon fill="#A80036" points="110.4,78.5156,98.4,83.3156,110.4,88.1156,105.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="682.8" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="50.4" x="117.6" y="77.2365">open()</text><polygon fill="#A80036" points="669.6,113.475,681.6,118.275,669.6,123.075,674.4,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="676.8" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="50.4" x="105.6" y="112.1959">open()</text><polygon fill="#A80036" points="110.4,148.4344,98.4,153.2344,110.4,158.0344,105.6,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="682.8" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="375.6" x="117.6" y="147.1553">attach(sender, target: "command/${tenant_id}")</text><polygon fill="#A80036" points="669.6,183.3937,681.6,188.1938,669.6,192.9938,674.4,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="676.8" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="388.8" x="105.6" y="182.1146">attach(receiver, source: "command/${tenant_id}")</text><polygon fill="#A80036" points="110.4,218.3531,98.4,223.1531,110.4,227.9531,105.6,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="682.8" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="558" x="117.6" y="217.074">attach(receiver, source: "command_response/${tenant_id}/${reply-id}")</text><polygon fill="#A80036" points="669.6,253.3125,681.6,258.1125,669.6,262.9125,674.4,258.1125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="676.8" y1="258.1125" y2="258.1125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="544.8" x="105.6" y="252.0334">attach(sender, target: "command_response/${tenant_id}/${reply-id}")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+
+"Business Application" -> "AMQP 1.0 Network": open()
+"AMQP 1.0 Network" -> "Business Application": open()
+"Business Application" -> "AMQP 1.0 Network": attach(sender, target: "command/${tenant_id}")
+"AMQP 1.0 Network" -> "Business Application": attach(receiver, source: "command/${tenant_id}")
+"Business Application" -> "AMQP 1.0 Network": attach(receiver, source: "command_response/${tenant_id}/${reply-id}")
+"AMQP 1.0 Network" -> "Business Application": attach(sender, target: "command_response/${tenant_id}/${reply-id}")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-and-control/request_response_success.svg b/docs/1.5/api/command-and-control/request_response_success.svg
new file mode 100644
index 0000000..99266fb
--- /dev/null
+++ b/docs/1.5/api/command-and-control/request_response_success.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="434.4px" preserveAspectRatio="none" style="width:777px;height:434px;" version="1.1" viewBox="0 0 777 434" width="777.6px" zoomAndPan="magnify"><defs><filter height="300%" id="fwzdake5u3445" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="97.2" x2="97.2" y1="45.9563" y2="386.9906"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="672.6" x2="672.6" y1="45.9563" y2="386.9906"/><rect fill="#FEFECE" filter="url(#fwzdake5u3445)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fwzdake5u3445)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="385.7906"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="409.7848">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fwzdake5u3445)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="576.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="585" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#fwzdake5u3445)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="576.6" y="385.7906"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="585" y="409.7848">Business Application</text><polygon fill="#A80036" points="110.4,78.5156,98.4,83.3156,110.4,88.1156,105.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="672" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="547.2" x="117.6" y="77.2365">transfer(to: "command/DEFAULT_TENANT/4711", subject: "getReading")</text><path d="M12,98.9156 L12,146.9156 L176.4,146.9156 L176.4,110.9156 L164.4,98.9156 L12,98.9156 " fill="#FBFB77" filter="url(#fwzdake5u3445)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M164.4,98.9156 L164.4,110.9156 L176.4,110.9156 L164.4,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="19.2" y="119.3959">forward command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="69.6" x="19.2" y="137.5553">to device</text><polygon fill="#A80036" points="658.8,178.5938,670.8,183.3937,658.8,188.1938,663.6,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="666" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="105.6" y="177.3146">disposition(state: "accepted")</text><path d="M16.8,198.9938 L16.8,246.9937 L172.8,246.9937 L172.8,210.9938 L160.8,198.9938 L16.8,198.9938 " fill="#FBFB77" filter="url(#fwzdake5u3445)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M160.8,198.9938 L160.8,210.9938 L172.8,210.9938 L160.8,198.9938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="130.8" x="24" y="219.474">wait for response</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="90" x="24" y="237.6334">from device</text><polygon fill="#A80036" points="658.8,278.6719,670.8,283.4719,658.8,288.2719,663.6,283.4719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="666" y1="283.4719" y2="283.4719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="318" x="105.6" y="277.3928">transfer(status: "200", body: sensor data)</text><path d="M590.4,299.0719 L590.4,329.0719 L751.2,329.0719 L751.2,311.0719 L739.2,299.0719 L590.4,299.0719 " fill="#FBFB77" filter="url(#fwzdake5u3445)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M739.2,299.0719 L739.2,311.0719 L751.2,311.0719 L739.2,299.0719 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="135.6" x="597.6" y="319.5521">process response</text><polygon fill="#A80036" points="110.4,360.5906,98.4,365.3906,110.4,370.1906,105.6,365.3906" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="672" y1="365.3906" y2="365.3906"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="117.6" y="359.3115">disposition(state: "accepted")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+
+"Business Application" -> "AMQP 1.0 Network": transfer(to: "command/DEFAULT_TENANT/4711", subject: "getReading")
+note over "AMQP 1.0 Network"
+forward command
+to device
+end note
+"AMQP 1.0 Network" -> "Business Application": disposition(state: "accepted")
+note over "AMQP 1.0 Network"
+wait for response
+from device
+end note
+"AMQP 1.0 Network" -> "Business Application": transfer(status: "200", body: sensor data)
+note over "Business Application"
+process response
+end note
+"Business Application" -> "AMQP 1.0 Network": disposition(state: "accepted")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-and-control/response_time_out.svg b/docs/1.5/api/command-and-control/response_time_out.svg
new file mode 100644
index 0000000..23a71e9
--- /dev/null
+++ b/docs/1.5/api/command-and-control/response_time_out.svg
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="471.6px" preserveAspectRatio="none" style="width:858px;height:471px;" version="1.1" viewBox="0 0 858 471" width="858px" zoomAndPan="magnify"><defs><filter height="300%" id="f1p9gym2onaiff" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1p9gym2onaiff)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="667.2" y="183.3937"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="97.2" x2="97.2" y1="45.9563" y2="423.3094"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="672.6" x2="672.6" y1="45.9563" y2="423.3094"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="815.4" x2="815.4" y1="45.9563" y2="423.3094"/><rect fill="#FEFECE" filter="url(#f1p9gym2onaiff)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f1p9gym2onaiff)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="422.1094"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="446.1035">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#f1p9gym2onaiff)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="576.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="585" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#f1p9gym2onaiff)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="576.6" y="422.1094"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="585" y="446.1035">Business Application</text><rect fill="#FEFECE" filter="url(#f1p9gym2onaiff)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="781.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="790.2" y="27.5941">Timer</text><rect fill="#FEFECE" filter="url(#f1p9gym2onaiff)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="781.8" y="422.1094"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="790.2" y="446.1035">Timer</text><rect fill="#FFFFFF" filter="url(#f1p9gym2onaiff)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="667.2" y="183.3937"/><polygon fill="#A80036" points="110.4,78.5156,98.4,83.3156,110.4,88.1156,105.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="672" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="547.2" x="117.6" y="77.2365">transfer(to: "command/DEFAULT_TENANT/4711", subject: "getReading")</text><path d="M12,98.9156 L12,146.9156 L176.4,146.9156 L176.4,110.9156 L164.4,98.9156 L12,98.9156 " fill="#FBFB77" filter="url(#f1p9gym2onaiff)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M164.4,98.9156 L164.4,110.9156 L176.4,110.9156 L164.4,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="19.2" y="119.3959">forward command</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="69.6" x="19.2" y="137.5553">to device</text><polygon fill="#A80036" points="652.8,178.5938,664.8,183.3937,652.8,188.1938,657.6,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="660" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="105.6" y="177.3146">disposition(state: "accepted")</text><polygon fill="#A80036" points="801.6,213.5531,813.6,218.3531,801.6,223.1531,806.4,218.3531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="673.2" x2="808.8" y1="218.3531" y2="218.3531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="36" x="681.6" y="212.274">start</text><path d="M592.8,233.9531 L592.8,281.9531 L748.8,281.9531 L748.8,245.9531 L736.8,233.9531 L592.8,233.9531 " fill="#FBFB77" filter="url(#f1p9gym2onaiff)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M736.8,233.9531 L736.8,245.9531 L748.8,245.9531 L736.8,233.9531 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="130.8" x="600" y="254.4334">wait for response</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="90" x="600" y="272.5928">from device</text><polygon fill="#A80036" points="686.4,313.6312,674.4,318.4313,686.4,323.2313,681.6,318.4313" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="679.2" x2="814.8" y1="318.4313" y2="318.4313"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="104.4" x="693.6" y="312.3521">fail command</text><path d="M566.4,334.0313 L566.4,400.0313 L775.2,400.0313 L775.2,346.0313 L763.2,334.0313 L566.4,334.0313 " fill="#FBFB77" filter="url(#f1p9gym2onaiff)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M763.2,334.0313 L763.2,346.0313 L775.2,346.0313 L763.2,334.0313 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="573.6" y="354.5115">may want to close</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="100.8" x="573.6" y="372.6709">response link</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="183.6" x="573.6" y="390.8303">(if scoped to command)</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+participant Timer
+
+"Business Application" -> "AMQP 1.0 Network": transfer(to: "command/DEFAULT_TENANT/4711", subject: "getReading")
+note over "AMQP 1.0 Network"
+forward command
+to device
+end note
+"AMQP 1.0 Network" -> "Business Application"++: disposition(state: "accepted")
+"Business Application" -> Timer-: start
+note over "Business Application"
+wait for response
+from device
+end note
+Timer -> "Business Application": fail command
+note over "Business Application"
+may want to close
+response link
+(if scoped to command)
+end note
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-and-control/send_preconditions.svg b/docs/1.5/api/command-and-control/send_preconditions.svg
new file mode 100644
index 0000000..1a07746
--- /dev/null
+++ b/docs/1.5/api/command-and-control/send_preconditions.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="258px" preserveAspectRatio="none" style="width:619px;height:258px;" version="1.1" viewBox="0 0 619 258" width="619.2px" zoomAndPan="magnify"><defs><filter height="300%" id="fjqnkoz0hmfro" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="97.2" x2="97.2" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="514.2" x2="514.2" y1="45.9563" y2="209.7938"/><rect fill="#FEFECE" filter="url(#fjqnkoz0hmfro)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="27.5941">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fjqnkoz0hmfro)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="170.4" x="9.6" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="153.6" x="18" y="232.5879">AMQP 1.0 Network</text><rect fill="#FEFECE" filter="url(#fjqnkoz0hmfro)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="418.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="426.6" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#fjqnkoz0hmfro)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="418.2" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="426.6" y="232.5879">Business Application</text><polygon fill="#A80036" points="110.4,78.5156,98.4,83.3156,110.4,88.1156,105.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="513.6" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="50.4" x="117.6" y="77.2365">open()</text><polygon fill="#A80036" points="500.4,113.475,512.4,118.275,500.4,123.075,505.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="507.6" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="50.4" x="105.6" y="112.1959">open()</text><polygon fill="#A80036" points="110.4,148.4344,98.4,153.2344,110.4,158.0344,105.6,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="103.2" x2="513.6" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="375.6" x="117.6" y="147.1553">attach(sender, target: "command/${tenant_id}")</text><polygon fill="#A80036" points="500.4,183.3937,512.4,188.1938,500.4,192.9938,505.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="97.2" x2="507.6" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="388.8" x="105.6" y="182.1146">attach(receiver, source: "command/${tenant_id}")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Network"
+participant "Business Application"
+
+"Business Application" -> "AMQP 1.0 Network": open()
+"AMQP 1.0 Network" -> "Business Application": open()
+"Business Application" -> "AMQP 1.0 Network": attach(sender, target: "command/${tenant_id}")
+"AMQP 1.0 Network" -> "Business Application": attach(receiver, source: "command/${tenant_id}")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-router/index.html b/docs/1.5/api/command-router/index.html
new file mode 100644
index 0000000..0cf38b1
--- /dev/null
+++ b/docs/1.5/api/command-router/index.html
@@ -0,0 +1,3069 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Command Router API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Command Router API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Command Router API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/command-router//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/command-router/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/command-router/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/command-router/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/command-router/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/command-router/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Command Router API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#preconditions-for-invoking-the-command-router-api">Preconditions for invoking the Command Router API</a></li>
+<li><a href="#register-command-consumer-for-device">Register command consumer for device</a></li>
+<li><a href="#unregister-command-consumer-for-device">Unregister command consumer for device</a></li>
+<li><a href="#set-last-known-gateway-for-device">Set last known Gateway for Device</a></li>
+<li><a href="#standard-message-properties">Standard Message Properties</a>
+<ul>
+<li><a href="#standard-request-properties">Standard Request Properties</a></li>
+<li><a href="#standard-response-properties">Standard Response Properties</a></li>
+</ul></li>
+<li><a href="#delivery-states">Delivery States</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Command Router API Specification</h1>
+
+
+
+
+
+<p><em>Protocol Adapters</em> use the <em>Command Router API</em> to supply information with which a Command Router service component can route command & control messages to the protocol adapters that the target devices are connected to.</p>
+
+<div class="alert alert-notice">
+ <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
+ <div>The Command Router API will replace the now deprecated <a href="/hono/docs/1.5/api/device-connection/">Device Connection API</a>.</div>
+</div>
+
+<p>The Command Router API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to the service component using an AMQP 1.0 client in order to invoke operations of the API as described in the following sections.</p>
+
+<p><a name="preconditions"></a></p>
+
+<h2 id="preconditions-for-invoking-the-command-router-api">Preconditions for invoking the Command Router API</h2>
+
+<ol>
+<li>Client has established an AMQP connection with the Command Router service.</li>
+<li>Client has established an AMQP link in role <em>sender</em> on the connection using target address <code>cmd_router/${tenant_id}</code>. This link is used by the client to send request messages to the Command Router service.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> on the connection using source address <code>cmd_router/${tenant_id}/${reply-to}</code> where <em>reply-to</em> may be any arbitrary string chosen by the client. This link is used by the client to receive responses to the requests it has sent to the Command Router service. This link’s source address is also referred to as the <em>reply-to</em> address for the request messages.</li>
+</ol>
+
+<figure>
+ <img src="preconditions.svg"
+ alt="A client establishes an AMQP connection and the links required to invoke operations of the Command Router service"/> <figcaption>
+ <h4>Client connecting to Command Router service</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="register-command-consumer-for-device">Register command consumer for device</h2>
+
+<p>Clients use this command to <em>register</em> a protocol adapter instance as the consumer of command & control messages for a device or gateway currently connected to that particular adapter instance.</p>
+
+<p>Clients can provide an optional <code>lifespan</code> parameter to make the registration entry expire after the given number of seconds. Note that implementations of this API have to support this feature, otherwise the Command Router service component might fail to correctly route command messages.</p>
+
+<p>This API doesn’t mandate checks on the validity of the given device in order not to introduce a dependency on the <em>Device Registration API</em>. However, implementations of this API may choose to perform such checks or impose a restriction on the overall amount of data that can be stored per tenant in order to protect against malicious requests.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="register_cmd_consumer.svg"
+ alt="A client sends a request message for registering the command consumer and receives a response containing a confirmation"/> <figcaption>
+ <h4>Client registers the command consumer for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to register the command consumer for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>register-cmd-consumer</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>adapter_instance_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the protocol adapter instance that currently handles commands for the device or gateway identified by the <em>device_id</em> property.</td>
+</tr>
+
+<tr>
+<td align="left"><em>lifespan</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">The lifespan of the mapping entry in seconds. After that period, the registration entry shall be treated as non-existent by the Command Router service component. A negative value, as well as an omitted property, is interpreted as an unlimited lifespan.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>register command consumer for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>204</em></td>
+<td align="left">OK, the command consumer registration entry for the device has been created or updated.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the command consumer registration entry for the device has not been created or updated due to invalid or missing data in the request.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="unregister-command-consumer-for-device">Unregister command consumer for device</h2>
+
+<p>Clients use this command to <em>unregister</em> a command consumer for the given device. The consumer registration entry to be removed is identified by the provided protocol adapter instance handling command & control messages for a given device. The registration entry for the device is only removed, if the adapter instance identifier of the current registration entry matches the one given in the request.</p>
+
+<p>This API doesn’t mandate checks on the validity of the given device in order not to introduce a dependency on the <em>Device Registration API</em>. However, implementations of this API may choose to perform such checks or impose a restriction on the overall amount of data that can be stored per tenant in order to protect against malicious requests.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="unregister_cmd_consumer.svg"
+ alt="A client sends a request message for removing the consumer registration entry and receives a response containing a confirmation"/> <figcaption>
+ <h4>Client unregisters the command consumer for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to remove the consumer registration entry for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>unregister-cmd-consumer</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>adapter_instance_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the protocol adapter instance to remove the registration entry for. Only if this adapter instance is currently associated with the device or gateway identified by the <em>device_id</em> property, the registration entry will be removed.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>unregister command consumer for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>204</em></td>
+<td align="left">OK, the command consumer registration entry for the device has been removed.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message does not contain all required properties.</td>
+</tr>
+
+<tr>
+<td align="left"><em>412</em></td>
+<td align="left">Precondition failed, the registration entry for the device has not been removed because there is no command consumer registration entry matching the adapter instance assigned to the device. This may happen if the mapping entry has already been removed or its lifespan has elapsed. The entry could also have been updated with a different adapter instance identifier before, which could for example mean the device lost its connection to the protocol adapter and has reconnected to a different adapter instance. The original adapter instance trying to remove the mapping entry at some point after that will result in a <em>412</em> error response because the instance identifier doesn’t match.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="set-last-known-gateway-for-device">Set last known Gateway for Device</h2>
+
+<p>Clients use this command to <em>set</em> the gateway that last acted on behalf of a given device.</p>
+
+<p>As this operation is invoked frequently by Hono’s components, implementors may choose to keep this information in memory. This API doesn’t mandate checks on the validity of the given device or gateway IDs in order not to introduce a dependency on the <em>Device Registration API</em>. However, implementations of this API may choose to perform such checks or impose a restriction on the overall amount of data that can be stored per tenant in order to protect against malicious requests.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="set_last_known_gateway_success.svg"
+ alt="A client sends a request message for setting the last known gateway and receives a response containing a confirmation"/> <figcaption>
+ <h4>Client sets the last known gateway for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to set the last known gateway for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>set-last-gw</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>gateway_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the gateway that last acted on behalf of the device identified by the <em>device_id</em> property. For a device that connects to the adapter directly instead of through a gateway, the value of this property MUST be the same as the value of the <em>device_id</em> application property.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>set last known gateway for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>204</em></td>
+<td align="left">OK, the last known gateway for the device has been updated.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the last known gateway has not been updated due to invalid or missing data in the request.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device and/or gateway with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="standard-message-properties">Standard Message Properties</h2>
+
+<p>Due to the nature of the request/response message pattern of the operations of the Command Router API, there are some standard properties shared by all of the request and response messages exchanged as part of the operations.</p>
+
+<h3 id="standard-request-properties">Standard Request Properties</h3>
+
+<p>The following table provides an overview of the properties shared by all request messages regardless of the particular operation being invoked.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to the value defined by the particular operation being invoked.</td>
+</tr>
+
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">MAY contain an ID used to correlate a response message to the original request. If set, it is used as the <em>correlation-id</em> property in the response, otherwise the value of the <em>message-id</em> property is used. Either this or the <em>message-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an identifier that uniquely identifies the message at the sender side. Either this or the <em>correlation-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the source address that the client wants to received response messages from. This address MUST be the same as the source address used for establishing the client’s receive link (see <a href="#preconditions-for-invoking-the-device-connection-api">Preconditions</a>).</td>
+</tr>
+
+<tr>
+<td align="left"><em>device_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the ID of the device that is subject to the operation.</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="standard-response-properties">Standard Response Properties</h3>
+
+<p>The following table provides an overview of the properties shared by all response messages regardless of the particular operation being invoked.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">Contains the <em>message-id</em> (or the <em>correlation-id</em>, if specified) of the request message that this message is the response to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">Contains the status code indicating the outcome of the operation. Concrete values and their semantics are defined for each particular operation.</td>
+</tr>
+
+<tr>
+<td align="left"><em>cache_control</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains an <a href="https://tools.ietf.org/html/rfc2616#section-14.9">RFC 2616</a> compliant <em>cache directive</em>. The directive contained in the property MUST be obeyed by clients that are caching responses.</td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="delivery-states">Delivery States</h2>
+
+<p>Hono uses the following AMQP message delivery states when receiving request messages from clients:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>ACCEPTED</em></td>
+<td align="left">Indicates that the request message has been received and accepted for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><em>REJECTED</em></td>
+<td align="left">Indicates that Hono has received the request but was not able to process it. The <em>error</em> field contains information regarding the reason why. Clients should not try to re-send the request using the same message properties in this case.</td>
+</tr>
+</tbody>
+</table>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/command-router/preconditions.svg b/docs/1.5/api/command-router/preconditions.svg
new file mode 100644
index 0000000..0892aa2
--- /dev/null
+++ b/docs/1.5/api/command-router/preconditions.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="327.6px" preserveAspectRatio="none" style="width:717px;height:327px;" version="1.1" viewBox="0 0 717 327" width="717.6px" zoomAndPan="magnify"><defs><filter height="300%" id="fguxnhc3uva42" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="279.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="593.4" x2="593.4" y1="45.9563" y2="279.7125"/><rect fill="#FEFECE" filter="url(#fguxnhc3uva42)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fguxnhc3uva42)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="302.5066">Client</text><rect fill="#FEFECE" filter="url(#fguxnhc3uva42)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="477" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="485.4" y="27.5941">Command Router Service</text><rect fill="#FEFECE" filter="url(#fguxnhc3uva42)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="477" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="485.4" y="302.5066">Command Router Service</text><polygon fill="#A80036" points="579,78.5156,591,83.3156,579,88.1156,583.8,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="586.2" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="52.2" y="77.2365">1.1 open</text><polygon fill="#A80036" points="57,113.475,45,118.275,57,123.075,52.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="592.2" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="64.2" y="112.1959">1.2 open</text><polygon fill="#A80036" points="579,148.4344,591,153.2344,579,158.0344,583.8,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="586.2" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="415.2" x="52.2" y="147.1553">2.1 attach(sender, target: "cmd_router/${tenant_id}")</text><polygon fill="#A80036" points="57,183.3937,45,188.1938,57,192.9938,52.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="592.2" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="428.4" x="64.2" y="182.1146">2.2 attach(receiver, source: "cmd_router/${tenant_id}")</text><polygon fill="#A80036" points="579,218.3531,591,223.1531,579,227.9531,583.8,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="586.2" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="520.8" x="52.2" y="217.074">3.1 attach(receiver, source: "cmd_router/${tenant_id}/${reply-to}")</text><polygon fill="#A80036" points="57,253.3125,45,258.1125,57,262.9125,52.2,258.1125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="592.2" y1="258.1125" y2="258.1125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="507.6" x="64.2" y="252.0334">3.2 attach(sender, target: "cmd_router/${tenant_id}/${reply-to}")</text><!--MD5=[7e16db32b13c79c1476a0c3d663b4fb0]
+@startuml
+scale 1.2
+
+"Client" -> "Command Router Service": 1.1 open
+"Command Router Service" -> "Client": 1.2 open
+"Client" -> "Command Router Service": 2.1 attach(sender, target: "cmd_router/${tenant_id}")
+"Command Router Service" -> "Client": 2.2 attach(receiver, source: "cmd_router/${tenant_id}")
+"Client" -> "Command Router Service": 3.1 attach(receiver, source: "cmd_router/${tenant_id}/${reply-to}")
+"Command Router Service" -> "Client": 3.2 attach(sender, target: "cmd_router/${tenant_id}/${reply-to}")
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.9+11-Ubuntu-0ubuntu1.18.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-router/register_cmd_consumer.svg b/docs/1.5/api/command-router/register_cmd_consumer.svg
new file mode 100644
index 0000000..beafcda
--- /dev/null
+++ b/docs/1.5/api/command-router/register_cmd_consumer.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="271.2px" preserveAspectRatio="none" style="width:684px;height:271px;" version="1.1" viewBox="0 0 684 271" width="684px" zoomAndPan="magnify"><defs><filter height="300%" id="fyee3gbcz9qsa" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fyee3gbcz9qsa)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="502.2" y="119.6344"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="223.1531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="508.2" x2="508.2" y1="45.9563" y2="223.1531"/><rect fill="#FEFECE" filter="url(#fyee3gbcz9qsa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fyee3gbcz9qsa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="221.9531"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="245.9473">Client</text><rect fill="#FEFECE" filter="url(#fyee3gbcz9qsa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="391.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="400.2" y="27.5941">Command Router Service</text><rect fill="#FEFECE" filter="url(#fyee3gbcz9qsa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="391.8" y="221.9531"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="400.2" y="245.9473">Command Router Service</text><rect fill="#FFFFFF" filter="url(#fyee3gbcz9qsa)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="502.2" y="119.6344"/><polygon fill="#A80036" points="487.8,114.8344,499.8,119.6344,487.8,124.4344,492.6,119.6344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="495" y1="119.6344" y2="119.6344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="328.8" x="52.2" y="77.2365">transfer(subject: "register-cmd-consumer",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="426" x="57" y="95.3959">device_id: "device-1", adapter_instance_id: "adapter_1",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="112.8" x="57" y="113.5553">lifespan: 3600)</text><path d="M342,135.2344 L342,165.2344 L669.6,165.2344 L669.6,147.2344 L657.6,135.2344 L342,135.2344 " fill="#FBFB77" filter="url(#fyee3gbcz9qsa)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M657.6,135.2344 L657.6,147.2344 L669.6,147.2344 L657.6,135.2344 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="302.4" x="349.2" y="155.7146">register command consumer for device</text><polygon fill="#A80036" points="57,196.7531,45,201.5531,57,206.3531,52.2,201.5531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="507" y1="201.5531" y2="201.5531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="170.4" x="64.2" y="195.474">transfer(status: "204")</text><!--MD5=[e273b2a6b49774726aacbf998d4b35d5]
+@startuml
+scale 1.2
+
+Client -> "Command Router Service": transfer(subject: "register-cmd-consumer", \n device_id: "device-1", adapter_instance_id: "adapter_1", \n lifespan: 3600)
+activate "Command Router Service"
+note over "Command Router Service"
+register command consumer for device
+end note
+"Command Router Service" -> Client: transfer(status: "204")
+deactivate "Command Router Service"
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.9+11-Ubuntu-0ubuntu1.18.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-router/set_last_known_gateway_success.svg b/docs/1.5/api/command-router/set_last_known_gateway_success.svg
new file mode 100644
index 0000000..c355d73
--- /dev/null
+++ b/docs/1.5/api/command-router/set_last_known_gateway_success.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="234px" preserveAspectRatio="none" style="width:771px;height:234px;" version="1.1" viewBox="0 0 771 234" width="771.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f1aqzj0u7h083b" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1aqzj0u7h083b)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="612.6" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="186.8344"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="618.6" x2="618.6" y1="45.9563" y2="186.8344"/><rect fill="#FEFECE" filter="url(#f1aqzj0u7h083b)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f1aqzj0u7h083b)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="209.6285">Client</text><rect fill="#FEFECE" filter="url(#f1aqzj0u7h083b)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="502.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="510.6" y="27.5941">Command Router Service</text><rect fill="#FEFECE" filter="url(#f1aqzj0u7h083b)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="502.2" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="510.6" y="209.6285">Command Router Service</text><rect fill="#FFFFFF" filter="url(#f1aqzj0u7h083b)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="612.6" y="83.3156"/><polygon fill="#A80036" points="598.2,78.5156,610.2,83.3156,598.2,88.1156,603,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="605.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="546" x="52.2" y="77.2365">transfer(subject: "set-last-gw", device_id: "device-1", gateway_id: "gw-1)</text><path d="M475.2,98.9156 L475.2,128.9156 L757.2,128.9156 L757.2,110.9156 L745.2,98.9156 L475.2,98.9156 " fill="#FBFB77" filter="url(#f1aqzj0u7h083b)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M745.2,98.9156 L745.2,110.9156 L757.2,110.9156 L745.2,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="256.8" x="482.4" y="119.3959">set last known gateway for device</text><polygon fill="#A80036" points="57,160.4344,45,165.2344,57,170.0344,52.2,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="617.4" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="170.4" x="64.2" y="159.1553">transfer(status: "204")</text><!--MD5=[f6a920940373761d6092c1d5adaff625]
+@startuml
+scale 1.2
+
+Client -> "Command Router Service": transfer(subject: "set-last-gw", device_id: "device-1", gateway_id: "gw-1)
+activate "Command Router Service"
+note over "Command Router Service"
+set last known gateway for device
+end note
+"Command Router Service" -> Client: transfer(status: "204")
+deactivate "Command Router Service"
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.9+11-Ubuntu-0ubuntu1.18.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/command-router/unregister_cmd_consumer.svg b/docs/1.5/api/command-router/unregister_cmd_consumer.svg
new file mode 100644
index 0000000..0aba1aa
--- /dev/null
+++ b/docs/1.5/api/command-router/unregister_cmd_consumer.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="253.2px" preserveAspectRatio="none" style="width:691px;height:253px;" version="1.1" viewBox="0 0 691 253" width="691.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f1ejbj2o6zu4bx" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1ejbj2o6zu4bx)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="498.6" y="101.475"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="204.9938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="504.6" x2="504.6" y1="45.9563" y2="204.9938"/><rect fill="#FEFECE" filter="url(#f1ejbj2o6zu4bx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f1ejbj2o6zu4bx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="203.7938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="227.7879">Client</text><rect fill="#FEFECE" filter="url(#f1ejbj2o6zu4bx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="388.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="396.6" y="27.5941">Command Router Service</text><rect fill="#FEFECE" filter="url(#f1ejbj2o6zu4bx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="228" x="388.2" y="203.7938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="211.2" x="396.6" y="227.7879">Command Router Service</text><rect fill="#FFFFFF" filter="url(#f1ejbj2o6zu4bx)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="498.6" y="101.475"/><polygon fill="#A80036" points="484.2,96.675,496.2,101.475,484.2,106.275,489,101.475" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="491.4" y1="101.475" y2="101.475"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="348" x="52.2" y="77.2365">transfer(subject: "unregister-cmd-consumer",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="427.2" x="57" y="95.3959">device_id: "device-1", adapter_instance_id: "adapter_1")</text><path d="M327.6,117.075 L327.6,147.075 L676.8,147.075 L676.8,129.075 L664.8,117.075 L327.6,117.075 " fill="#FBFB77" filter="url(#f1ejbj2o6zu4bx)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M664.8,117.075 L664.8,129.075 L676.8,129.075 L664.8,117.075 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="324" x="334.8" y="137.5553">Unregister command consumer for device</text><polygon fill="#A80036" points="57,178.5938,45,183.3937,57,188.1938,52.2,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="503.4" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="170.4" x="64.2" y="177.3146">transfer(status: "204")</text><!--MD5=[4fd25f20937c93ff6fbb4e1abe0a79c3]
+@startuml
+scale 1.2
+
+Client -> "Command Router Service": transfer(subject: "unregister-cmd-consumer", \n device_id: "device-1", adapter_instance_id: "adapter_1")
+activate "Command Router Service"
+note over "Command Router Service"
+Unregister command consumer for device
+end note
+"Command Router Service" -> Client: transfer(status: "204")
+deactivate "Command Router Service"
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.9+11-Ubuntu-0ubuntu1.18.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/credentials/get-credentials-success.svg b/docs/1.5/api/credentials/get-credentials-success.svg
new file mode 100644
index 0000000..c613d22
--- /dev/null
+++ b/docs/1.5/api/credentials/get-credentials-success.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="318px" preserveAspectRatio="none" style="width:510px;height:318px;" version="1.1" viewBox="0 0 510 318" width="510px" zoomAndPan="magnify"><defs><filter height="300%" id="f1dsrh88hi7ryz" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1dsrh88hi7ryz)" height="165.1969" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="406.2" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="270.1125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="412.2" x2="412.2" y1="45.9563" y2="270.1125"/><rect fill="#FEFECE" filter="url(#f1dsrh88hi7ryz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f1dsrh88hi7ryz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="268.9125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="292.9066">Client</text><rect fill="#FEFECE" filter="url(#f1dsrh88hi7ryz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="322.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="330.6" y="27.5941">Credentials Service</text><rect fill="#FEFECE" filter="url(#f1dsrh88hi7ryz)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="322.2" y="268.9125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="330.6" y="292.9066">Credentials Service</text><rect fill="#FFFFFF" filter="url(#f1dsrh88hi7ryz)" height="165.1969" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="406.2" y="83.3156"/><polygon fill="#A80036" points="391.8,78.5156,403.8,83.3156,391.8,88.1156,396.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="399" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="339.6" x="52.2" y="77.2365">transfer(subject: "get", body: search criteria)</text><path d="M49.2,98.9156 L49.2,164.9156 L258,164.9156 L258,110.9156 L246,98.9156 L49.2,98.9156 " fill="#FBFB77" filter="url(#f1dsrh88hi7ryz)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M246,98.9156 L246,110.9156 L258,110.9156 L246,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="183.6" x="56.4" y="119.3959">search criteria is a JSON</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="152.4" x="56.4" y="137.5553">object that contains</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="126" x="56.4" y="155.7146">type and auth-id</text><path d="M327.6,182.1938 L327.6,212.1938 L492,212.1938 L492,194.1938 L480,182.1938 L327.6,182.1938 " fill="#FBFB77" filter="url(#f1dsrh88hi7ryz)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M480,182.1938 L480,194.1938 L492,194.1938 L480,182.1938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="334.8" y="202.674">lookup credentials</text><polygon fill="#A80036" points="57,243.7125,45,248.5125,57,253.3125,52.2,248.5125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="411" y1="248.5125" y2="248.5125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="310.8" x="64.2" y="242.4334">transfer(status: "200", body: credentials)</text><!--
+@startuml
+scale 1.2
+
+Client -> "Credentials Service"++: transfer(subject: "get", body: search criteria)
+note right of Client
+search criteria is a JSON
+object that contains
+type and auth-id
+end note
+
+note over "Credentials Service"
+lookup credentials
+end note
+
+"Credentials Service" -> Client- -: transfer(status: "200", body: credentials)
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/credentials/index.html b/docs/1.5/api/credentials/index.html
new file mode 100644
index 0000000..89c5599
--- /dev/null
+++ b/docs/1.5/api/credentials/index.html
@@ -0,0 +1,3418 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Credentials API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Credentials API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Credentials API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/credentials//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/credentials/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/credentials/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/credentials/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/credentials/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/credentials/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/credentials/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/credentials/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/credentials/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/credentials/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/credentials/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Credentials API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#preconditions-for-invoking-the-credentials-api">Preconditions for invoking the Credentials API</a></li>
+<li><a href="#get-credentials">Get Credentials</a></li>
+<li><a href="#delivery-states">Delivery States</a></li>
+<li><a href="#credentials-format">Credentials Format</a>
+<ul>
+<li><a href="#secrets-format">Secrets Format</a></li>
+<li><a href="#examples">Examples</a></li>
+</ul></li>
+<li><a href="#credential-verification">Credential Verification</a></li>
+<li><a href="#standard-credential-types">Standard Credential Types</a>
+<ul>
+<li><a href="#common-properties">Common Properties</a></li>
+<li><a href="#hashed-password">Hashed Password</a></li>
+<li><a href="#pre-shared-key">Pre-Shared Key</a></li>
+<li><a href="#x-509-certificate">X.509 Certificate</a></li>
+</ul></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Credentials API Specification</h1>
+
+
+
+
+
+<p>The <em>Credentials API</em> is used by <em>Protocol Adapters</em> to retrieve credentials used to authenticate <em>Devices</em> connecting to the adapter. In particular, the API supports to look up <em>shared secrets</em> which are often used by IoT devices by means of <em>username/password</em> based authentication schemes.</p>
+
+<p>Credentials are of a certain <em>type</em> which indicates which authentication mechanism the credentials can be used with. Each set of credentials also contains an <em>authentication identity</em> which is the identity claimed by the device during authentication. This authentication identity is usually different from the <em>device-id</em> the device has been registered under. A device may have multiple sets of credentials, using arbitrary <em>authentication identities</em>.</p>
+
+<p>The Credentials API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to Hono using an AMQP 1.0 client in order to invoke operations of the API as described in the following sections.</p>
+
+<p><a name="preconditions"></a></p>
+
+<h2 id="preconditions-for-invoking-the-credentials-api">Preconditions for invoking the Credentials API</h2>
+
+<ol>
+<li>Client has established an AMQP connection with the Credentials service.</li>
+<li>Client has established an AMQP link in role <em>sender</em> on the connection using target address <code>credentials/${tenant_id}</code>. This link is used by the client to send commands to the Credentials service.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> on the connection using source address <code>credentials/${tenant_id}/${reply-to}</code> where <em>reply-to</em> may be any arbitrary string chosen by the client. This link is used by the client to receive responses to the requests it has sent to the Credentials service. This link’s source address is also referred to as the <em>reply-to</em> address for the request messages.</li>
+</ol>
+
+<figure>
+ <img src="preconditions.svg"
+ alt="A client establishes an AMQP connection and the links required to invoke operations of the Credentials service"/> <figcaption>
+ <h4>Client connecting to Credentials service</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="get-credentials">Get Credentials</h2>
+
+<p>Protocol adapters use this command to <em>look up</em> credentials of a particular type for a device identity.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="get-credentials-success.svg"
+ alt="A client sends a request message for looking up device credentials and receives a response containing the credentials"/> <figcaption>
+ <h4>Client looking up credentials for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on an <em>get credentials</em> message.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">MAY contain an ID used to correlate a response message to the original request. If set, it is used as the <em>correlation-id</em> property in the response, otherwise the value of the <em>message-id</em> property is used. Either this or the <em>message-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an identifier that uniquely identifies the message at the sender side. Either this or the <em>correlation-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the source address that the client wants to receive response messages from. This address MUST be the same as the source address used for establishing the client’s receive link (see <a href="#preconditions-for-invoking-the-credentials-api">Preconditions</a>).</td>
+</tr>
+
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the value <code>get</code>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the request MUST consist of a single <em>Data</em> section containing a UTF-8 encoded string representation of a single JSON object having the following members:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>type</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The type of credentials to look up. Potential values include (but are not limited to) <code>psk</code>, <code>x509-cert</code>, <code>hashed-password</code> etc.</td>
+</tr>
+
+<tr>
+<td align="left"><em>auth-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The authentication identifier to look up credentials for.</td>
+</tr>
+
+<tr>
+<td align="left"><em>client-certificate</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The client certificate the device authenticated with. If present, it MUST be the DER encoding of the (validated) X.509 client certificate as a Base64 encoded byte array and it’s subject DN MUST match the <em>auth-id</em>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The <em>client-certificate</em> property MAY be used by the service implementation for auto-provisioning of devices.
+To do so, the device registry needs to create credentials (and registration data) for the device if they do not already exist.</p>
+
+<p>Additionally, the body MAY contain arbitrary properties that service implementations can use to determine a device’s identity.</p>
+
+<p>The following request payload may be used to look up the hashed password for a device with the authentication identifier <code>sensor1</code>:</p>
+
+<pre><code class="language-json">{
+ "type": "hashed-password",
+ "auth-id": "sensor1"
+}
+</code></pre>
+
+<p>The following request payload may be used to look up <em>or create</em> <code>x509-cert</code> credentials for a device with the authentication identifier <code>CN=device-1,O=ACME Corporation</code>:</p>
+
+<pre><code class="language-json">{
+ "type": "x509-cert",
+ "auth-id": "CN=device-1,O=ACME Corporation",
+ "client-certificate": "DeviceCert=="
+}
+</code></pre>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>get credentials</em> request contains the following properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">Contains the <em>message-id</em> (or the <em>correlation-id</em>, if specified) of the request message that this message is the response to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>application/json</code> if the invocation of the operation was successful and the body of the response message contains payload as described below.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">Contains the status code indicating the outcome of the operation. Concrete values and their semantics are defined below.</td>
+</tr>
+
+<tr>
+<td align="left"><em>cache_control</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains an <a href="https://tools.ietf.org/html/rfc2616#section-14.9">RFC 2616</a> compliant <em>cache directive</em>. The directive contained in the property MUST be obeyed by clients that are caching responses.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The response message payload MUST contain credential information as defined in <a href="#credentials-format">Credentials Format</a> if the <em>status</em> is <code>200</code> or <code>201</code>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>200</em></td>
+<td align="left">OK, the payload contains the credentials for the authentication identifier.</td>
+</tr>
+
+<tr>
+<td align="left"><em>201</em></td>
+<td align="left">Created, the payload contains the newly created credentials for the authentication identifier.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message did not contain all mandatory properties or the subject DN of the certificate does not match the authentication identifier.</td>
+</tr>
+
+<tr>
+<td align="left"><em>404</em></td>
+<td align="left">Not Found, there are no credentials registered matching the criteria.</td>
+</tr>
+</tbody>
+</table>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.
+In this case, the response message’s <em>content-type</em> property SHOULD be set accordingly.</p>
+
+<h2 id="delivery-states">Delivery States</h2>
+
+<p>The Credentials service uses the following AMQP message delivery states when receiving request messages from clients:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>ACCEPTED</em></td>
+<td align="left">Indicates that the request message has been received and accepted for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><em>REJECTED</em></td>
+<td align="left">Indicates that the request message has been received but cannot be processed. The disposition frame’s <em>error</em> field contains information regarding the reason why. Clients should not try to re-send the request using the same message properties in this case.</td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="credentials-format">Credentials Format</h2>
+
+<p>Credential data is carried in the body of an AMQP message as part of a single <em>Data</em> section. The message’s <em>content-type</em> property must be set to <code>application/json</code>.</p>
+
+<p>The credential data is contained in the Data section as a UTF-8 encoded string representation of a single JSON object. It is an error to include payload that is not of this type.</p>
+
+<p>The table below provides an overview of the standard members defined for the JSON object:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>device-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The ID of the device to which the credentials belong.</td>
+</tr>
+
+<tr>
+<td align="left"><em>type</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The credential type name. The value may be arbitrarily chosen by clients but SHOULD reflect the particular type of authentication mechanism the credentials are to be used with. Possible values include (but are not limited to) <code>psk</code>, <code>x509-cert</code>, <code>hashed-password</code> etc.</td>
+</tr>
+
+<tr>
+<td align="left"><em>auth-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The identity that the device should be authenticated as.</td>
+</tr>
+
+<tr>
+<td align="left"><em>enabled</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>boolean</em></td>
+<td align="left"><em>true</em></td>
+<td align="left">If set to <em>false</em> the credentials are not supposed to be used to authenticate devices any longer. This may e.g. be used to disable a particular mechanism for authenticating the device. <strong>NB</strong> It is the responsibility of the protocol adapter to make use of this information.</td>
+</tr>
+
+<tr>
+<td align="left"><em>secrets</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>array</em></td>
+<td align="left"></td>
+<td align="left">A list of secrets scoped to a particular time period. See <a href="#secrets-format">Secrets Format</a> for details. <strong>NB</strong> This array must contain at least one element - an empty array is considered an error.</td>
+</tr>
+</tbody>
+</table>
+
+<p>For each set of credentials the combination of <em>auth-id</em> and <em>type</em> MUST be unique within a tenant.</p>
+
+<p>The device registry may choose to not return information which is not suitable for authentication a device. This includes for example the <code>enabled</code> property. If set to <code>false</code>, then the device registry may choose to treat this request as if no credentials would be found. For secrets for example, this could mean that the device registry does not return secrets which are not valid at the current point in time.</p>
+
+<p><strong>NB</strong> Care needs to be taken that the value for the <em>authentication identifier</em> is compliant with the authentication mechanism(s) it is supposed to be used with. For example, when using standard HTTP Basic authentication, the <em>username</em> part of the Basic Authorization header value (which corresponds to the <em>auth-id</em>) MUST not contain any <em>colon</em> (<code>:</code>) characters, because the colon character is used as the separator between username and password. Similar constraints may exist for other authentication mechanisms, so the <em>authentication identifier</em> needs to be chosen with the anticipated mechanism(s) being used in mind. Otherwise, devices may fail to authenticate with protocol adapters, even if the credentials provided by the device match the credentials registered for the device. In general, using only characters from the <code>[a-zA-Z0-9_-]</code> range for the authentication identifier should be compatible with most mechanisms.</p>
+
+<h3 id="secrets-format">Secrets Format</h3>
+
+<p>Each set of credentials may contain arbitrary <em>secrets</em> scoped to a particular <em>validity period</em> during which the secrets may be used for authenticating a device. The validity periods MAY overlap in order to support the process of changing a secret on a device that itself doesn’t support the definition of multiple secrets for gapless authentication across adjacent validity periods.</p>
+
+<p>The table below contains the properties used to define the validity period of a single secret:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>not-before</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>null</code></td>
+<td align="left">The point in time from which on the secret may be used to authenticate devices. If not <em>null</em>, the value MUST be an <a href="https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations">ISO 8601 compliant <em>combined date and time representation in extended format</em></a>. <strong>NB</strong> It is up to the discretion of the protocol adapter to make use of this information.</td>
+</tr>
+
+<tr>
+<td align="left"><em>not-after</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>null</code></td>
+<td align="left">The point in time until which the secret may be used to authenticate devices. If not <em>null</em>, the value MUST be an <a href="https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations">ISO 8601 compliant <em>combined date and time representation in extended format</em></a>. <strong>NB</strong> It is up to the discretion of the protocol adapter to make use of this information.</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="examples">Examples</h3>
+
+<p>Below is an example for a payload containing <a href="#hashed-password">a hashed password</a> for device <code>4711</code> with auth-id <code>sensor1</code> using SHA512 as the hashing function with a 4 byte salt (Base64 encoding of <code>0x32AEF017</code>). Note that the payload does not contain a <code>not-before</code> property, thus it may be used immediately up until X-mas eve 2017.</p>
+
+<pre><code class="language-json">{
+ "device-id": "4711",
+ "type": "hashed-password",
+ "auth-id": "sensor1",
+ "enabled": true,
+ "secrets": [{
+ "not-after": "2017-12-24T19:00:00+0100",
+ "pwd-hash": "AQIDBAUGBwg=",
+ "salt": "Mq7wFw==",
+ "hash-function": "sha-512"
+ }]
+}
+</code></pre>
+
+<p>The next example contains two <a href="#pre-shared-key">pre-shared keys</a> with overlapping validity periods for device <code>myDevice</code> with PSK identity <code>little-sensor2</code>.</p>
+
+<pre><code class="language-json">{
+ "device-id": "myDevice",
+ "type": "psk",
+ "auth-id": "little-sensor2",
+ "enabled": true,
+ "secrets": [{
+ "not-after": "2017-07-01T00:00:00+0100",
+ "key": "cGFzc3dvcmRfb2xk"
+ },{
+ "not-before": "2017-06-29T00:00:00+0100",
+ "key": "cGFzc3dvcmRfbmV3"
+ }]
+}
+</code></pre>
+
+<h2 id="credential-verification">Credential Verification</h2>
+
+<p>Protocol Adapters are responsible for authenticating devices when they connect. The Credentials API provides the <a href="#get-credentials">Get Credentials</a> operation to support Protocol Adapters in doing so as illustrated below:</p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in a <em>Protocol Adapter</em> authenticating a device.
+This is shown for the <em>MQTT Protocol Adapter</em> as example how a device authenticates with a username and a hashed-password.
+The mechanism can be transferred to other protocols in a similar manner.</p>
+
+<figure>
+ <img src="mqtt_adapter_device_authentication.svg"
+ alt="The MQTT Adapter sends a request message for looking up credentials presented by a device and receives a response containing the credentials for verification"/> <figcaption>
+ <h4>MQTT Adapter authenticates device using the Credentials service</h4>
+ </figcaption>
+</figure>
+
+
+<p>Protocol adapters MUST comply with the following rules when verifying credentials presented by a device:</p>
+
+<ul>
+<li>Credentials that have their <em>enabled</em> property set to <code>false</code> MUST NOT be used for authentication.</li>
+
+<li><p>Adapters MUST only consider secrets for authentication which</p>
+
+<ul>
+<li>have their <em>not-before</em> property set to either <code>null</code> or the current or a past point in time <strong>and</strong></li>
+<li>have their <em>not-after</em> property set to either <code>null</code> or the current or a future point in time.</li>
+</ul></li>
+</ul>
+
+<h2 id="standard-credential-types">Standard Credential Types</h2>
+
+<p>The following sections define some standard credential types and their properties. Applications are encouraged to make use of these types. However, the types are not enforced anywhere in Hono and clients may of course add application specific properties to the credential types.</p>
+
+<h3 id="common-properties">Common Properties</h3>
+
+<p>All credential types used with Hono MUST contain <code>device-id</code>, <code>type</code>, <code>auth-id</code>, <code>enabled</code> and <code>secrets</code> properties as defined in <a href="#credentials-format">Credentials Format</a>.</p>
+
+<h3 id="hashed-password">Hashed Password</h3>
+
+<p>A credential type for storing a (hashed) password for a device.</p>
+
+<p>Example:</p>
+
+<pre><code class="language-json">{
+ "device-id": "4711",
+ "type": "hashed-password",
+ "auth-id": "sensor1",
+ "secrets": [{
+ "pwd-hash": "AQIDBAUGBwg=",
+ "salt": "Mq7wFw==",
+ "hash-function": "sha-512"
+ }]
+}
+</code></pre>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>type</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The credential type name, always <code>hashed-password</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>auth-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The identity that the device should be authenticated as.</td>
+</tr>
+
+<tr>
+<td align="left"><em>pwd-hash</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The password hash (see table below for details).</td>
+</tr>
+
+<tr>
+<td align="left"><em>salt</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"></td>
+<td align="left">The Base64 encoding of the <em>salt</em> used in the password hash (see table below for details).</td>
+</tr>
+
+<tr>
+<td align="left"><nobr><em>hash-function</em><nobr></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>sha-256</code></td>
+<td align="left">The name of the hash function used to create the password hash. The hash functions supported by Hono are described in the table below.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>NB</strong> It is strongly recommended to use salted password hashes only. Furthermore, the salt should be unique per user and password, so no lookup table or rainbow table attacks can be used to crack the salt-hashed password.
+Whenever a password is updated for a user, the salt should change as well.</p>
+
+<p><strong>NB</strong> The example above does not contain any of the <code>not-before</code>, <code>not-after</code> and <code>enabled</code> properties, thus the credentials can be used at any time according to the rules defined in <a href="#credential-verification">Credential Verification</a>.</p>
+
+<p>The table below describes the hash functions supported by Hono and how they map to the <em>secret</em> structure.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Salt Usage</th>
+<th align="left">Salt Location</th>
+<th align="left">Password Hash Format</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>sha-256</em></td>
+<td align="center">optional</td>
+<td align="left"><em>salt</em> field</td>
+<td align="left">The Base64 encoding of the bytes resulting from applying the <em>sha-256</em> hash function to the byte array consisting of the salt bytes (if a salt is used) and the UTF-8 encoding of the clear text password.</td>
+</tr>
+
+<tr>
+<td align="left"><em>sha-512</em></td>
+<td align="center">optional</td>
+<td align="left"><em>salt</em> field</td>
+<td align="left">The Base64 encoding of the bytes resulting from applying the <em>sha-512</em> hash function to the byte array consisting of the salt bytes (if a salt is used) and the UTF-8 encoding of the clear text password.</td>
+</tr>
+
+<tr>
+<td align="left"><em>bcrypt</em></td>
+<td align="center">mandatory</td>
+<td align="left"><em>pwd-hash</em> value</td>
+<td align="left">The output of applying the <em>Bcrypt</em> hash function to the clear text password. The salt is contained in the password hash.<br><strong>NB</strong> Hono (currently) uses <a href="https://docs.spring.io/spring-security/site/docs/4.2.7.RELEASE/reference/htmlsingle/#core-services-password-encoding">Spring Security</a> for matching clear text passwords against Bcrypt hashes. However, this library only supports hashes containing the <code>$2a$</code> prefix (see <a href="https://github.com/fpirsch/twin-bcrypt#about-prefixes">https://github.com/fpirsch/twin-bcrypt#about-prefixes</a>) so Hono will fail to verify any passwords for which the corresponding Bcrypt hashes returned by the Credentials service contain e.g. the <code>$2y$</code> prefix.</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="pre-shared-key">Pre-Shared Key</h3>
+
+<p>A credential type for storing a <em>Pre-shared Key</em> as used in (D)TLS handshakes.</p>
+
+<p>Example:</p>
+
+<pre><code class="language-json">{
+ "device-id": "4711",
+ "type": "psk",
+ "auth-id": "little-sensor2",
+ "secrets": [{
+ "key": "AQIDBAUGBwg="
+ }]
+}
+</code></pre>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>type</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The credential type name, always <code>psk</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>auth-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The PSK identity.</td>
+</tr>
+
+<tr>
+<td align="left"><em>key</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The Base64 encoded bytes representing the shared (secret) key.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>NB</strong> The example above does not contain any of the <code>not-before</code>, <code>not-after</code> and <code>enabled</code> properties, thus the credentials can be used at any time according to the rules defined in <a href="#credential-verification">Credential Verification</a>.</p>
+
+<h3 id="x-509-certificate">X.509 Certificate</h3>
+
+<p>A credential type for storing the <a href="https://www.ietf.org/rfc/rfc2253.txt">RFC 2253</a> formatted <em>subject DN</em> of a client certificate that is used to authenticate the device as part of a (D)TLS handshake.</p>
+
+<p>Example:</p>
+
+<pre><code class="language-json">{
+ "device-id": "4711",
+ "type": "x509-cert",
+ "auth-id": "CN=device-1,O=ACME Corporation",
+ "secrets": [{}]
+}
+</code></pre>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>type</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The credential type name, always <code>x509-cert</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>auth-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The subject DN of the client certificate in the format defined by <a href="https://www.ietf.org/rfc/rfc2253.txt">RFC 2253</a>.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>NB</strong> The example above does not contain any of the <code>not-before</code>, <code>not-after</code> and <code>enabled</code> properties. The <code>not-before</code> and <code>not-after</code> properties should be omitted if the validity period is the same as the period indicated by the client certificate’s corresponding properties. It is still necessary to provide a (empty) JSON object in the <em>secrets</em> array, though.</p>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/credentials/mqtt_adapter_device_authentication.svg b/docs/1.5/api/credentials/mqtt_adapter_device_authentication.svg
new file mode 100644
index 0000000..e959d61
--- /dev/null
+++ b/docs/1.5/api/credentials/mqtt_adapter_device_authentication.svg
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="369.6px" preserveAspectRatio="none" style="width:1081px;height:369px;" version="1.1" viewBox="0 0 1081 369" width="1081.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f1qbr6ythy67tc" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="216.9562" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="318.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="977.4" y="118.275"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="321.8719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="324" x2="324" y1="45.9563" y2="321.8719"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="983.4" x2="983.4" y1="45.9563" y2="321.8719"/><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="320.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="344.666">Device</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="254.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="262.8" y="27.5941">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="254.4" y="320.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="262.8" y="344.666">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="893.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="901.8" y="27.5941">Credentials Service</text><rect fill="#FEFECE" filter="url(#f1qbr6ythy67tc)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="893.4" y="320.6719"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="901.8" y="344.666">Credentials Service</text><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="216.9562" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="318.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1qbr6ythy67tc)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="977.4" y="118.275"/><polygon fill="#A80036" points="304.2,78.5156,316.2,83.3156,304.2,88.1156,309,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="311.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="247.2" x="57" y="77.2365">CONNECT(username, password)</text><polygon fill="#A80036" points="963,113.475,975,118.275,963,123.075,967.8,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="330.6" x2="970.2" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="624" x="339" y="112.1959">transfer(subject: "get", body: {"type": "hashed-password", "auth-id": $username})</text><path d="M898.8,133.875 L898.8,163.875 L1063.2,163.875 L1063.2,145.875 L1051.2,133.875 L898.8,133.875 " fill="#FBFB77" filter="url(#f1qbr6ythy67tc)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M1051.2,133.875 L1051.2,145.875 L1063.2,145.875 L1051.2,133.875 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="139.2" x="906" y="154.3553">lookup credentials</text><polygon fill="#A80036" points="343.8,195.3937,331.8,200.1938,343.8,204.9938,339,200.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="336.6" x2="982.2" y1="200.1938" y2="200.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="310.8" x="351" y="194.1146">transfer(status: "200", body: credentials)</text><path d="M70.8,215.7938 L70.8,263.7938 L573.6,263.7938 L573.6,227.7938 L561.6,215.7938 L70.8,215.7938 " fill="#FBFB77" filter="url(#f1qbr6ythy67tc)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M561.6,215.7938 L561.6,227.7938 L573.6,227.7938 L561.6,215.7938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="349.2" x="78" y="236.274">1.) Apply (salted) hash-algorithm to password</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="477.6" x="78" y="254.4334">2.) Compare result with the hashed-password from credentials</text><polygon fill="#A80036" points="61.8,295.4719,49.8,300.2719,61.8,305.0719,57,300.2719" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="323.4" y1="300.2719" y2="300.2719"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="78" x="69" y="294.1928">CONNACK</text><!--
+@startuml
+scale 1.2
+
+Device -> "MQTT Adapter"++: CONNECT(username, password)
+
+"MQTT Adapter" -> "Credentials Service"++: transfer(subject: "get", body: {"type": "hashed-password", "auth-id": $username})
+note over "Credentials Service": lookup credentials
+"Credentials Service" -> "MQTT Adapter"- -: transfer(status: "200", body: credentials)
+
+note over "MQTT Adapter"
+1.) Apply (salted) hash-algorithm to password
+2.) Compare result with the hashed-password from credentials
+end note
+"MQTT Adapter" -> Device- -: CONNACK
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/credentials/preconditions.svg b/docs/1.5/api/credentials/preconditions.svg
new file mode 100644
index 0000000..b06ed88
--- /dev/null
+++ b/docs/1.5/api/credentials/preconditions.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="327.6px" preserveAspectRatio="none" style="width:625px;height:327px;" version="1.1" viewBox="0 0 625 327" width="625.2px" zoomAndPan="magnify"><defs><filter height="300%" id="fxmll93e7nmsu" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fxmll93e7nmsu)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="521.4" y="83.3156"/><rect fill="#FFFFFF" filter="url(#fxmll93e7nmsu)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="521.4" y="153.2344"/><rect fill="#FFFFFF" filter="url(#fxmll93e7nmsu)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="521.4" y="223.1531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="279.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="527.4" x2="527.4" y1="45.9563" y2="279.7125"/><rect fill="#FEFECE" filter="url(#fxmll93e7nmsu)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fxmll93e7nmsu)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="302.5066">Client</text><rect fill="#FEFECE" filter="url(#fxmll93e7nmsu)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="437.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="445.8" y="27.5941">Credentials Service</text><rect fill="#FEFECE" filter="url(#fxmll93e7nmsu)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="175.2" x="437.4" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="158.4" x="445.8" y="302.5066">Credentials Service</text><rect fill="#FFFFFF" filter="url(#fxmll93e7nmsu)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="521.4" y="83.3156"/><rect fill="#FFFFFF" filter="url(#fxmll93e7nmsu)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="521.4" y="153.2344"/><rect fill="#FFFFFF" filter="url(#fxmll93e7nmsu)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="521.4" y="223.1531"/><polygon fill="#A80036" points="507,78.5156,519,83.3156,507,88.1156,511.8,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="514.2" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="52.2" y="77.2365">1.1 open</text><polygon fill="#A80036" points="57,113.475,45,118.275,57,123.075,52.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="526.2" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="64.2" y="112.1959">1.2 open</text><polygon fill="#A80036" points="507,148.4344,519,153.2344,507,158.0344,511.8,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="514.2" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="354" x="52.2" y="147.1553">2.1 attach(sender, "credentials/${tenant_id}")</text><polygon fill="#A80036" points="57,183.3937,45,188.1938,57,192.9938,52.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="526.2" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="362.4" x="64.2" y="182.1146">2.2 attach(receiver, "credentials/${tenant_id}")</text><polygon fill="#A80036" points="507,218.3531,519,223.1531,507,227.9531,511.8,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="514.2" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="454.8" x="52.2" y="217.074">3.1 attach(receiver, "credentials/${tenant_id}/${reply-to}")</text><polygon fill="#A80036" points="57,253.3125,45,258.1125,57,262.9125,52.2,258.1125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="526.2" y1="258.1125" y2="258.1125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="446.4" x="64.2" y="252.0334">3.2 attach(sender, "credentials/${tenant_id}/${reply-to}")</text><!--
+@startuml
+scale 1.2
+
+Client -> "Credentials Service"++: 1.1 open
+"Credentials Service" -> Client- -: 1.2 open
+Client -> "Credentials Service"++: 2.1 attach(sender, "credentials/${tenant_id}")
+"Credentials Service" -> Client- -: 2.2 attach(receiver, "credentials/${tenant_id}")
+Client -> "Credentials Service"++: 3.1 attach(receiver, "credentials/${tenant_id}/${reply-to}")
+"Credentials Service" -> Client- -: 3.2 attach(sender, "credentials/${tenant_id}/${reply-to}")
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-connection/get_cmd_handling_adapter_instances.svg b/docs/1.5/api/device-connection/get_cmd_handling_adapter_instances.svg
new file mode 100644
index 0000000..28cb767
--- /dev/null
+++ b/docs/1.5/api/device-connection/get_cmd_handling_adapter_instances.svg
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="354px" preserveAspectRatio="none" style="width:726px;height:354px;" version="1.1" viewBox="0 0 726 354" width="726px" zoomAndPan="magnify"><defs><filter height="300%" id="fo2kdhht50914" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fo2kdhht50914)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="495" y="101.475"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="306.4313"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="500.4" x2="500.4" y1="45.9563" y2="306.4313"/><rect fill="#FEFECE" filter="url(#fo2kdhht50914)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fo2kdhht50914)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="305.2313"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="329.2254">Client</text><rect fill="#FEFECE" filter="url(#fo2kdhht50914)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="379.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="387.6" y="27.5941">Device Connection Service</text><rect fill="#FEFECE" filter="url(#fo2kdhht50914)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="379.2" y="305.2313"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="387.6" y="329.2254">Device Connection Service</text><rect fill="#FFFFFF" filter="url(#fo2kdhht50914)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="495" y="101.475"/><polygon fill="#A80036" points="480.6,96.675,492.6,101.475,480.6,106.275,485.4,101.475" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="487.8" y1="101.475" y2="101.475"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="428.4" x="52.2" y="77.2365">transfer(subject: "get-cmd-handling-adapter-instances",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="410.4" x="57" y="95.3959">device_id: "device-1", payload: JSON with gateway ids)</text><path d="M285.6,117.075 L285.6,147.075 L711.6,147.075 L711.6,129.075 L699.6,117.075 L285.6,117.075 " fill="#FBFB77" filter="url(#fo2kdhht50914)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M699.6,117.075 L699.6,129.075 L711.6,129.075 L699.6,117.075 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="400.8" x="292.8" y="137.5553">get command-handling adapter instances for device</text><polygon fill="#A80036" points="57,178.5938,45,183.3937,57,188.1938,52.2,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="499.8" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="330" x="64.2" y="177.3146">transfer(status: "200", body: JSON payload)</text><path d="M49.2,198.9938 L49.2,282.9938 L404.4,282.9938 L404.4,210.9938 L392.4,198.9938 L49.2,198.9938 " fill="#FBFB77" filter="url(#fo2kdhht50914)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M392.4,198.9938 L392.4,210.9938 L404.4,210.9938 L392.4,198.9938 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="330" x="56.4" y="219.474">JSON payload with 'adapter-instances' field;</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="254.4" x="56.4" y="237.6334">Value is array with objects having</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="79.2" x="56.4" y="255.7928">- device-id</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="160.8" x="56.4" y="273.9521">- adapter-instance-id</text><!--MD5=[98a10fd194b0919db0bb609d5e385514]
+@startuml
+scale 1.2
+
+Client -> "Device Connection Service": transfer(subject: "get-cmd-handling-adapter-instances",\n device_id: "device-1", payload: JSON with gateway ids)
+activate "Device Connection Service"
+note over "Device Connection Service"
+get command-handling adapter instances for device
+end note
+"Device Connection Service" -> Client: transfer(status: "200", body: JSON payload)
+deactivate "Device Connection Service"
+note right of Client
+JSON payload with 'adapter-instances' field;
+Value is array with objects having
+- device-id
+- adapter-instance-id
+end note
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-connection/get_last_known_gateway_success.svg b/docs/1.5/api/device-connection/get_last_known_gateway_success.svg
new file mode 100644
index 0000000..d54ca6f
--- /dev/null
+++ b/docs/1.5/api/device-connection/get_last_known_gateway_success.svg
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="318px" preserveAspectRatio="none" style="width:626px;height:318px;" version="1.1" viewBox="0 0 626 318" width="626.4px" zoomAndPan="magnify"><defs><filter height="300%" id="fr586u9aoixsx" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fr586u9aoixsx)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="467.4" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="270.1125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="472.8" x2="472.8" y1="45.9563" y2="270.1125"/><rect fill="#FEFECE" filter="url(#fr586u9aoixsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fr586u9aoixsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="268.9125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="292.9066">Client</text><rect fill="#FEFECE" filter="url(#fr586u9aoixsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="351.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="360" y="27.5941">Device Connection Service</text><rect fill="#FEFECE" filter="url(#fr586u9aoixsx)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="351.6" y="268.9125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="360" y="292.9066">Device Connection Service</text><rect fill="#FFFFFF" filter="url(#fr586u9aoixsx)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="467.4" y="83.3156"/><polygon fill="#A80036" points="453,78.5156,465,83.3156,453,88.1156,457.8,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="460.2" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="400.8" x="52.2" y="77.2365">transfer(subject: "get-last-gw", device_id: "device-1")</text><path d="M328.8,98.9156 L328.8,128.9156 L612,128.9156 L612,110.9156 L600,98.9156 L328.8,98.9156 " fill="#FBFB77" filter="url(#fr586u9aoixsx)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M600,98.9156 L600,110.9156 L612,110.9156 L600,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="258" x="336" y="119.3959">get last known gateway for device</text><polygon fill="#A80036" points="57,160.4344,45,165.2344,57,170.0344,52.2,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="472.2" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="330" x="64.2" y="159.1553">transfer(status: "200", body: JSON payload)</text><path d="M49.2,180.8344 L49.2,246.8344 L260.4,246.8344 L260.4,192.8344 L248.4,180.8344 L49.2,180.8344 " fill="#FBFB77" filter="url(#fr586u9aoixsx)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M248.4,180.8344 L248.4,192.8344 L260.4,192.8344 L248.4,180.8344 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="172.8" x="56.4" y="201.3146">JSON payload contains</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="93.6" x="56.4" y="219.474">- gateway-id</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="186" x="56.4" y="237.6334">- last-updated (optional)</text><!--
+@startuml
+scale 1.2
+
+Client -> "Device Connection Service": transfer(subject: "get-last-gw", device_id: "device-1")
+activate "Device Connection Service"
+note over "Device Connection Service"
+get last known gateway for device
+end note
+"Device Connection Service" -> Client: transfer(status: "200", body: JSON payload)
+deactivate "Device Connection Service"
+note right of Client
+JSON payload contains
+- gateway-id
+- last-updated (optional)
+end note
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-connection/index.html b/docs/1.5/api/device-connection/index.html
new file mode 100644
index 0000000..4575663
--- /dev/null
+++ b/docs/1.5/api/device-connection/index.html
@@ -0,0 +1,3552 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Device Connection API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Device Connection API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Device Connection API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/device-connection//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/device-connection/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/device-connection/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/device-connection/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/device-connection/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/device-connection/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/device-connection/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/device-connection/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/device-connection/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/device-connection/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/device-connection/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Device Connection API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#preconditions-for-invoking-the-device-connection-api">Preconditions for invoking the Device Connection API</a></li>
+<li><a href="#set-last-known-gateway-for-device">Set last known Gateway for Device</a></li>
+<li><a href="#get-last-known-gateway-for-device">Get last known Gateway for Device</a></li>
+<li><a href="#set-command-handling-protocol-adapter-instance-for-device">Set command-handling protocol adapter instance for device</a></li>
+<li><a href="#remove-command-handling-protocol-adapter-instance-for-device">Remove command-handling protocol adapter instance for device</a></li>
+<li><a href="#get-command-handling-protocol-adapter-instances-for-device">Get command-handling protocol adapter instances for device</a></li>
+<li><a href="#standard-message-properties">Standard Message Properties</a>
+<ul>
+<li><a href="#standard-request-properties">Standard Request Properties</a></li>
+<li><a href="#standard-response-properties">Standard Response Properties</a></li>
+</ul></li>
+<li><a href="#delivery-states">Delivery States</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Device Connection API Specification</h1>
+
+
+
+
+
+<p>The <em>Device Connection API</em> is used by <em>Protocol Adapters</em> to set and retrieve information about the connections from devices or gateways to the protocol adapters.</p>
+
+<div class="alert alert-notice">
+ <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Deprecation</h4>
+ <div>The Device Connection API is deprecated and will be replaced by the <a href="/hono/docs/1.5/api/command-router/">Command Router API</a>.</div>
+</div>
+
+<p>The Device Connection API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to the Device Connection service component using an AMQP 1.0 client in order to invoke operations of the API as described in the following sections.</p>
+
+<p><a name="preconditions"></a></p>
+
+<h2 id="preconditions-for-invoking-the-device-connection-api">Preconditions for invoking the Device Connection API</h2>
+
+<ol>
+<li>Client has established an AMQP connection with the Device Connection service.</li>
+<li>Client has established an AMQP link in role <em>sender</em> on the connection using target address <code>device_con/${tenant_id}</code>. This link is used by the client to send commands concerning device connections to Hono.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> on the connection using source address <code>device_con/${tenant_id}/${reply-to}</code> where <em>reply-to</em> may be any arbitrary string chosen by the client. This link is used by the client to receive responses to the requests it has sent to the Device Connection service. This link’s source address is also referred to as the <em>reply-to</em> address for the request messages.</li>
+</ol>
+
+<figure>
+ <img src="preconditions.svg"
+ alt="A client establishes an AMQP connection and the links required to invoke operations of the Device Connection service"/> <figcaption>
+ <h4>Client connecting to Device Connection service</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="set-last-known-gateway-for-device">Set last known Gateway for Device</h2>
+
+<p>Clients use this command to <em>set</em> the gateway that last acted on behalf of a given device.</p>
+
+<p>As this operation is invoked frequently by Hono’s components, implementors may choose to keep this information in memory. This API doesn’t mandate checks on the validity of the given device or gateway IDs in order not to introduce a dependency on the <em>Device Registration API</em>. However, implementations of this API may choose to perform such checks or impose a restriction on the overall amount of data that can be stored per tenant in order to protect against malicious requests.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="set_last_known_gateway_success.svg"
+ alt="A client sends a request message for setting the last known gateway and receives a response containing a confirmation"/> <figcaption>
+ <h4>Client sets the last known gateway for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to set the last known gateway for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>set-last-gw</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>gateway_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the gateway that last acted on behalf of the device identified by the <em>device_id</em> property. If a device connects directly instead of through a gateway, the device’s identifier MUST be specified here.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>set last known gateway for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>204</em></td>
+<td align="left">OK, the last known gateway for the device has been updated.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the last known gateway has not been updated due to invalid or missing data in the request.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device and/or gateway with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="get-last-known-gateway-for-device">Get last known Gateway for Device</h2>
+
+<p>Clients use this command to <em>retrieve</em> the gateway that last acted on behalf of a given device.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="get_last_known_gateway_success.svg"
+ alt="A client sends a request message for retrieving the last known gateway and receives a response containing the information"/> <figcaption>
+ <h4>Client retrieving the last known gateway for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to retrieve the last known gateway for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>get-last-gw</code>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>get last known gateway for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a> as well as the properties shown in the following table:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>application/json</code> if the invocation of the operation was successful and the body of the response message contains payload as described below.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The result of a successful invocation is carried in a single Data section of the response message as a UTF-8 encoded string representation of a single JSON object. It is an error to include payload that is not of this type.</p>
+
+<p>The response message JSON object has the following properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>gateway-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The ID of the last known gateway for the device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>last-updated</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The date that the information about the last known gateway for the device was last updated. The value MUST be an <a href="https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations">ISO 8601 compliant <em>combined date and time representation in extended format</em></a>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>200</em></td>
+<td align="left">OK, the payload contains the gateway ID.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message does not contain all required information/properties.</td>
+</tr>
+
+<tr>
+<td align="left"><em>404</em></td>
+<td align="left">Not Found, there is no last known gateway assigned to the device.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="set-command-handling-protocol-adapter-instance-for-device">Set command-handling protocol adapter instance for device</h2>
+
+<p>Clients use this command to <em>set</em> the protocol adapter instance that currently handles command & control messages for a given device.</p>
+
+<p>Clients can provide an optional <code>lifespan</code> parameter to make the protocol adapter instance entry expire after the given number of seconds. Note that implementations of this API have to support this feature, otherwise protocol adapters, as the clients of this API, might fail to correctly route command messages.</p>
+
+<p>This API doesn’t mandate checks on the validity of the given device in order not to introduce a dependency on the <em>Device Registration API</em>. However, implementations of this API may choose to perform such checks or impose a restriction on the overall amount of data that can be stored per tenant in order to protect against malicious requests.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="set_cmd_handling_adapter_instance.svg"
+ alt="A client sends a request message for setting the adapter instance and receives a response containing a confirmation"/> <figcaption>
+ <h4>Client sets the command-handling protocol adapter instance for device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to set the command-handling protocol adapter instance for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>set-cmd-handling-adapter-instance</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>adapter_instance_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the protocol adapter instance that currently handles commands for the device or gateway identified by the <em>device_id</em> property.</td>
+</tr>
+
+<tr>
+<td align="left"><em>lifespan</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">The lifespan of the mapping entry in seconds. After that period, the mapping entry shall be treated as non-existent by the <em>Device Connection API</em> methods. A negative value, as well as an omitted property, is interpreted as an unlimited lifespan.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>set command-handling adapter instance for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>204</em></td>
+<td align="left">OK, the command-handling adapter instance for the device has been updated.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the adapter instance for the device has not been set or updated due to invalid or missing data in the request.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="remove-command-handling-protocol-adapter-instance-for-device">Remove command-handling protocol adapter instance for device</h2>
+
+<p>Clients use this command to <em>remove</em> the information, which protocol adapter instance is currently handling command & control messages for the given device. The mapping information is only removed, if the currently associated adapter instance matches the one given in the request.</p>
+
+<p>This API doesn’t mandate checks on the validity of the given device in order not to introduce a dependency on the <em>Device Registration API</em>. However, implementations of this API may choose to perform such checks or impose a restriction on the overall amount of data that can be stored per tenant in order to protect against malicious requests.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="remove_cmd_handling_adapter_instance.svg"
+ alt="A client sends a request message for removing the adapter instance mapping and receives a response containing a confirmation"/> <figcaption>
+ <h4>Client removes the command-handling protocol adapter instance information for device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to remove the mapping information regarding the command-handling protocol adapter instance for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>remove-cmd-handling-adapter-instance</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>adapter_instance_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the protocol adapter instance to remove the mapping information for. Only if this adapter instance is currently associated with the device or gateway identified by the <em>device_id</em> property, the mapping entry will be removed.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>remove command-handling adapter instance for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a>.</p>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>204</em></td>
+<td align="left">OK, the adapter instance mapping information for the device has been removed.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message does not contain all required properties.</td>
+</tr>
+
+<tr>
+<td align="left"><em>412</em></td>
+<td align="left">Precondition failed, the adapter instance for the device has not been removed because there is no matching command-handling adapter instance assigned to the device.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may return a <em>404</em> status code in order to indicate that no device with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="get-command-handling-protocol-adapter-instances-for-device">Get command-handling protocol adapter instances for device</h2>
+
+<p>Clients use this command to <em>get</em> information about the adapter instances that can handle command & control messages for the given device.</p>
+
+<p>As part of the request message, the client is supposed to provide the list of gateways that may act on behalf of the given device. The client may get this list via the Device Registration API’s <a href="/hono/docs/1.5/api/device-registration/#assert-device-registration"><em>assert Device Registration</em></a> operation.</p>
+
+<p>This API doesn’t mandate checks on the validity of the given device and the gateway list in order not to introduce a dependency on the <em>Device Registration API</em>.</p>
+
+<p>The command implementation MUST determine the adapter instances by applying the following rules (in the given order):</p>
+
+<ol>
+<li>If an adapter instance is associated with the given device, this adapter instance is returned as the <em>single</em> returned list entry.</li>
+<li>Otherwise, if there is an adapter instance registered for the last known gateway associated with the given device, this adapter instance is returned as the <em>single</em> returned list entry. The last known gateway has to be contained in the given list of gateways for this case.</li>
+<li>Otherwise, <em>all</em> adapter instances associated with any of the given gateway identifiers are returned.</li>
+</ol>
+
+<p>That means that for a device communicating via a gateway, the result is reduced to a <em>single element</em> list if an adapter instance for the device itself or its last known gateway is found. The adapter instance registered for the device itself is given precedence in order to ensure that a gateway having subscribed to commands for that <em>particular device</em> is chosen over a gateway that has subscribed to commands for <em>all</em> devices of a tenant.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<figure>
+ <img src="get_cmd_handling_adapter_instances.svg"
+ alt="A client sends a request message for retrieving the list of command-handling adapter instances for a device and receives a response containing the information"/> <figcaption>
+ <h4>Client retrieving the list of command-handling adapter instances for a device</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to retrieve the command-handling adapter instances for a device in addition to the <a href="#standard-request-properties">Standard Request Properties</a>.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>application/json</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>get-cmd-handling-adapter-instances</code>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message MUST consist of a single AMQP <em>Data</em> section containing a UTF-8 encoded string representation of a single JSON object. The JSON object has the following properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>gateway-ids</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>array</em></td>
+<td align="left">The IDs of the gateways that may act on behalf of the given device. This list may be obtained via the Device Registration API’s <a href="/hono/docs/1.5/api/device-registration/#assert-device-registration"><em>assert Device Registration</em></a> operation.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Example of a request payload:</p>
+
+<pre><code class="language-json">{
+ "gateway-ids": ["gw-1", "gw-2", "gw-3"]
+}
+</code></pre>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>A response to a <em>get command-handling adapter instances for device</em> request contains the <a href="#standard-response-properties">Standard Response Properties</a> as well as the properties shown in the following table:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>application/json</code> if the invocation of the operation was successful and the body of the response message contains payload as described below.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The result of a successful invocation is carried in a single Data section of the response message as a UTF-8 encoded string representation of a single JSON object. It is an error to include payload that is not of this type.</p>
+
+<p>The response message JSON object has the following properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>adapter-instances</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>array</em></td>
+<td align="left">A non-empty array of JSON objects that represent the command-handling adapter instances along with the device or gateway id.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Each entry in the <em>adapter-instances</em> array has the following properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>adapter-instance-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The ID of the protocol adapter instance handling command & control messages for the device given in the <em>device-id</em> property.</td>
+</tr>
+
+<tr>
+<td align="left"><em>device-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The ID of the gateway or device that the protocol adapter instance given by the <em>adapter-instance-id</em> is handling command & control messages for. This ID is not necessarily the <em>device_id</em> given in the request message, it may be the ID of one of the gateways acting on behalf of the device.</td>
+</tr>
+</tbody>
+</table>
+
+<p>An example of a response message with a single adapter instance result, returned for example if an adapter instance is registered for the given device:</p>
+
+<pre><code class="language-json">{
+ "adapter-instances": [
+ {
+ "adapter-instance-id": "adapter-1",
+ "device-id": "4711"
+ }
+ ]
+}
+</code></pre>
+
+<p>An example of a response message with multiple contained adapter instances, returned for example if no adapter instance is registered for the given device or its last used gateway, and therefore a list of all adapter instances for the gateways of the device is returned:</p>
+
+<pre><code class="language-json">{
+ "adapter-instances": [
+ {
+ "adapter-instance-id": "adapter-1",
+ "device-id": "gw-1"
+ },
+ {
+ "adapter-instance-id": "adapter-1",
+ "device-id": "gw-2"
+ }
+ ]
+}
+</code></pre>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>200</em></td>
+<td align="left">OK, the payload contains the adapter instances.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message does not contain all required information/properties.</td>
+</tr>
+
+<tr>
+<td align="left"><em>404</em></td>
+<td align="left">Not Found, there is no command-handling adapter instance assigned to the device.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Implementors of this API may also return a <em>404</em> status code in order to indicate that no device with the given identifier exists for the given tenant. However, performing such a check is optional.</p>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred.</p>
+
+<h2 id="standard-message-properties">Standard Message Properties</h2>
+
+<p>Due to the nature of the request/response message pattern of the operations of the Device Connection API, there are some standard properties shared by all of the request and response messages exchanged as part of the operations.</p>
+
+<h3 id="standard-request-properties">Standard Request Properties</h3>
+
+<p>The following table provides an overview of the properties shared by all request messages regardless of the particular operation being invoked.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to the value defined by the particular operation being invoked.</td>
+</tr>
+
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">MAY contain an ID used to correlate a response message to the original request. If set, it is used as the <em>correlation-id</em> property in the response, otherwise the value of the <em>message-id</em> property is used. Either this or the <em>message-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an identifier that uniquely identifies the message at the sender side. Either this or the <em>correlation-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the source address that the client wants to received response messages from. This address MUST be the same as the source address used for establishing the client’s receive link (see <a href="#preconditions-for-invoking-the-device-connection-api">Preconditions</a>).</td>
+</tr>
+
+<tr>
+<td align="left"><em>device_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the ID of the device that is subject to the operation.</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="standard-response-properties">Standard Response Properties</h3>
+
+<p>The following table provides an overview of the properties shared by all response messages regardless of the particular operation being invoked.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">Contains the <em>message-id</em> (or the <em>correlation-id</em>, if specified) of the request message that this message is the response to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">Contains the status code indicating the outcome of the operation. Concrete values and their semantics are defined for each particular operation.</td>
+</tr>
+
+<tr>
+<td align="left"><em>cache_control</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains an <a href="https://tools.ietf.org/html/rfc2616#section-14.9">RFC 2616</a> compliant <em>cache directive</em>. The directive contained in the property MUST be obeyed by clients that are caching responses.</td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="delivery-states">Delivery States</h2>
+
+<p>Hono uses the following AMQP message delivery states when receiving request messages from clients:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>ACCEPTED</em></td>
+<td align="left">Indicates that the request message has been received and accepted for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><em>REJECTED</em></td>
+<td align="left">Indicates that Hono has received the request but was not able to process it. The <em>error</em> field contains information regarding the reason why. Clients should not try to re-send the request using the same message properties in this case.</td>
+</tr>
+</tbody>
+</table>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/device-connection/preconditions.svg b/docs/1.5/api/device-connection/preconditions.svg
new file mode 100644
index 0000000..dfb3ce3
--- /dev/null
+++ b/docs/1.5/api/device-connection/preconditions.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="327.6px" preserveAspectRatio="none" style="width:720px;height:327px;" version="1.1" viewBox="0 0 720 327" width="720px" zoomAndPan="magnify"><defs><filter height="300%" id="f22jovr551vga" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f22jovr551vga)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="583.8" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f22jovr551vga)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="583.8" y="153.2344"/><rect fill="#FFFFFF" filter="url(#f22jovr551vga)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="583.8" y="223.1531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="279.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="589.2" x2="589.2" y1="45.9563" y2="279.7125"/><rect fill="#FEFECE" filter="url(#f22jovr551vga)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f22jovr551vga)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="302.5066">Client</text><rect fill="#FEFECE" filter="url(#f22jovr551vga)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="468" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="476.4" y="27.5941">Device Connection Service</text><rect fill="#FEFECE" filter="url(#f22jovr551vga)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="468" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="476.4" y="302.5066">Device Connection Service</text><rect fill="#FFFFFF" filter="url(#f22jovr551vga)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="583.8" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f22jovr551vga)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="583.8" y="153.2344"/><rect fill="#FFFFFF" filter="url(#f22jovr551vga)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="583.8" y="223.1531"/><polygon fill="#A80036" points="569.4,78.5156,581.4,83.3156,569.4,88.1156,574.2,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="576.6" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="52.2" y="77.2365">1.1 open</text><polygon fill="#A80036" points="57,113.475,45,118.275,57,123.075,52.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="588.6" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="64.2" y="112.1959">1.2 open</text><polygon fill="#A80036" points="569.4,148.4344,581.4,153.2344,569.4,158.0344,574.2,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="576.6" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="411.6" x="52.2" y="147.1553">2.1 attach(sender, target: "device_con/${tenant_id}")</text><polygon fill="#A80036" points="57,183.3937,45,188.1938,57,192.9938,52.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="588.6" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="424.8" x="64.2" y="182.1146">2.2 attach(receiver, source: "device_con/${tenant_id}")</text><polygon fill="#A80036" points="569.4,218.3531,581.4,223.1531,569.4,227.9531,574.2,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="576.6" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="517.2" x="52.2" y="217.074">3.1 attach(receiver, source: "device_con/${tenant_id}/${reply-to}")</text><polygon fill="#A80036" points="57,253.3125,45,258.1125,57,262.9125,52.2,258.1125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="588.6" y1="258.1125" y2="258.1125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="504" x="64.2" y="252.0334">3.2 attach(sender, target: "device_con/${tenant_id}/${reply-to}")</text><!--
+@startuml
+scale 1.2
+
+Client -> "Device Connection Service"++: 1.1 open
+"Device Connection Service" -> Client- -: 1.2 open
+Client -> "Device Connection Service"++: 2.1 attach(sender, target: "device_con/${tenant_id}")
+"Device Connection Service" -> Client- -: 2.2 attach(receiver, source: "device_con/${tenant_id}")
+Client -> "Device Connection Service"++: 3.1 attach(receiver, source: "device_con/${tenant_id}/${reply-to}")
+"Device Connection Service" -> Client- -: 3.2 attach(sender, target: "device_con/${tenant_id}/${reply-to}")
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-connection/remove_cmd_handling_adapter_instance.svg b/docs/1.5/api/device-connection/remove_cmd_handling_adapter_instance.svg
new file mode 100644
index 0000000..cafb687
--- /dev/null
+++ b/docs/1.5/api/device-connection/remove_cmd_handling_adapter_instance.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="253.2px" preserveAspectRatio="none" style="width:768px;height:253px;" version="1.1" viewBox="0 0 768 253" width="768px" zoomAndPan="magnify"><defs><filter height="300%" id="fpgm810u3x48e" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fpgm810u3x48e)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="101.475"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="204.9938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="530.4" x2="530.4" y1="45.9563" y2="204.9938"/><rect fill="#FEFECE" filter="url(#fpgm810u3x48e)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fpgm810u3x48e)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="203.7938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="227.7879">Client</text><rect fill="#FEFECE" filter="url(#fpgm810u3x48e)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="409.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="417.6" y="27.5941">Device Connection Service</text><rect fill="#FEFECE" filter="url(#fpgm810u3x48e)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="409.2" y="203.7938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="417.6" y="227.7879">Device Connection Service</text><rect fill="#FFFFFF" filter="url(#fpgm810u3x48e)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="101.475"/><polygon fill="#A80036" points="510.6,96.675,522.6,101.475,510.6,106.275,515.4,101.475" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="517.8" y1="101.475" y2="101.475"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="453.6" x="52.2" y="77.2365">transfer(subject: "remove-cmd-handling-adapter-instance",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="427.2" x="57" y="95.3959">device_id: "device-1", adapter_instance_id: "adapter_1")</text><path d="M302.4,117.075 L302.4,147.075 L753.6,147.075 L753.6,129.075 L741.6,117.075 L302.4,117.075 " fill="#FBFB77" filter="url(#fpgm810u3x48e)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M741.6,117.075 L741.6,129.075 L753.6,129.075 L741.6,117.075 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="426" x="309.6" y="137.5553">remove command-handling adapter instance for device</text><polygon fill="#A80036" points="57,178.5938,45,183.3937,57,188.1938,52.2,183.3937" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="529.8" y1="183.3937" y2="183.3937"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="170.4" x="64.2" y="177.3146">transfer(status: "204")</text><!--MD5=[2e12a77d4e753bad2277d1c0a2ce9889]
+@startuml
+scale 1.2
+
+Client -> "Device Connection Service": transfer(subject: "remove-cmd-handling-adapter-instance", \n device_id: "device-1", adapter_instance_id: "adapter_1")
+activate "Device Connection Service"
+note over "Device Connection Service"
+remove command-handling adapter instance for device
+end note
+"Device Connection Service" -> Client: transfer(status: "204")
+deactivate "Device Connection Service"
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-connection/set_cmd_handling_adapter_instance.svg b/docs/1.5/api/device-connection/set_cmd_handling_adapter_instance.svg
new file mode 100644
index 0000000..13560e6
--- /dev/null
+++ b/docs/1.5/api/device-connection/set_cmd_handling_adapter_instance.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="271.2px" preserveAspectRatio="none" style="width:728px;height:271px;" version="1.1" viewBox="0 0 728 271" width="728.4px" zoomAndPan="magnify"><defs><filter height="300%" id="fxerzl4s6z9dj" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fxerzl4s6z9dj)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="502.2" y="119.6344"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="223.1531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="507.6" x2="507.6" y1="45.9563" y2="223.1531"/><rect fill="#FEFECE" filter="url(#fxerzl4s6z9dj)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fxerzl4s6z9dj)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="221.9531"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="245.9473">Client</text><rect fill="#FEFECE" filter="url(#fxerzl4s6z9dj)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="386.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="394.8" y="27.5941">Device Connection Service</text><rect fill="#FEFECE" filter="url(#fxerzl4s6z9dj)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="386.4" y="221.9531"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="394.8" y="245.9473">Device Connection Service</text><rect fill="#FFFFFF" filter="url(#fxerzl4s6z9dj)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="502.2" y="119.6344"/><polygon fill="#A80036" points="487.8,114.8344,499.8,119.6344,487.8,124.4344,492.6,119.6344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="495" y1="119.6344" y2="119.6344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="418.8" x="52.2" y="77.2365">transfer(subject: "set-cmd-handling-adapter-instance",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="426" x="57" y="95.3959">device_id: "device-1", adapter_instance_id: "adapter_1",</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="112.8" x="57" y="113.5553">lifespan: 3600)</text><path d="M297.6,135.2344 L297.6,165.2344 L714,165.2344 L714,147.2344 L702,135.2344 L297.6,135.2344 " fill="#FBFB77" filter="url(#fxerzl4s6z9dj)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M702,135.2344 L702,147.2344 L714,147.2344 L702,135.2344 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="391.2" x="304.8" y="155.7146">set command-handling adapter instance for device</text><polygon fill="#A80036" points="57,196.7531,45,201.5531,57,206.3531,52.2,201.5531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="507" y1="201.5531" y2="201.5531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="170.4" x="64.2" y="195.474">transfer(status: "204")</text><!--MD5=[a6ac3462a1757a2cb56018529af2f61c]
+@startuml
+scale 1.2
+
+Client -> "Device Connection Service": transfer(subject: "set-cmd-handling-adapter-instance", \n device_id: "device-1", adapter_instance_id: "adapter_1", \n lifespan: 3600)
+activate "Device Connection Service"
+note over "Device Connection Service"
+set command-handling adapter instance for device
+end note
+"Device Connection Service" -> Client: transfer(status: "204")
+deactivate "Device Connection Service"
+@enduml
+
+PlantUML version 1.2019.11(Sun Sep 22 12:02:15 CEST 2019)
+(GPL source distribution)
+Java Runtime: OpenJDK Runtime Environment
+JVM: OpenJDK 64-Bit Server VM
+Java Version: 11.0.6+10-post-Ubuntu-1ubuntu118.04.1
+Operating System: Linux
+Default Encoding: UTF-8
+Language: de
+Country: DE
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-connection/set_last_known_gateway_success.svg b/docs/1.5/api/device-connection/set_last_known_gateway_success.svg
new file mode 100644
index 0000000..a9f6855
--- /dev/null
+++ b/docs/1.5/api/device-connection/set_last_known_gateway_success.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="234px" preserveAspectRatio="none" style="width:771px;height:234px;" version="1.1" viewBox="0 0 771 234" width="771.6px" zoomAndPan="magnify"><defs><filter height="300%" id="fqm2tm43gwn4n" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fqm2tm43gwn4n)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="612.6" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="186.8344"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="618" x2="618" y1="45.9563" y2="186.8344"/><rect fill="#FEFECE" filter="url(#fqm2tm43gwn4n)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#fqm2tm43gwn4n)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="209.6285">Client</text><rect fill="#FEFECE" filter="url(#fqm2tm43gwn4n)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="496.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="505.2" y="27.5941">Device Connection Service</text><rect fill="#FEFECE" filter="url(#fqm2tm43gwn4n)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="238.8" x="496.8" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="222" x="505.2" y="209.6285">Device Connection Service</text><rect fill="#FFFFFF" filter="url(#fqm2tm43gwn4n)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="612.6" y="83.3156"/><polygon fill="#A80036" points="598.2,78.5156,610.2,83.3156,598.2,88.1156,603,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="605.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="546" x="52.2" y="77.2365">transfer(subject: "set-last-gw", device_id: "device-1", gateway_id: "gw-1)</text><path d="M475.2,98.9156 L475.2,128.9156 L757.2,128.9156 L757.2,110.9156 L745.2,98.9156 L475.2,98.9156 " fill="#FBFB77" filter="url(#fqm2tm43gwn4n)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M745.2,98.9156 L745.2,110.9156 L757.2,110.9156 L745.2,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="256.8" x="482.4" y="119.3959">set last known gateway for device</text><polygon fill="#A80036" points="57,160.4344,45,165.2344,57,170.0344,52.2,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="617.4" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="170.4" x="64.2" y="159.1553">transfer(status: "204")</text><!--
+@startuml
+scale 1.2
+
+Client -> "Device Connection Service": transfer(subject: "set-last-gw", device_id: "device-1", gateway_id: "gw-1)
+activate "Device Connection Service"
+note over "Device Connection Service"
+set last known gateway for device
+end note
+"Device Connection Service" -> Client: transfer(status: "204")
+deactivate "Device Connection Service"
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-registration/assert_success.svg b/docs/1.5/api/device-registration/assert_success.svg
new file mode 100644
index 0000000..09c3b3c
--- /dev/null
+++ b/docs/1.5/api/device-registration/assert_success.svg
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="390px" preserveAspectRatio="none" style="width:847px;height:390px;" version="1.1" viewBox="0 0 847 390" width="847.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f5fhc5i4jav5v" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f5fhc5i4jav5v)" height="136.3969" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="688.2" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="342.75"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="694.2" x2="694.2" y1="45.9563" y2="342.75"/><rect fill="#FEFECE" filter="url(#f5fhc5i4jav5v)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f5fhc5i4jav5v)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="341.55"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="365.5441">Client</text><rect fill="#FEFECE" filter="url(#f5fhc5i4jav5v)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="242.4" x="570.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="579" y="27.5941">Device Registration Service</text><rect fill="#FEFECE" filter="url(#f5fhc5i4jav5v)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="242.4" x="570.6" y="341.55"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="579" y="365.5441">Device Registration Service</text><rect fill="#FFFFFF" filter="url(#f5fhc5i4jav5v)" height="136.3969" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="688.2" y="83.3156"/><polygon fill="#A80036" points="673.8,78.5156,685.8,83.3156,673.8,88.1156,678.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="681" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="367.2" x="52.2" y="77.2365">transfer(subject: "assert", device-id, gateway-id)</text><path d="M549.6,98.9156 L549.6,182.9156 L832.8,182.9156 L832.8,110.9156 L820.8,98.9156 L549.6,98.9156 " fill="#FBFB77" filter="url(#f5fhc5i4jav5v)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M820.8,98.9156 L820.8,110.9156 L832.8,110.9156 L820.8,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="76.8" x="556.8" y="119.3959">verify that</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="202.8" x="556.8" y="137.5553">- device and gateway exist</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="258" x="556.8" y="155.7146">- device and gateway are enabled</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="256.8" x="556.8" y="173.874">- gateway is authorized for device</text><polygon fill="#A80036" points="57,214.9125,45,219.7125,57,224.5125,52.2,219.7125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="693" y1="219.7125" y2="219.7125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="615.6" x="64.2" y="213.6334">transfer(status: "200", content-type: "application/json", body: registration status)</text><path d="M49.2,235.3125 L49.2,319.3125 L247.2,319.3125 L247.2,247.3125 L235.2,235.3125 L49.2,235.3125 " fill="#FBFB77" filter="url(#f5fhc5i4jav5v)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M235.2,235.3125 L235.2,247.3125 L247.2,247.3125 L235.2,235.3125 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="172.8" x="56.4" y="255.7928">JSON payload contains</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="79.2" x="56.4" y="273.9521">- device-id</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="110.4" x="56.4" y="292.1115">- via (optional)</text><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="150" x="56.4" y="310.2709">- defaults (optional)</text><!--
+@startuml
+scale 1.2
+
+Client -> "Device Registration Service": transfer(subject: "assert", device-id, gateway-id)
+activate "Device Registration Service"
+note over "Device Registration Service"
+verify that
+- device and gateway exist
+- device and gateway are enabled
+- gateway is authorized for device
+end note
+
+"Device Registration Service" -> Client: transfer(status: "200", content-type: "application/json", body: registration status)
+deactivate "Device Registration Service"
+
+note right of Client
+JSON payload contains
+- device-id
+- via (optional)
+- defaults (optional)
+end note
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/device-registration/index.html b/docs/1.5/api/device-registration/index.html
new file mode 100644
index 0000000..072a113
--- /dev/null
+++ b/docs/1.5/api/device-registration/index.html
@@ -0,0 +1,3033 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Device Registration API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Device Registration API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Device Registration API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/device-registration//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/device-registration/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/device-registration/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/device-registration/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/device-registration/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/device-registration/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/device-registration/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/device-registration/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/device-registration/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/device-registration/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/device-registration/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Device Registration API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#preconditions-for-invoking-the-device-registration-api">Preconditions for invoking the Device Registration API</a></li>
+<li><a href="#assert-device-registration">Assert Device Registration</a></li>
+<li><a href="#delivery-states">Delivery States</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Device Registration API Specification</h1>
+
+
+
+
+
+<p>The <em>Device Registration API</em> is used by Hono’s protocol adapters to get information about devices connecting to the adapters.</p>
+
+<p>The Device Registration API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to Hono using an AMQP 1.0 client in order to invoke operations of the API as described in the following sections.</p>
+
+<p><a name="preconditions"></a></p>
+
+<h2 id="preconditions-for-invoking-the-device-registration-api">Preconditions for invoking the Device Registration API</h2>
+
+<ol>
+<li>Client has established an AMQP connection with the Device Registration service.</li>
+<li>Client has established an AMQP link in role <em>sender</em> on the connection using target address <code>registration/${tenant_id}</code>. This link is used by the client to send request messages to the Device Registration service.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> on the connection using source address <code>registration/${tenant_id}/${reply-to}</code> where <em>reply-to</em> may be any arbitrary string chosen by the client. This link is used by the client to receive responses to the requests it has sent to the Device Registration service. This link’s source address is also referred to as the <em>reply-to</em> address for the request messages.</li>
+</ol>
+
+<figure>
+ <img src="preconditions.svg"
+ alt="A client establishes an AMQP connection and the links required to invoke operations of the Device Registration service"/> <figcaption>
+ <h4>Client connecting to Device Registration service</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="assert-device-registration">Assert Device Registration</h2>
+
+<p>Clients use this command to verify that a device is registered for a particular tenant and is enabled.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in a <em>Client</em> asserting a device’s registration status.</p>
+
+<figure>
+ <img src="assert_success.svg"
+ alt="A client sends a request message for asserting a device's registration status and receives a response containing the registration status"/> <figcaption>
+ <h4>Client asserting a device's registration status</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to assert a device’s registration status:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">MAY contain an ID used to correlate a response message to the original request. If set, it is used as the <em>correlation-id</em> property in the response, otherwise the value of the <em>message-id</em> property is used. Either this or the <em>message-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>device_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the ID of the device that is subject to the operation.</td>
+</tr>
+
+<tr>
+<td align="left"><em>gateway_id</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the gateway that wants to get an assertion <em>on behalf</em> of another device (given in the <em>device_id</em> property).<br>An implementation SHOULD verify that the gateway exists, is enabled and is authorized to get an assertion for, and thus send data on behalf of, the device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an identifier that uniquely identifies the message at the sender side. Either this or the <em>correlation-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the source address that the client wants to received response messages from. This address MUST be the same as the source address used for establishing the client’s receive link (see <a href="#preconditions-for-invoking-the-device-registration-api">Preconditions</a>).</td>
+</tr>
+
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>assert</code>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message SHOULD be empty and will be ignored if it is not.</p>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>The following table provides an overview of the properties contained in a response message to an <em>assert</em> request:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">Contains the <em>message-id</em> (or the <em>correlation-id</em>, if specified) of the request message that this message is the response to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>application/json</code> if the invocation of the operation was successful and the body of the response message contains payload as described below.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">Contains the status code indicating the outcome of the operation. Concrete values and their semantics are defined below.</td>
+</tr>
+
+<tr>
+<td align="left"><em>cache_control</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains an <a href="https://tools.ietf.org/html/rfc2616#section-14.9">RFC 2616</a> compliant <em>cache directive</em>. The directive contained in the property MUST be obeyed by clients that are caching responses.</td>
+</tr>
+</tbody>
+</table>
+
+<p>In case of a successful invocation of the operation, the body of the response message consists of a single <em>Data</em> section containing a UTF-8 encoded string representation of a single JSON object having the following properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>device-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The ID of the device that is subject of the assertion.</td>
+</tr>
+
+<tr>
+<td align="left"><em>via</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>array</em></td>
+<td align="left">The IDs (JSON strings) of gateways which may act on behalf of the device. This property MUST be set if any gateways are registered for the device. If the assertion request contained a <em>gateway_id</em> property and the response’s <em>status</em> property has value <code>200</code> (indicating a successful assertion) then the array MUST at least contain the gateway ID from the request.</td>
+</tr>
+
+<tr>
+<td align="left"><em>defaults</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left">Default values to be used by protocol adapters for augmenting messages from devices with missing information like a <em>content type</em>. It is up to the discretion of a protocol adapter if and how to use the given default values when processing messages published by the device.</td>
+</tr>
+
+<tr>
+<td align="left"><em>mapper</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The name of a service that can be used to transform messages uploaded by the device before they are forwarded to downstream consumers. The client needs to map this name to the particular service to invoke.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Below is an example for a payload of a response to an <em>assert</em> request for device <code>4711</code> which also includes a default <em>content-type</em> and a mapper service:</p>
+
+<pre><code class="language-json">{
+ "device-id": "4711",
+ "via": ["4712"],
+ "defaults": {
+ "content-type": "application/vnd.acme+json"
+ },
+ "mapper": "my-payload-transformation"
+}
+</code></pre>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>200</em></td>
+<td align="left">OK, the device is registered for the given tenant and is enabled. The response message body contains the asserted device’s registration status.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message did not contain all mandatory properties.</td>
+</tr>
+
+<tr>
+<td align="left"><em>403</em></td>
+<td align="left">Forbidden, the gateway with the given <em>gateway id</em> either does not exist, is not enabled or is not authorized to get an assertion for the device with the given <em>device id</em>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>404</em></td>
+<td align="left">Not Found, there is no device registered with the given <em>device id</em> within the given <em>tenant id</em> or the device is not enabled.</td>
+</tr>
+</tbody>
+</table>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred. In this case, the response message’s <em>content-type</em> property SHOULD be set accordingly.</p>
+
+<h2 id="delivery-states">Delivery States</h2>
+
+<p>The Device Registration service uses the following AMQP message delivery states when receiving request messages from clients:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>ACCEPTED</em></td>
+<td align="left">Indicates that the request message has been received and accepted for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><em>REJECTED</em></td>
+<td align="left">Indicates that the request message has been received but cannot be processed. The disposition frame’s <em>error</em> field contains information regarding the reason why. Clients should not try to re-send the request using the same message properties in this case.</td>
+</tr>
+</tbody>
+</table>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/device-registration/preconditions.svg b/docs/1.5/api/device-registration/preconditions.svg
new file mode 100644
index 0000000..f5858c6
--- /dev/null
+++ b/docs/1.5/api/device-registration/preconditions.svg
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="327.6px" preserveAspectRatio="none" style="width:662px;height:327px;" version="1.1" viewBox="0 0 662 327" width="662.4px" zoomAndPan="magnify"><defs><filter height="300%" id="f1haa4yxqnzi8u" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1haa4yxqnzi8u)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1haa4yxqnzi8u)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="153.2344"/><rect fill="#FFFFFF" filter="url(#f1haa4yxqnzi8u)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="223.1531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="279.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="531" x2="531" y1="45.9563" y2="279.7125"/><rect fill="#FEFECE" filter="url(#f1haa4yxqnzi8u)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f1haa4yxqnzi8u)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="302.5066">Client</text><rect fill="#FEFECE" filter="url(#f1haa4yxqnzi8u)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="242.4" x="407.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="415.8" y="27.5941">Device Registration Service</text><rect fill="#FEFECE" filter="url(#f1haa4yxqnzi8u)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="242.4" x="407.4" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="225.6" x="415.8" y="302.5066">Device Registration Service</text><rect fill="#FFFFFF" filter="url(#f1haa4yxqnzi8u)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1haa4yxqnzi8u)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="153.2344"/><rect fill="#FFFFFF" filter="url(#f1haa4yxqnzi8u)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="525" y="223.1531"/><polygon fill="#A80036" points="510.6,78.5156,522.6,83.3156,510.6,88.1156,515.4,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="517.8" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="52.2" y="77.2365">1.1 open</text><polygon fill="#A80036" points="57,113.475,45,118.275,57,123.075,52.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="529.8" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="64.2" y="112.1959">1.2 open</text><polygon fill="#A80036" points="510.6,148.4344,522.6,153.2344,510.6,158.0344,515.4,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="517.8" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="357.6" x="52.2" y="147.1553">2.1 attach(sender, "registration/${tenant_id}")</text><polygon fill="#A80036" points="57,183.3937,45,188.1938,57,192.9938,52.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="529.8" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="366" x="64.2" y="182.1146">2.2 attach(receiver, "registration/${tenant_id}")</text><polygon fill="#A80036" points="510.6,218.3531,522.6,223.1531,510.6,227.9531,515.4,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="517.8" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="458.4" x="52.2" y="217.074">3.1 attach(receiver, "registration/${tenant_id}/${reply-to}")</text><polygon fill="#A80036" points="57,253.3125,45,258.1125,57,262.9125,52.2,258.1125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="529.8" y1="258.1125" y2="258.1125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="450" x="64.2" y="252.0334">3.2 attach(sender, "registration/${tenant_id}/${reply-to}")</text><!--
+@startuml
+scale 1.2
+
+Client -> "Device Registration Service"++: 1.1 open
+"Device Registration Service" -> Client- -: 1.2 open
+Client -> "Device Registration Service"++: 2.1 attach(sender, "registration/${tenant_id}")
+"Device Registration Service" -> Client- -: 2.2 attach(receiver, "registration/${tenant_id}")
+Client -> "Device Registration Service"++: 3.1 attach(receiver, "registration/${tenant_id}/${reply-to}")
+"Device Registration Service" -> Client- -: 3.2 attach(sender, "registration/${tenant_id}/${reply-to}")
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/event/consume.svg b/docs/1.5/api/event/consume.svg
new file mode 100644
index 0000000..541f10d
--- /dev/null
+++ b/docs/1.5/api/event/consume.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="187.2px" preserveAspectRatio="none" style="width:589px;height:187px;" version="1.1" viewBox="0 0 589 187" width="589.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f1j88j41ohd0n4" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1j88j41ohd0n4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="478.2" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="144" x2="144" y1="45.9563" y2="139.875"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="483.6" x2="483.6" y1="45.9563" y2="139.875"/><rect fill="#FEFECE" filter="url(#f1j88j41ohd0n4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="18" y="27.5941">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#f1j88j41ohd0n4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="9.6" y="138.675"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="18" y="162.6691">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#f1j88j41ohd0n4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="387.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="396" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#f1j88j41ohd0n4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="387.6" y="138.675"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="396" y="162.6691">Business Application</text><rect fill="#FFFFFF" filter="url(#f1j88j41ohd0n4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="478.2" y="83.3156"/><polygon fill="#A80036" points="463.8,78.5156,475.8,83.3156,463.8,88.1156,468.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="144.6" x2="471" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="310.8" x="153" y="77.2365">1.0 transfer(device_id: 4711, body: data)</text><polygon fill="#A80036" points="157.8,113.475,145.8,118.275,157.8,123.075,153,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="150.6" x2="483" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="254.4" x="165" y="112.1959">1.1 disposition(state: "accepted")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Messaging Network"
+participant "Business Application"
+
+"AMQP 1.0 Messaging Network" -> "Business Application"+: 1.0 transfer(device_id: 4711, body: data)
+"Business Application" -> "AMQP 1.0 Messaging Network"-: 1.1 disposition(state: "accepted")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/event/forward.svg b/docs/1.5/api/event/forward.svg
new file mode 100644
index 0000000..30a2076
--- /dev/null
+++ b/docs/1.5/api/event/forward.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="258px" preserveAspectRatio="none" style="width:921px;height:258px;" version="1.1" viewBox="0 0 921 258" width="921.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f92uui3yoh7h1" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f92uui3yoh7h1)" height="115.6781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="414.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f92uui3yoh7h1)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="772.2" y="118.275"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="420" x2="420" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="777.6" x2="777.6" y1="45.9563" y2="209.7938"/><rect fill="#FEFECE" filter="url(#f92uui3yoh7h1)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#f92uui3yoh7h1)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="232.5879">Device</text><rect fill="#FEFECE" filter="url(#f92uui3yoh7h1)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="350.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="358.8" y="27.5941">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f92uui3yoh7h1)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="135.6" x="350.4" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="118.8" x="358.8" y="232.5879">MQTT Adapter</text><rect fill="#FEFECE" filter="url(#f92uui3yoh7h1)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="643.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="651.6" y="27.5941">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#f92uui3yoh7h1)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="643.2" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="651.6" y="232.5879">AMQP 1.0 Messaging Network</text><rect fill="#FFFFFF" filter="url(#f92uui3yoh7h1)" height="115.6781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="414.6" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f92uui3yoh7h1)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="772.2" y="118.275"/><polygon fill="#A80036" points="400.2,78.5156,412.2,83.3156,400.2,88.1156,405,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="407.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="343.2" x="57" y="77.2365">1.0 PUBLISH("e/TENANT/4711", qos=1, data)</text><polygon fill="#A80036" points="757.8,113.475,769.8,118.275,757.8,123.075,762.6,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="426.6" x2="765" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="322.8" x="435" y="112.1959">1.1 transfer(device_id: "4711", body: data)</text><polygon fill="#A80036" points="439.8,148.4344,427.8,153.2344,439.8,158.0344,435,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="432.6" x2="777" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="254.4" x="447" y="147.1553">1.2 disposition(state: "accepted")</text><polygon fill="#A80036" points="61.8,183.3937,49.8,188.1938,61.8,192.9938,57,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="413.4" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="92.4" x="69" y="182.1146">1.3 PUBACK</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "MQTT Adapter"
+participant "AMQP 1.0 Messaging Network"
+
+Device -> "MQTT Adapter"++: 1.0 PUBLISH("e/TENANT/4711", qos=1, data)
+"MQTT Adapter" -> "AMQP 1.0 Messaging Network"+: 1.1 transfer(device_id: "4711", body: data)
+"AMQP 1.0 Messaging Network" -> "MQTT Adapter"-: 1.2 disposition(state: "accepted")
+"MQTT Adapter" -> Device: 1.3 PUBACK
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/event/index.html b/docs/1.5/api/event/index.html
new file mode 100644
index 0000000..f76bae9
--- /dev/null
+++ b/docs/1.5/api/event/index.html
@@ -0,0 +1,3000 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Event API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Event API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Event API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/event//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/event/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/event/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/event/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/event/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/event/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/event/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/event/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/event/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/event/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/event/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Event API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#southbound-operations">Southbound Operations</a>
+<ul>
+<li><a href="#forward-event">Forward Event</a></li>
+</ul></li>
+<li><a href="#northbound-operations">Northbound Operations</a>
+<ul>
+<li><a href="#receive-events">Receive Events</a></li>
+</ul></li>
+<li><a href="#well-known-event-message-types">Well-known Event Message Types</a>
+<ul>
+<li><a href="#empty-notification">Empty Notification</a></li>
+<li><a href="#connection-event">Connection Event</a></li>
+</ul></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Event API Specification</h1>
+
+
+
+
+
+<p>The <em>Event</em> API is used by <em>Protocol Adapters</em> to send event messages downstream.
+<em>Business Applications</em> and other consumers use the API to receive messages published by devices belonging to a particular tenant.</p>
+
+<p>The Event API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to Hono using AMQP 1.0 in order to invoke operations of the API as described in the following sections. Throughout the remainder of this page we will simply use <em>AMQP</em> when referring to AMQP 1.0.</p>
+
+<h2 id="southbound-operations">Southbound Operations</h2>
+
+<p>The following operations can be used by <em>Protocol Adapters</em> to forward event messages received from devices to downstream consumers like <em>Business Applications</em>.</p>
+
+<h3 id="forward-event">Forward Event</h3>
+
+<p><strong>Preconditions</strong></p>
+
+<ol>
+<li>Adapter has established an AMQP connection with the AMQP Messaging Network.</li>
+<li>Adapter has established an AMQP link in role <em>sender</em> with the AMQP Messaging Network using target address <code>event/${tenant_id}</code> where <code>${tenant_id}</code> is the ID of the tenant that the client wants to upload event messages for.</li>
+<li>The device for which the adapter wants to send an event has been registered (see <a href="/hono/docs/1.5/api/device-registration/">Device Registration API</a>).</li>
+</ol>
+
+<p>Hono supports <em>AT LEAST ONCE</em> delivery of <em>Event</em> messages only. A client therefore MUST use <code>unsettled</code> for the <em>snd-settle-mode</em> and <code>first</code> for the <em>rcv-settle-mode</em> fields of its <em>attach</em> frame during link establishment. All other combinations are not supported by Hono and may result in the termination of the link or connection (depending on the configuration of the AMQP Messaging Network).</p>
+
+<p>The AMQP messages used to forward events to the AMQP Messaging Network MUST have their <em>durable</em> property set to <code>true</code>. The AMQP Messaging Network is expected to write such messages to a persistent store before settling the transfer with the <code>accepted</code> outcome.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in the <em>MQTT Adapter</em> forwarding an event to the downstream AMQP Messaging Network.</p>
+
+<figure>
+ <img src="forward.svg"/> <figcaption>
+ <h4>Forward event flow</h4>
+ </figcaption>
+</figure>
+
+
+<ol>
+<li><em>Device</em> <code>4711</code> publishes an event using MQTT QoS 1.
+
+<ol>
+<li><em>MQTT Adapter</em> transfers data to <em>AMQP 1.0 Messaging Network</em>.</li>
+<li><em>AMQP 1.0 Messaging Network</em> acknowledges reception of the message.</li>
+<li><em>MQTT Adapter</em> acknowledges the reception of the message to the <em>Device</em>.</li>
+</ol></li>
+</ol>
+
+<p>When the AMQP Messaging Network fails to settle the transfer of an event message or settles the transfer with any other outcome than <code>accepted</code>, the protocol adapter MUST NOT try to re-send such rejected messages but MUST indicate the failed transfer to the device if the transport protocol provides means to do so.</p>
+
+<p><strong>Message Format</strong></p>
+
+<p>See <a href="/hono/docs/1.5/api/telemetry/#forward-telemetry-data">Telemetry API</a> for definition of message format.</p>
+
+<h2 id="northbound-operations">Northbound Operations</h2>
+
+<h3 id="receive-events">Receive Events</h3>
+
+<p>Hono delivers messages containing events reported by a particular device in the same order that they have been received in (using the <a href="#forward-event">Forward Event</a> operation).</p>
+
+<p>Hono supports multiple non-competing <em>Business Application</em> consumers of event messages for a given tenant. Hono allows each <em>Business Application</em> to have multiple competing consumers for event messages for a given tenant to share the load of processing the messages.</p>
+
+<p><strong>Preconditions</strong></p>
+
+<ol>
+<li>Client has established an AMQP connection with Hono.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> with Hono using source address <code>event/${tenant_id}</code> where <code>${tenant_id}</code> represents the ID of the tenant the client wants to retrieve event messages for.</li>
+</ol>
+
+<p>Hono supports <em>AT LEAST ONCE</em> delivery of <em>Event</em> messages only. A client therefore MUST use <code>unsettled</code> for the <em>snd-settle-mode</em> and <code>first</code> for the <em>rcv-settle-mode</em> fields of its <em>attach</em> frame during link establishment. All other combinations are not supported by Hono and result in the termination of the link.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in a <em>Business Application</em> receiving an event message from Hono.</p>
+
+<figure>
+ <img src="consume.svg"/> <figcaption>
+ <h4>Receive event data flow (success)</h4>
+ </figcaption>
+</figure>
+
+
+<ol>
+<li><em>AMQP 1.0 Messaging Network</em> delivers event message to <em>Business Application</em>.
+
+<ol>
+<li><em>Business Application</em> acknowledges reception of message.</li>
+</ol></li>
+</ol>
+
+<p><strong>Message Format</strong></p>
+
+<p>See <a href="/hono/docs/1.5/api/telemetry/#forward-telemetry-data">Telemetry API</a> for definition of message format.</p>
+
+<h2 id="well-known-event-message-types">Well-known Event Message Types</h2>
+
+<p>Hono defines several <em>well-known</em> event types which have specific semantics. Events of these types are identified by means of the AMQP message’s <em>content-type</em>.</p>
+
+<h3 id="empty-notification">Empty Notification</h3>
+
+<p>An AMQP message containing this type of event does not have any payload so the body of the message MUST be empty.</p>
+
+<p>The AMQP 1.0 properties an event sender needs to set for an <em>empty notification</em> event are defined in the <a href="/hono/docs/1.5/api/telemetry/"><em>Telemetry API</em></a>.</p>
+
+<p>The relevant properties are listed again in the following table:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>symbol</em></td>
+<td align="left">MUST be set to <em>application/vnd.eclipse-hono-empty-notification</em></td>
+</tr>
+
+<tr>
+<td align="left"><em>ttd</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">The <em>time ‘til disconnect</em> as described in the <a href="/hono/docs/1.5/api/telemetry/"><em>Telemetry API</em></a>.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>NB</strong> An empty notification can be used to indicate to a <em>Business Application</em> that a device is currently ready to receive an upstream message by setting the <em>ttd</em> property. <em>Backend Applications</em> may use this information to determine the time window during which the device will be able to receive a command.</p>
+
+<h3 id="connection-event">Connection Event</h3>
+
+<p>Protocol Adapters may send this type of event to indicate that a connection with a device has
+been established or has ended. Note that such events can only be sent for authenticated devices,
+though, because an event is always scoped to a tenant and the tenant of a device is
+established as part of the authentication process.</p>
+
+<p>The AMQP message for a connection event MUST contain the following properties in addition to the standard event properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>symbol</em></td>
+<td align="left">Must be set to <em>application/vnd.eclipse-hono-dc-notification+json</em></td>
+</tr>
+
+<tr>
+<td align="left"><em>device_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The ID of the authenticated device</td>
+</tr>
+</tbody>
+</table>
+
+<p>Each connection event’s payload MUST contain a UTF-8 encoded string representation of a single JSON object with the following fields:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>cause</em></td>
+<td align="center">yes</td>
+<td align="left"><em>string</em></td>
+<td align="left">The cause of the connection event. MUST be set to either <code>connected</code> or <code>disconnected</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>remote-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>string</em></td>
+<td align="left">An identifier of the device that is the subject of this event, e.g. an IP address:port, client id etc. The format and semantics of this identifier is specific to the protocol adapter and the transport protocol it supports.</td>
+</tr>
+
+<tr>
+<td align="left"><em>source</em></td>
+<td align="center">yes</td>
+<td align="left"><em>string</em></td>
+<td align="left">The type name of the protocol adapter reporting the event, e.g. <code>hono-mqtt</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>data</em></td>
+<td align="center">no</td>
+<td align="left"><em>object</em></td>
+<td align="left">An arbitrary JSON object which may contain additional information about the occurrence of the event.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The example below might be used by the MQTT adapter to indicate that a connection with a device using client identifier <code>mqtt-client-id-1</code> has been established:</p>
+
+<pre><code class="language-json">{
+ "cause": "connected",
+ "remote-id": "mqtt-client-id-1",
+ "source": "hono-mqtt",
+ "data": {
+ "foo": "bar"
+ }
+}
+</code></pre>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/index.html b/docs/1.5/api/index.html
new file mode 100644
index 0000000..1cc8e57
--- /dev/null
+++ b/docs/1.5/api/index.html
@@ -0,0 +1,2743 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>API :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="API :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="API :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+ active
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/_index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > API
+
+
+
+
+
+ </span>
+ </div>
+
+ </div>
+ </div>
+
+
+
+ <div id="chapter">
+
+ <div id="body-inner">
+
+
+
+
+
+
+
+<h1 id="api">API</h1>
+
+<p>Documentation of the APIs defined by Eclipse Hono™.</p>
+
+<p>For an overview of the available APIs, see the <a href="/hono/docs/1.5/architecture/component-view/">architecture documentation</a>.</p>
+
+
+<footer class=" footline" >
+
+</footer>
+
+
+ </div>
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
diff --git a/docs/1.5/api/index.xml b/docs/1.5/api/index.xml
new file mode 100644
index 0000000..0aee14c
--- /dev/null
+++ b/docs/1.5/api/index.xml
@@ -0,0 +1,123 @@
+<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
+ <channel>
+ <title>API on Eclipse Hono&trade; Vers.: 1.5</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/</link>
+ <description>Recent content in API on Eclipse Hono&trade; Vers.: 1.5</description>
+ <generator>Hugo -- gohugo.io</generator>
+ <language>en-us</language>
+
+ <atom:link href="https://www.eclipse.org/hono/docs/1.5/api/index.xml" rel="self" type="application/rss+xml" />
+
+
+ <item>
+ <title>Telemetry API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/telemetry/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/telemetry/</guid>
+ <description><p>The <em>Telemetry</em> API is used by <em>Protocol Adapters</em> to send telemetry data downstream.
+<em>Business Applications</em> and other consumers use the API to receive data published by devices belonging to a particular tenant.</p></description>
+ </item>
+
+ <item>
+ <title>Event API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/event/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/event/</guid>
+ <description><p>The <em>Event</em> API is used by <em>Protocol Adapters</em> to send event messages downstream.
+<em>Business Applications</em> and other consumers use the API to receive messages published by devices belonging to a particular tenant.</p></description>
+ </item>
+
+ <item>
+ <title>Command & Control API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/command-and-control/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/command-and-control/</guid>
+ <description><p>The <em>Command &amp; Control</em> API of Eclipse Hono&trade; is used by <em>Business Applications</em> to send commands to connected devices.</p>
+
+<p>Commands can be used to trigger actions on devices. Examples include updating a configuration property, installing a software component or switching the state of an actuator.</p></description>
+ </item>
+
+ <item>
+ <title>Tenant API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/tenant/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/tenant/</guid>
+ <description><p>The <em>Tenant API</em> is used by Hono&rsquo;s protocol adapters to retrieve information that affects all devices belonging to a particular tenant.
+A tenant is a logical entity, which groups together a set of devices. The information registered for a tenant is used for example to
+determine if devices belonging to the tenant are allowed to connect to a certain protocol adapter or if devices are required to authenticate.</p></description>
+ </item>
+
+ <item>
+ <title>Command Router API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/command-router/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/command-router/</guid>
+ <description><p><em>Protocol Adapters</em> use the <em>Command Router API</em> to supply information with which a Command Router service component can route command &amp; control messages to the protocol adapters that the target devices are connected to.</p></description>
+ </item>
+
+ <item>
+ <title>Device Connection API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/device-connection/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/device-connection/</guid>
+ <description><p>The <em>Device Connection API</em> is used by <em>Protocol Adapters</em> to set and retrieve information about the connections from devices or gateways to the protocol adapters.</p></description>
+ </item>
+
+ <item>
+ <title>Device Registration API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/device-registration/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/device-registration/</guid>
+ <description><p>The <em>Device Registration API</em> is used by Hono&rsquo;s protocol adapters to get information about devices connecting to the adapters.</p></description>
+ </item>
+
+ <item>
+ <title>Credentials API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/credentials/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/credentials/</guid>
+ <description><p>The <em>Credentials API</em> is used by <em>Protocol Adapters</em> to retrieve credentials used to authenticate <em>Devices</em> connecting to the adapter. In particular, the API supports to look up <em>shared secrets</em> which are often used by IoT devices by means of <em>username/password</em> based authentication schemes.</p></description>
+ </item>
+
+ <item>
+ <title>Authentication API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/authentication/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/authentication/</guid>
+ <description><p>The <em>Authentication API</em> is used to retrieve a <em>token</em> asserting a subject&rsquo;s identity and granted authorities. Other service implementations use such a token to make authorization decisions on a client&rsquo;s request to read or write from/to a resource or to invoke a certain operation.</p></description>
+ </item>
+
+ <item>
+ <title>Device Registry Management API Specification</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/management/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/management/</guid>
+ <description> window.onload = function() { const ui = SwaggerUIBundle({ url: "device-registry-v1.yaml", dom_id: '#swagger-ui', deepLinking: true, presets: [ SwaggerUIBundle.presets.apis, SwaggerUIStandalonePreset ], plugins: [ SwaggerUIBundle.plugins.DownloadUrl ], layout: "StandaloneLayout", docExpansion: "none", defaultModelRendering: "model", defaultModelExpandDepth: 0, defaultModelsExpandDepth: -1, validatorUrl: null }) window.ui = ui } </description>
+ </item>
+
+ <item>
+ <title>Metrics</title>
+ <link>https://www.eclipse.org/hono/docs/1.5/api/metrics/</link>
+ <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
+
+ <guid>https://www.eclipse.org/hono/docs/1.5/api/metrics/</guid>
+ <description><p>Eclipse Hono&trade;&rsquo;s components report several metrics which may be used to gain some insight
+into the running system. For instance, the HTTP adapter reports the number of successfully
+processed telemetry messages. Some of these metrics are considered part of Hono&rsquo;s external
+interface. This section describes the semantics and format of the metrics, how they can be retrieved
+and how to interpret actual values.</p></description>
+ </item>
+
+ </channel>
+</rss>
\ No newline at end of file
diff --git a/docs/1.5/api/management/device-registry-v1.yaml b/docs/1.5/api/management/device-registry-v1.yaml
new file mode 100644
index 0000000..a1af790
--- /dev/null
+++ b/docs/1.5/api/management/device-registry-v1.yaml
@@ -0,0 +1,1636 @@
+openapi: 3.0.1
+info:
+ title: Eclipse Hono™ Device Registry API
+ description: |
+ This API defines how to manage *Tenants*, *Devices*, and *Credentials*.
+ It acts as a common basis which all Hono device registries should
+ implement.
+
+ ## Required APIs
+
+ All operations, except the `tenants` resource are required. The tenant
+ management might be outside of the scope of the device registry and
+ managed by a higher level system. In this case all calls should simply
+ return `404`. However, if the `tenants` resource is implemented, then all
+ operations of it must be implemented.
+
+ ## Security
+
+ This specification explicitly leaves out the part of authenticating and
+ authorizing users with the device registry. It is assumed that some form
+ of token exchange between the user agent and the backend service will
+ take place. Like for example HTTP basic authentication, or a bearer token.
+
+ ## Code generation
+
+ This model is not optimized for generating code from it. Code generators
+ try to understand the model and then translate this into the required
+ programming language. Even if there would be no bugs in the code
+ generators, that process would already only be an approximation. So
+ this model focuses on the description of the API, and does not tweak
+ the specification in a way to please code generators.
+
+ contact:
+ name: Contact details
+ url: https://www.eclipse.org/hono/community/get-in-touch/
+ license:
+ name: EPL-2.0
+ url: https://www.eclipse.org/legal/epl-2.0/
+ version: 1.5.0
+
+externalDocs:
+ description: Eclipse Hono™ web page
+ url: https://eclipse.org/hono
+
+tags:
+ - name: tenants
+ description: Tenant Management (optional)
+ externalDocs:
+ description: Hono Multi-Tenancy
+ url: https://www.eclipse.org/hono/docs/concepts/tenancy/
+ - name: devices
+ description: Device registration
+ externalDocs:
+ description: Hono device identity
+ url: https://www.eclipse.org/hono/docs/concepts/device-identity/
+ - name: credentials
+ description: Device credentials
+ externalDocs:
+ description: Hono device identity
+ url: https://www.eclipse.org/hono/docs/concepts/device-identity/
+
+servers:
+ - url: '{server}/v1'
+ variables:
+ server:
+ default: http://hono.eclipse.org:28080
+
+security:
+ - BearerAuth: []
+ - BasicAuth: []
+
+paths:
+
+# Tenant API
+
+ /tenants:
+
+ post:
+ tags:
+ - tenants
+ summary: Create a new tenant with an auto-generated ID
+ description: |
+ Clients use this operation to register a new tenant with an identifier that
+ is generated by the registry.
+ operationId: createTenant
+ requestBody:
+ description: The configuration properties to register for the tenant.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tenant'
+ examples:
+ default:
+ $ref: '#/components/examples/TenantAllAdaptersExample'
+ mqtt-only:
+ $ref: '#/components/examples/TenantMqttAdapterOnlyExample'
+ required: false
+ responses:
+ 201:
+ $ref: '#/components/responses/Created'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 409:
+ description: |
+ Indicates that an existing tenant uses a certificate authority with the same Subject DN.
+ If the client has no read access to the conflicting tenant then `403` should be returned instead.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "Root Certificate Authority is already used by other tenant"
+ subject-dn: "CN=devices,OU=iot,O=ACME"
+
+ /tenants/{tenantId}:
+
+ parameters:
+ - $ref: '#/components/parameters/tenantId'
+
+ post:
+ tags:
+ - tenants
+ summary: Create a new tenant with a given ID
+ description: |
+ Clients use this operation to register a new tenant with a given identifier.
+ operationId: createTenantWithId
+ requestBody:
+ description: The configuration properties to register for the tenant.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tenant'
+ examples:
+ default:
+ $ref: '#/components/examples/TenantAllAdaptersExample'
+ mqtt-only:
+ $ref: '#/components/examples/TenantMqttAdapterOnlyExample'
+ required: false
+ responses:
+ 201:
+ $ref: '#/components/responses/Created'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 409:
+ description: |
+ Indicates that a tenant with the given identifier already exists or that an existing tenant uses
+ a certificate authority with the same Subject DN.
+ If the client has no read access to the conflicting tenant then `403` should be returned instead.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "tenant with given identifier already exists"
+
+ get:
+ tags:
+ - tenants
+ summary: Get tenant information
+ description: |
+ Clients use this operation to retrieve the configuration properties of an existing tenant.
+ operationId: getTenant
+ responses:
+ 200:
+ description: operation successful
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tenant'
+ examples:
+ mqtt-only:
+ summary: Constrained tenant
+ description: |
+ The body contains the configuration properties of a tenant for which
+ some resource limits have been defined.
+ value: |
+ {
+ "enabled": true,
+ "resource-limits": {
+ "max-connections": 1000,
+ "max-ttl": 3600,
+ "data-volume": {
+ "effective-since": "2019-12-01T00:00:00Z",
+ "max-bytes": 10000000,
+ "period": {
+ "mode": "monthly"
+ }
+ }
+ }
+ }
+ headers:
+ ETag:
+ description: Version of the resource
+ schema:
+ type: string
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 404:
+ $ref: '#/components/responses/NotFound'
+
+ put:
+ tags:
+ - tenants
+ summary: Update tenant information
+ description: |
+ Clients use this operation to replace an existing tenant's registration information
+ with the information contained in the request body.
+ operationId: updateTenant
+ parameters:
+ - $ref: '#/components/parameters/resourceVersion'
+ requestBody:
+ description: The configuration properties to replace the tenant's existing configuration with.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Tenant'
+ examples:
+ disable-tenant:
+ summary: Disable a tenant
+ description: |
+ Disabling a tenant effectively prevents any devices of that tenant
+ to connect to any of the protocol adapters. Devices that are
+ already connected to an adapter can no longer upload any data
+ nor receive any commands. Note that the example payload does
+ not contain any other properties than *enabled* which means
+ that all other configuration will be removed.
+ value: |
+ {
+ "enabled": false
+ }
+ required: true
+ responses:
+ 204:
+ $ref: '#/components/responses/Updated'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 404:
+ $ref: '#/components/responses/NotFound'
+ 409:
+ description: |
+ Indicates that an existing tenant uses a certificate authority with the same Subject DN.
+ If the client has no read access to the conflicting tenant then `403` should be returned instead.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+ example:
+ error: "Root Certificate Authority is already used by other tenant"
+ subject-dn: "CN=devices,OU=iot,O=ACME"
+ 412:
+ $ref: '#/components/responses/ResourceVersionMismatch'
+
+ delete:
+ tags:
+ - tenants
+ summary: Delete tenant
+ description: |
+ Clients use this operation to remove an existing tenant from the registry.
+
+ When the operation succeeds, the data owned by this tenant (including devices and their
+ credentials) must no longer be accessible. These entities should be reported as *not found*.
+ operationId: deleteTenant
+ parameters:
+ - $ref: '#/components/parameters/resourceVersion'
+ responses:
+ 204:
+ $ref: '#/components/responses/Deleted'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 404:
+ $ref: '#/components/responses/NotFound'
+ 412:
+ $ref: '#/components/responses/ResourceVersionMismatch'
+
+# Device API
+
+ /devices/{tenantId}:
+
+ parameters:
+ - $ref: '#/components/parameters/tenantId'
+
+ post:
+ tags:
+ - devices
+ summary: Create a new device registration with auto-generated ID
+ description: |
+ Clients use this operation to register a new device for an existing tenant with
+ an identifier that is generated by the registry.
+ operationId: createDeviceRegistration
+ requestBody:
+ description: The configuration properties to register for the device.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Device'
+ examples:
+ default:
+ $ref: '#/components/examples/DeviceDefaultExample'
+ extensions:
+ $ref: '#/components/examples/DeviceExtExample'
+ required: false
+ responses:
+ 201:
+ $ref: '#/components/responses/Created'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 404:
+ $ref: '#/components/responses/TenantNotFound'
+
+ get:
+ tags:
+ - devices
+ summary: Search devices for a tenant with optional filters, paging and sorting options.
+ operationId: searchDevicesForTenant
+ parameters:
+ - $ref: '#/components/parameters/pageSize'
+ - $ref: '#/components/parameters/pageOffset'
+ - $ref: '#/components/parameters/filterJson'
+ - $ref: '#/components/parameters/sortJson'
+ responses:
+ 200:
+ description: operation successful
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/SearchDevicesResult'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 404:
+ $ref: '#/components/responses/NotFound'
+
+ /devices/{tenantId}/{deviceId}:
+
+ parameters:
+ - $ref: '#/components/parameters/tenantId'
+ - $ref: '#/components/parameters/deviceId'
+
+ post:
+ tags:
+ - devices
+ summary: Create a new device registration
+ description: |
+ Clients use this operation to register a new device for an existing tenant with
+ a given identifier
+ operationId: createDeviceRegistrationWithId
+ requestBody:
+ description: The configuration properties to register for the device.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Device'
+ examples:
+ default:
+ $ref: '#/components/examples/DeviceDefaultExample'
+ extensions:
+ $ref: '#/components/examples/DeviceExtExample'
+ required: false
+ responses:
+ 201:
+ $ref: '#/components/responses/Created'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 409:
+ $ref: '#/components/responses/AlreadyExists'
+ 404:
+ $ref: '#/components/responses/TenantNotFound'
+
+ get:
+ tags:
+ - devices
+ summary: Get device registration information
+ description: |
+ Clients use this operation to retrieve the configuration properties of an existing device.
+ operationId: getRegistration
+ responses:
+ 200:
+ description: operation successful
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Device'
+ examples:
+ fully-configured:
+ summary: Fully configured device
+ description: |
+ The body contains the configuration properties of a device which
+ has been configured extensively.
+ value: |
+ {
+ "enabled": true,
+ "defaults": {
+ "ttl": 300,
+ "content-type": "application/vnd.acme+json"
+ },
+ "via": [
+ "gw-1", "gw-4"
+ ],
+ "status": {
+ "created": "2019-10-03T13:45:16Z"
+ "updated": "2020-05-04T10:11:12Z"
+ "last-user": "Bob",
+ "autoProvisioned": false,
+ "autoProvisioningNotificationSent": false
+ }
+ "ext": {
+ "manufacturer": "ACME",
+ "model-no": "TEMP-SEN",
+ "serial-no": "3435A-454"
+ }
+ }
+ headers:
+ ETag:
+ description: Version of the resource
+ schema:
+ type: string
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 404:
+ $ref: '#/components/responses/NotFound'
+
+ put:
+ tags:
+ - devices
+ summary: Update an existing device registration
+ description: |
+ Clients use this operation to replace an existing device's registration information
+ with the information contained in the request body.
+ operationId: updateRegistration
+ parameters:
+ - $ref: '#/components/parameters/resourceVersion'
+ requestBody:
+ description: The configuration properties to replace the device's existing configuration with.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Device'
+ examples:
+ disable-device:
+ summary: Disable a device
+ description: |
+ Disabling a device effectively prevents the device
+ to connect to any of the protocol adapters. If the device is
+ already connected to an adapter then it can no longer upload
+ any data nor receive any commands. Note that the example payload does
+ not contain any other properties than *enabled* which means
+ that all other configuration will be removed.
+ value: |
+ {
+ "enabled": false
+ }
+ required: true
+ responses:
+ 204:
+ $ref: '#/components/responses/Updated'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 404:
+ $ref: '#/components/responses/NotFound'
+ 412:
+ $ref: '#/components/responses/ResourceVersionMismatch'
+
+ delete:
+ tags:
+ - devices
+ summary: Delete an existing device registration
+ description: |
+ Clients use this operation to remove an existing device from the registry.
+
+ When the operation succeeds, the data owned by this device (including its credentials)
+ must no longer be accessible. These entities should be reported as *not found*.
+ operationId: deleteRegistration
+ parameters:
+ - $ref: '#/components/parameters/resourceVersion'
+ responses:
+ 204:
+ $ref: '#/components/responses/Deleted'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 404:
+ $ref: '#/components/responses/NotFound'
+ 412:
+ $ref: '#/components/responses/ResourceVersionMismatch'
+
+ /credentials/{tenantId}/{deviceId}:
+
+ parameters:
+ - $ref: '#/components/parameters/tenantId'
+ - $ref: '#/components/parameters/deviceId'
+
+ get:
+ tags:
+ - credentials
+ summary: Gets a device's set of credentials.
+ description: |
+ Clients use this operation to retrieve the set of credentials registered for an existing device.
+ Hono's protocol adapters use the credentials registered for a device in order to
+ authenticate the device when it connects to an adapter.
+ Implementors may return all of the credentials' data including all
+ details of its secrets like password hash and/or hash algortihm used.
+ This mode of operation is called *replace mode*. However, this behavior is
+ discouraged because it might disclose confidential information in plain text.
+
+ Instead, implementors should remove all confidential information from the secrets
+ and include a (unique) identifier with each secret. Clients can then refer to
+ this identifier in order to update particular secrets. This mode of operation
+ is called *patch mode*.
+ operationId: getAllCredentials
+ responses:
+ 200:
+ description: Operation successful
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CredentialsSet'
+ examples:
+ meta-data:
+ $ref: '#/components/examples/CredentialsMetaDataExample'
+ headers:
+ ETag:
+ description: Version of the resource
+ schema:
+ type: string
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 404:
+ $ref: '#/components/responses/DeviceNotFound'
+
+ put:
+ tags:
+ - credentials
+ summary: Updates a device's credentials.
+ description: |
+ A client uses this operation to update a device's existing set of credentials
+ with the credentials contained in the request body.
+
+ A registry may run in one of two modes for updating credentials, *replace mode*
+ or *patch mode*. A client can determine the mode of operation by means of inspecting
+ any of the secrets returned by the *getAllCredentials* operation. If the secrets
+ do not contain an `id` property, then the registry uses *replace mode*, otherwise
+ it operates in *patch mode*.
+
+ In replace mode the registry simply replaces a device's existing set of credentials
+ with the credentials provided in the request body.
+
+ In patch mode the registry processes the set of updated credentials provided in the
+ request body as follows.
+ 1. Start with an empty set `N` of new credentials.
+ 1. For each updated credentials object `c-U` contained in the request body,
+ the registry looks up an existing credentials object `c-E` of the same device ID, type
+ and authentication identifier.
+ 1. If no matching credentials object exists, `c-U` is added to the set of new
+ credentials `N`.
+ 1. Otherwise, `c-E` is patched over with `c-U` as follows. For each of `c-U`'s
+ secrets `s-U` the registry does the following
+ 1. If `s-U` has no `id` property, the registry assigns a unique identifier to `s-U`.
+ 1. Otherwise, the registry tries to find a secret `s-E` with the same identifier as `s-U`
+ among the secrets of `c-E`.
+ 1. If no matching secret exists, updating the credentials has failed and the registry
+ returns a response with status 400 (Bad Request).
+ 1. Otherwise the confidential properties of `s-E` are merged into `s-U`
+ with the property values of `s-U` taking precedence.
+ 1. `c-U` is added to `N`.
+ 1. The registry replaces the device's existing set of credentials with `N` and returns an
+ empty response with status code 204 (No Content) to indicate the successful outcome of the
+ operation.
+
+ Note that `N` does not contain any of the existing credentials objects `c-E` for which
+ no corresponding credentials object `c-U` with the same device ID, type and authentication
+ identifier exists. This way, existing credentials can be deleted.
+ operationId: setAllCredentials
+ parameters:
+ - $ref: '#/components/parameters/resourceVersion'
+ requestBody:
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/CredentialsSet'
+ examples:
+ set-password:
+ $ref: '#/components/examples/CredentialsSetPasswordExample'
+ change-password:
+ $ref: '#/components/examples/CredentialsChangePasswordExample'
+ required: true
+ responses:
+ 204:
+ $ref: '#/components/responses/Updated'
+ 400:
+ $ref: '#/components/responses/MalformedRequest'
+ 401:
+ $ref: '#/components/responses/Unauthorized'
+ 403:
+ $ref: '#/components/responses/NotAllowed'
+ 404:
+ $ref: '#/components/responses/DeviceNotFound'
+ 409:
+ $ref: '#/components/responses/AlreadyExists'
+ 412:
+ $ref: '#/components/responses/ResourceVersionMismatch'
+
+components:
+
+ schemas:
+
+# Common schema
+
+ Error:
+ type: object
+ additionalProperties: true
+ required:
+ - error
+ properties:
+ "error":
+ type: string
+ description: A human readable error message of what went wrong.
+
+ DefaultProperties:
+ type: object
+ additionalProperties: true
+ description: Defaults for properties defined on the tenant and device level.
+
+ Extensions:
+ type: object
+ additionalProperties: true
+ description: Allows arbitrary properties as extension to the ones
+ specified by the Hono API.
+
+ # Tenant schema
+
+ Tenant:
+ type: object
+ additionalProperties: false
+ properties:
+ "enabled":
+ type: boolean
+ default: true
+ "ext":
+ $ref: '#/components/schemas/Extensions'
+ "adapters":
+ type: array
+ description: |
+ A list of configuration options for certain types of protocol adapters.
+ If set then the array must not be empty.
+ Multiple entries for the same type are considered an error.
+ If not set, then all adapters are enabled using their respective
+ default configuration.
+ items:
+ $ref: '#/components/schemas/Adapter'
+ "defaults":
+ $ref: '#/components/schemas/DefaultProperties'
+ "minimum-message-size":
+ type: integer
+ default: 0
+ description: |
+ The minimum message size in bytes. If set, then reported size of
+ telemetry, event and command messages is calculated as the minimum multiple
+ of the configured value that is greater than or equal to the messages
+ payload size.
+ "resource-limits":
+ $ref: '#/components/schemas/ResourceLimit'
+ "tracing":
+ $ref: '#/components/schemas/TracingConfig'
+ "trusted-ca":
+ type: array
+ description: |
+ The set of root certificate authorities which are used for verifying the signature of
+ client certificates that devices use for authentication.
+ items:
+ $ref: '#/components/schemas/TrustedCA'
+
+ TrustedCA:
+ type: object
+ additionalProperties: false
+ properties:
+ "subject-dn":
+ type: string
+ description: |
+ The subject DN of the trusted root certificate in
+ the format defined by RFC 2253.
+ CAs of the *same* tenant may share the same subject DN, for example
+ allowing for the definition of overlapping validity periods.
+ However, CAs of *different* tenants must not share the same
+ subject DN in order to allow for the unique look up of a tenant by
+ the subject DN of one of its trusted CAs.
+ If the `cert` property is used to provide an X.509 certificate
+ then the subject DN is determined from the certificate and this
+ property is ignored.
+ Otherwise, if the `public-key` property is
+ used, this property is mandatory.
+ "public-key":
+ type: string
+ format: byte
+ description: |
+ The Base64 encoded binary DER encoding of the
+ trusted root certificate’s public key.
+ If the `cert` property is used to provide an
+ X.509 certificate then the public key is extracted
+ from the certificate and this property is ignored.
+ Either this property or `cert` must be set.
+ "algorithm":
+ type: string
+ description: |
+ The algorithm used for the public key of the CA.
+ If the `cert` property is used to provide an
+ X.509 certificate then the algorithm is determined
+ from the certificate and this property is ignored.
+ Otherwise, if the `public-key` property is
+ used, this property must be set to the algorithm
+ used, if other than the default.
+ default: RSA
+ example: EC
+ "not-before":
+ type: string
+ format: date-time
+ description: |
+ The point in time from which on the certificate authority
+ may be used for authenticating devices.
+ If the `cert` property is used to provide an
+ X.509 certificate then the point in time is
+ determined from the certificate and this property is ignored.
+ Otherwise, if the `public-key` property is
+ used, this property is mandatory.
+ "not-after":
+ type: string
+ format: date-time
+ description: |
+ The point in time until which the certificate authority
+ may be used for authenticating devices.
+ If the `cert` property is used to provide an
+ X.509 certificate then the point in time is
+ determined from the certificate and this property is ignored.
+ Otherwise, if the `public-key` property is
+ used, this property is mandatory.
+ "cert":
+ type: string
+ format: byte
+ description: |
+ The Base64 encoded binary DER encoding of the trusted X.509 root certificate.
+ This property can be used as a convenient alternative to
+ specifying the `public-key`, `not-before`, `not-after` and
+ `algorithm` properties explicitly. Implementors of this
+ API may choose to support this property only for uploading
+ a certificate but then extract all relevant data and store
+ it in the properties described above.
+ Either this property or `public-key` must be set.
+ "auto-provisioning-enabled":
+ type: boolean
+ default: false
+ description: |
+ Indicates whether this trusted certificate may be used for automatically provisioning devices.
+ If it is *true* and the feature is supported by the device registry, the device registry
+ automatically provisions unregistered devices that authenticate with a client certificate
+ issued by this CA (that is, creates registration and credentials).
+
+ example:
+ subject-dn: "CN=devices,OU=iot,O=ACME"
+ public-key: "Tk9UIEEgUFVCTElDIEtFWQ=="
+ algorithm: "EC"
+ auto-provisioning-enabled: false
+ not-before: "2019-10-03T13:45:16+02:00"
+ not-after: "2021-10-03T00:00:00Z"
+
+ Adapter:
+ type: object
+ additionalProperties: true
+ required:
+ - type
+ properties:
+ "type":
+ type: string
+ "enabled":
+ type: boolean
+ default: false
+ "device-authentication-required":
+ type: boolean
+ default: true
+ "ext":
+ $ref: '#/components/schemas/Extensions'
+
+ ResourceLimit:
+ type: object
+ additionalProperties: false
+ properties:
+ "max-connections":
+ type: integer
+ default: -1
+ description: |
+ The maximum number of concurrent connections allowed from devices of this tenant.
+ A value of `-1` (the default) indicates that no limit is set.
+ "max-ttl":
+ type: integer
+ default: -1
+ description: |
+ The maximum time-to-live (in seconds) to use for events published by
+ devices of this tenant. Any default TTL value specified
+ at either the tenant or device level will be limited to
+ the max value specified here.
+ If this property is set to a value greater than -1 and no
+ default TTL is specified for a device, the max value will
+ be used for events published by the device.
+ A value of `-1` (the default) indicates that no limit is set.
+ Note that this property contains the TTL in seconds whereas
+ the AMQP 1.0 specification defines a message's ttl header
+ to use milliseconds.
+ "data-volume":
+ $ref: '#/components/schemas/DataVolume'
+ "connection-duration":
+ $ref: '#/components/schemas/ConnectionDuration'
+ "ext":
+ $ref: '#/components/schemas/Extensions'
+
+ TracingConfig:
+ type: object
+ additionalProperties: false
+ properties:
+ "sampling-mode":
+ type: string
+ description: |
+ Defines if and how often OpenTracing spans are being
+ sampled when processing messages for this tenant.
+ The value `default` indicates that the underyling tracing
+ system's default sampling mode should be used.
+ The value `all` indicates that every span created for
+ messages of the tenant will be sampled.
+ The value `none` indicates that no spans should be sampled
+ at all for the tenant.
+ The mode defined here may be overridden for specific
+ devices by means of the `sampling-mode-per-auth-id`
+ property.
+ default: default
+ enum:
+ - default
+ - all
+ - none
+ "sampling-mode-per-auth-id":
+ type: object
+ description: |
+ Defines if and how often OpenTracing spans are being
+ sampled when processing messages for specific devices
+ of this tenant.
+ This object contains a property for each device for which
+ specific behavior should be defined, using the device's
+ authentication identifier as the property name and
+ the device specific sampling mode as its value.
+ The value `default` indicates that the underyling tracing
+ system's default sampling mode should be used.
+ The value `all` indicates that every span created for
+ messages of the tenant will be sampled.
+ The value `none` indicates that no spans should be sampled
+ at all for the tenant.
+ The mode defined for a particular device has precedence
+ over the value defined by the `sampling-mode` property.
+ additionalProperties:
+ type: string
+ description: |
+ The property name is the device's 'authentication identifier.
+ default: default
+ enum:
+ - default
+ - all
+ - none
+
+ DataVolume:
+ type: object
+ additionalProperties: false
+ required:
+ - effective-since
+ properties:
+ "effective-since":
+ type: string
+ format: date-time
+ description: The point in time at which the data volume limit came into effect.
+ "max-bytes":
+ type: integer
+ default: -1
+ description: The maximum amount of data (in bytes) that all of the tenant's devices together may
+ transfer to and/or receive from protocol adapters during each accounting period.
+ A value of `-1` (the default) indicates that no limit is set.
+ "period":
+ $ref: '#/components/schemas/Period'
+
+ ConnectionDuration:
+ type: object
+ additionalProperties: false
+ required:
+ - effective-since
+ properties:
+ "effective-since":
+ type: string
+ format: date-time
+ description: The point in time at which the connection duration limit came into effect.
+ "max-minutes":
+ type: integer
+ default: -1
+ description: |
+ The maximum amount of time (in minutes) that all of the tenant's devices together may
+ be connected to a protocol adapter during each accounting period.
+ A value of `-1` (the default) indicates that no limit is set.
+ "period":
+ $ref: '#/components/schemas/Period'
+
+ Period:
+ type: object
+ additionalProperties: false
+ required:
+ - mode
+ properties:
+ "mode":
+ type: string
+ description: |
+ The accounting period's' mode of recurrence. The following modes are defined:
+ * `monthly`: Accounting periods start at midnight (start of day) UTC on the 1st day of each month.
+ * `days`: Accounting periods start at the time of the initial accounting period every *N* days where
+ *N* is the value of the *no-of-days* property.
+
+ The initial accounting period always starts at the point in time that the plan was put in effect at.
+ Implementations MUST support the *monthly* and *days* modes and MAY support additional custom modes.
+ "no-of-days":
+ type: integer
+ minimum: 1
+ description: The accounting period length in days. This property is only used if *mode* is set to value
+ `days`. Otherwise, this property is ignored.
+
+# Devices schema
+
+ Device:
+ type: object
+ additionalProperties: false
+ properties:
+ "enabled":
+ type: boolean
+ default: true
+ "defaults":
+ $ref: '#/components/schemas/DefaultProperties'
+ "via":
+ type: array
+ items:
+ type: string
+ description: |
+ The device IDs of the gateways that are registered to act on behalf of this device.
+ Note that "via" and "memberOf" must not be set at the same time.
+ "viaGroups":
+ type: array
+ items:
+ type: string
+ description: |
+ The IDs of the gateway groups that are registered to act on behalf of this device.
+ Note that "viaGroups" and "memberOf" must not be set at the same time.
+ "memberOf":
+ type: array
+ items:
+ type: string
+ description: |
+ The IDs of the gateway groups that this device is a member of.
+ Note that neither "via" nor "viaGroups" must be set if "memberOf" is set.
+ "authorities":
+ type: array
+ items:
+ type: string
+ description: |
+ The authorities granted to a device. Applies to gateways only currently: the authority
+ `auto-provisioning-enabled` entitles a gateway device to perform auto-provisioning for its
+ edge devices.
+ "mapper":
+ type: string
+ description: |
+ The name of a service that can be used by protocol adapters to transform messages
+ uploaded by devices before sending them to downstream consumers.
+ The protocol adapter needs to map this name to the particular service to invoke.
+ NB: This is an experimental feature and thus this property is subject to change without
+ notice.
+ "ext":
+ $ref: '#/components/schemas/Extensions'
+ "status":
+ $ref: '#/components/schemas/Status'
+
+ DeviceWithId:
+ type: object
+ additionalProperties: false
+ allOf:
+ - type: object
+ properties:
+ "id":
+ description: The identifier of the device.
+ type: string
+ readOnly: true
+ - $ref: '#/components/schemas/Device'
+
+ Status:
+ type: object
+ additionalProperties: false
+ description: |
+ Additional meta data describing the entity.
+ properties:
+ "created":
+ type: string
+ format: date-time
+ readOnly: true
+ description: The point in time when the entity was originally created.
+ "updated":
+ type: string
+ format: date-time
+ readOnly: true
+ description: The point in time when the entity was last updated.
+ "last-user":
+ type: string
+ readOnly: true
+ description: The user who made the last edit on this entity.
+ "auto-provisioned":
+ type: boolean
+ default: false
+ readOnly: true
+ description: Indicates if the entity was created via auto-provisioning.
+ "auto-provisioning-notification-sent":
+ type: boolean
+ default: false
+ readOnly: true
+ description: Indicates if downstream consumers have been notified about the newly auto-provisioned
+ entity by means of a corresponding event.
+
+ SearchDevicesResult:
+ type: object
+ description: The result of a search request for devices.
+ additionalProperties: false
+ properties:
+ "total":
+ type: integer
+ minimum: 0
+ description: The total number of objects in the result set, regardless of the *pageSize* set in query.
+ "result":
+ type: array
+ items:
+ $ref: '#/components/schemas/DeviceWithId'
+
+# Credentials
+
+ CredentialsSet:
+ type: array
+ description: A set of credentials. The entries in this list must be
+ unique by the composite key of `auth-id` and `type`.
+ items:
+ $ref: '#/components/schemas/TypedCredentials'
+
+ TypedCredentials:
+ additionalProperties: false
+ oneOf:
+ - $ref: '#/components/schemas/PasswordCredentials'
+ - $ref: '#/components/schemas/PSKCredentials'
+ - $ref: '#/components/schemas/X509CertificateCredentials'
+ discriminator:
+ propertyName: type
+ mapping:
+ "hashed-password": '#/components/schemas/PasswordCredentials'
+ "psk": '#/components/schemas/PSKCredentials'
+ "x509-cert": '#/components/schemas/X509CertificateCredentials'
+
+ CommonCredentials:
+ type: object
+ additionalProperties: false
+ required:
+ - auth-id
+ - type
+ properties:
+ "type":
+ type: string
+ "auth-id":
+ type: string
+ "enabled":
+ type: boolean
+ default: true
+ "ext":
+ $ref: '#/components/schemas/Extensions'
+
+ PasswordCredentials:
+ additionalProperties: false
+ allOf:
+ - $ref: '#/components/schemas/CommonCredentials'
+ - type: object
+ required:
+ - secrets
+ additionalProperties: false
+ properties:
+ "type":
+ type: string
+ pattern: "hashed-password"
+ "auth-id":
+ type: string
+ description: |
+ The authentication identifier provided by the device as part of the *user name*.
+ Example: For user name `sensor1@DEFAULT_TENANT` the authentication identifier to be registered
+ is `sensor1`.
+ "secrets":
+ type: array
+ items:
+ $ref: '#/components/schemas/PasswordSecret'
+ minItems: 1
+
+ PSKCredentials:
+ additionalProperties: false
+ allOf:
+ - $ref: '#/components/schemas/CommonCredentials'
+ - type: object
+ required:
+ - secrets
+ additionalProperties: false
+ properties:
+ "type":
+ type: string
+ pattern: "psk"
+ "auth-id":
+ type: string
+ description: The *PSK identity* provided by the device in the TLS handshake.
+ "secrets":
+ type: array
+ items:
+ $ref: '#/components/schemas/PSKSecret'
+ minItems: 1
+
+ X509CertificateCredentials:
+ additionalProperties: false
+ allOf:
+ - $ref: '#/components/schemas/CommonCredentials'
+ - type: object
+ required:
+ - secrets
+ additionalProperties: false
+ properties:
+ "type":
+ type: string
+ pattern: "x509-cert"
+ "auth-id":
+ type: string
+ description: The *subject DN* of the public key contained in the device's X.509 certificate.
+ "secrets":
+ type: array
+ items:
+ $ref: '#/components/schemas/X509CertificateSecret'
+ minItems: 1
+
+ CommonSecret:
+ type: object
+ additionalProperties: false
+ properties:
+ "id":
+ type: string
+ description: The device registry can assign an identity to the secret.
+ This value can be used to update secrets based on their metadata.
+ "enabled":
+ type: boolean
+ default: true
+ description: Indicates if this secret can be used for authentication.
+ "not-before":
+ type: string
+ format: date-time
+ description: |
+ The point in time from which on this secret will be accepted for authentication.
+ "not-after":
+ type: string
+ format: date-time
+ description: |
+ The point in time after which this secret will no longer be accepted for authentication.
+ "comment":
+ type: string
+
+ X509CertificateSecret:
+ additionalProperties: false
+ allOf:
+ - $ref: '#/components/schemas/CommonSecret'
+
+ PasswordSecret:
+ additionalProperties: false
+ allOf:
+ - $ref: '#/components/schemas/CommonSecret'
+ - type: object
+ additionalProperties: false
+ properties:
+ "hash-function":
+ type: string
+ example: bcrypt
+ description: The name of the hash function used to create the password hash (defined in `pwd-hash` property).
+ If the password is defined using a `pwd-plain` property, this value will be ignored by the device registry.
+ This property should be empty when returning passwords from the device registry using only secret metadata.
+ In this case the id field must be set instead.
+ "pwd-hash":
+ type: string
+ format: byte
+ description: The Base64 encoding of the password hash created using the `hash-function` and (optional) `salt`.
+ If the password is defined using a `pwd-plain` property, this value will be ignored by the device registry.
+ This property should be empty when returning passwords from the device registry using only secret metadata.
+ In this case the id field must be set instead.
+ "salt":
+ type: string
+ format: byte
+ description: The Base64 encoding of the salt used in the password hash (defined in the `pwd-hash` property).
+ If the password is defined using a `pwd-plain` property, this value will be ignored by the device registry.
+ This property should be empty when returning passwords from the device registry using only secret metadata.
+ In this case the id field must be set instead.
+ "pwd-plain":
+ type: string
+ writeOnly: true
+ description: The clear text value of the password to be hashed by the device registry.
+ If this property is specified, the device registry will ignore user-provided hash properties (`hash-function`, `pwd-hash` and `salt`).
+ This property must never be included in a response from the device registry.
+ A device registry implementation must never write plain text passwords to a persistent store.
+
+ PSKSecret:
+ additionalProperties: false
+ allOf:
+ - $ref: '#/components/schemas/CommonSecret'
+ - type: object
+ additionalProperties: false
+ required:
+ - key
+ properties:
+ "key":
+ type: string
+ format: byte
+ description: The secret key shared between device and Hono.
+
+ FilterJson:
+ description: Filters to be applied to bulk queries.
+ additionalProperties: false
+ required:
+ - field
+ - value
+ properties:
+ "field":
+ type: string
+ description: |
+ A [Json Pointer](https://tools.ietf.org/html/rfc6901) identifying the field to use for filtering.
+ "op":
+ type: string
+ description: The operator to use when applying the filter.
+ default: eq
+ enum:
+ - eq
+ "value":
+ oneOf:
+ - type: boolean
+ description: The value to filter the boolean typed field with.
+ - type: integer
+ description: The value to filter the integer typed field with.
+ - type: number
+ description: The value to filter the number typed field with.
+ - type: string
+ description: |
+ The value to filter the string typed field with.
+ Wildcard characters are supported : `*` will match zero or any number of characters
+ and `?` will match exactly one character.
+
+ parameters:
+
+ resourceVersion:
+ name: If-Match
+ in: header
+ description: The expected resource version
+ required: false
+ schema:
+ type: string
+
+ tenantId:
+ name: tenantId
+ in: path
+ description: The ID of the tenant
+ required: true
+ schema:
+ type: string
+ example: DEFAULT_TENANT
+
+ deviceId:
+ name: deviceId
+ in: path
+ description: The ID of the device
+ required: true
+ schema:
+ type: string
+ example: 4711
+
+ pageSize:
+ name: pageSize
+ in: query
+ description: |
+ The maximum number of objects to include in a response.
+ required: false
+ schema:
+ type: integer
+ minimum: 0
+ maximum: 200
+ default: 30
+
+ pageOffset:
+ name: pageOffset
+ in: query
+ description: |
+ The offset into the result set from which to include objects in the response. This allows to retrieve the whole result set page by page.
+ required: false
+ schema:
+ type: integer
+ minimum: 0
+ default: 0
+
+ filterJson:
+ name: filterJson
+ in: query
+ description: |
+ A predicate that objects in the result set must match. If this parameter is specified multiple
+ times, objects in the result set must match all predicates.
+ The predicate is specified as a string representing a JSON object complying with the following schema
+ ```
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["field", "value"],
+ "properties": {
+ "field": {
+ "type": "string",
+ "description": "A Json Pointer (https://tools.ietf.org/html/rfc6901) identifying the field to use for filtering."
+ },
+ "op": {
+ "type": "string",
+ "description": "The operator to apply.",
+ "default": "eq",
+ "enum": ["eq"]
+ },
+ "value": {
+ "oneOf": [
+ {
+ "type": "boolean",
+ "description": "The value to filter the boolean typed field with."
+ },{
+ "type": "number",
+ "description": "The value to filter the number typed field with."
+ },{
+ "type": "string",
+ "description": "The value to filter the string typed field with.
+ Wildcard characters are supported : `*` will match zero or any number of characters
+ and `?` will match exactly one character."
+ }
+ ]
+ }
+ }
+ }
+ ```
+ required: false
+ schema:
+ type: string
+ examples:
+ boolean field:
+ value: "{\"field\": \"/enabled\",\"value\": true}"
+ number field:
+ value: "{\"field\": \"/ext/count\",\"value\": 15}"
+ string field:
+ value: "{\"field\": \"/ext/brand\",\"value\": \"eclipse*\"}"
+
+ sortJson:
+ name: sortJson
+ in: query
+ description: |
+ Specifies a property to sort the result set by. If this parameter is specified multiple
+ times, the sort options are applied in the order they are specified in the query string.
+ The sort option is specified as a string representing a JSON object complying with the following schema
+ ```
+ {
+ "type": "object",
+ "additionalProperties": false,
+ "required": ["field"],
+ "properties": {
+ "field": {
+ "type": "string",
+ "description": "A Json Pointer (https://tools.ietf.org/html/rfc6901) identifying the field to sort by."
+ },
+ "direction": {
+ "type": "string",
+ "description": "The sort direction.",
+ "default": "asc",
+ "enum": ["asc", "desc"]
+ }
+ }
+ }
+ ```
+ required: false
+ schema:
+ type: string
+ examples:
+ sort ascending:
+ value: "{\"field\":\"/ext/brand\"}"
+ sort descending:
+ value: "{\"field\":\"/status/created\",\"direction\":\"desc\"}"
+
+ responses:
+
+ Unauthorized:
+ description: Authentication credentials are required, but missing.
+ headers:
+ "WWW-Authenticate":
+ schema:
+ type: string
+
+ Created:
+ description: Object created.
+ headers:
+ Location:
+ description: URL to the resource
+ schema:
+ type: string
+ format: uri
+ ETag:
+ description: The new version of the resource
+ schema:
+ type: string
+ content:
+ application/json:
+ schema:
+ type: object
+ additionalProperties: false
+ required:
+ - id
+ properties:
+ id:
+ type: string
+ description: The ID of the created object
+
+ Updated:
+ description: Object updated.
+ headers:
+ ETag:
+ description: The new version of the resource
+ schema:
+ type: string
+
+ Deleted:
+ description: Object deleted.
+
+ NotFound:
+ description: |
+ Object not found. This may also be returned for some operations
+ if the user lacks authorization to read the subject of the operation.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ TenantNotFound:
+ description: |
+ The referenced tenant could not be found.
+
+ This may also be returned for some operations
+ if the user lacks authorization to read the tenant.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ DeviceNotFound:
+ description: |
+ The referenced device could not be found.
+
+ This may also be returned for some operations
+ if the user lacks authorization to read the device.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ NotAllowed:
+ description: |
+ Operation not allowed. If the user does not have read access
+ for this object, then `404` will be returned instead.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ MalformedRequest:
+ description: Malformed request
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ AlreadyExists:
+ description: |
+ Object already exists. If the user has no read access for
+ the existing object, then `403` should be returned instead.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ ResourceVersionMismatch:
+ description: |
+ Expected resource version does not match current.
+ This can only happen when the request header `If-Match`
+ was set.
+ content:
+ application/json:
+ schema:
+ $ref: '#/components/schemas/Error'
+
+ securitySchemes:
+
+ BearerAuth:
+ type: http
+ scheme: bearer
+
+ BasicAuth:
+ type: http
+ scheme: basic
+
+ examples:
+
+ TenantAllAdaptersExample:
+ summary: All adapters
+ description: |
+ An empty request body can be used to create a tenant
+ using default values. This means that the tenant will be
+ enabled and devices of the tenant may connect to all
+ protocol adapters.
+ value:
+
+ TenantMqttAdapterOnlyExample:
+ summary: MQTT adapter only
+ description: |
+ Creates a tenant with only the MQTT adapter enabled.
+ Devices of the tenant will thus not be able to connect
+ to any adapter other than the MQTT adapter.
+ value: |
+ {
+ "adapters": [{
+ "type": "hono-mqtt",
+ "enabled": true
+ }]
+ }
+
+ DeviceDefaultExample:
+ summary: Default properties
+ description: |
+ An empty request body can be used to create an enabled device
+ with no additional configuration.
+
+ DeviceExtExample:
+ summary: Extension properties
+ description: |
+ Creates a device with some (application specific) extension properties.
+ value: |
+ {
+ "ext": {
+ "ep": "IMEI4711"
+ }
+ }
+
+ CredentialsSetPasswordExample:
+ summary: Set pre-hashed password
+ description: |
+ The secret does not refer to an existing secret (no *id* property). Thus, the
+ existing secrets (if any) will be replaced with the hashed password secret.
+ value:
+ [{
+ "auth-id": "sensor1",
+ "type": "hashed-password",
+ "secrets": [{
+ "pwd-hash": "AQIDBAUGBwg=",
+ "salt": "Mq7wFw==",
+ "hash-function": "sha-512",
+ "not-after": "2027-12-24T19:00:00Z"
+ }]
+ }]
+
+ CredentialsChangePasswordExample:
+ summary: Change password
+ description: |
+ The secret refers to an existing hashed password which will be updated
+ with the included values. The plaintext password will be hashed using
+ the registry's default hash algorithm.
+ value:
+ [{
+ auth-id: sensor1,
+ type: hashed-password,
+ secrets: [{
+ "id": "349556ea-4902-47c7-beb0-1009ab693fb4",
+ "pwd-plain": "newpassword",
+ "not-after": "2027-12-24T19:00:00Z"
+ }]
+ }]
+
+ CredentialsMetaDataExample:
+ summary: Meta data only
+ description: |
+ The secrets do not contain the confidential information like password hash
+ or salt. Instead, the secrets contain an identifier which can be
+ used to refer to the secret in a subsequent update operation.
+ value:
+ [{
+ "enabled": true,
+ "auth-id": "sensor1",
+ "type": "hashed-password",
+ "secrets": [{
+ "id": "349556ea-4902-47c7-beb0-1009ab693fb4",
+ "not-after": "2027-12-24T19:00:00Z"
+ }]
+ }]
diff --git a/docs/1.5/api/management/index.html b/docs/1.5/api/management/index.html
new file mode 100644
index 0000000..dea2009
--- /dev/null
+++ b/docs/1.5/api/management/index.html
@@ -0,0 +1,2785 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Device Registry Management API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<script src='/hono/docs/js/swagger-ui-bundle-3.23.11.js'></script>
+<script src='/hono/docs/js/swagger-ui-standalone-preset-3.23.11.js'></script>
+<link rel="stylesheet" href='/hono/docs/css/swagger-ui-3.23.11.css'>
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Device Registry Management API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Device Registry Management API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/management//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/management/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/management/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/management/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/management/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/management/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/management/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/management/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/management/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/management/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/management/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Device Registry Management API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Device Registry Management API Specification</h1>
+
+
+
+
+
+<div id="swagger-ui"></div>
+
+<script>
+window.onload = function() {
+
+ const ui = SwaggerUIBundle({
+ url: "device-registry-v1.yaml",
+ dom_id: '#swagger-ui',
+ deepLinking: true,
+ presets: [
+ SwaggerUIBundle.presets.apis,
+ SwaggerUIStandalonePreset
+ ],
+ plugins: [
+ SwaggerUIBundle.plugins.DownloadUrl
+ ],
+ layout: "StandaloneLayout",
+ docExpansion: "none",
+ defaultModelRendering: "model",
+ defaultModelExpandDepth: 0,
+ defaultModelsExpandDepth: -1,
+ validatorUrl: null
+ })
+
+ window.ui = ui
+}
+</script>
+
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/metrics/index.html b/docs/1.5/api/metrics/index.html
new file mode 100644
index 0000000..f4f251a
--- /dev/null
+++ b/docs/1.5/api/metrics/index.html
@@ -0,0 +1,3084 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Metrics :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Metrics :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Metrics :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/metrics//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/metrics/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item active">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/metrics/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/metrics/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/metrics/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/metrics/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/metrics/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/metrics/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/metrics/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/metrics/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/Metrics.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Metrics
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#reported-metrics">Reported Metrics</a>
+<ul>
+<li><a href="#common-metrics">Common Metrics</a></li>
+<li><a href="#protocol-adapter-metrics">Protocol Adapter Metrics</a>
+<ul>
+<li><a href="#minimum-message-size">Minimum Message Size</a></li>
+</ul></li>
+<li><a href="#service-metrics">Service Metrics</a></li>
+</ul></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Metrics</h1>
+
+
+
+
+
+<p>Eclipse Hono™’s components report several metrics which may be used to gain some insight
+into the running system. For instance, the HTTP adapter reports the number of successfully
+processed telemetry messages. Some of these metrics are considered part of Hono’s external
+interface. This section describes the semantics and format of the metrics, how they can be retrieved
+and how to interpret actual values.</p>
+
+<h2 id="reported-metrics">Reported Metrics</h2>
+
+<p>Hono uses <a href="https://micrometer.io/">Micrometer</a> in combination with Spring Boot
+to internally collect metrics. Those metrics can be exported to different
+back ends. Please refer to <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/#configuring-a-metrics-back-end">Configuring Metrics</a>
+for details.</p>
+
+<p>The example deployment by default uses <a href="https://prometheus.io/">Prometheus</a> as the metrics back end.</p>
+
+<p>When deploying to Kubernetes/OpenShift, the metrics reported by Hono may contain
+environment specific tags (like the <em>pod</em> name) which are added by the Prometheus
+scraper. However, those tags are not part of the Hono metrics definition.</p>
+
+<p>Hono applications may report other metrics in addition to the ones defined here.
+In particular, all components report metrics regarding the JVM’s internal state, e.g.
+memory consumption and garbage collection status. Those metrics are not considered
+part of Hono’s <em>official</em> metrics definition. However, all those metrics
+will still contain tags as described below.</p>
+
+<h3 id="common-metrics">Common Metrics</h3>
+
+<p>Tags for common metrics are:</p>
+
+<table>
+<thead>
+<tr>
+<th>Tag</th>
+<th>Value</th>
+<th>Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td><em>host</em></td>
+<td><em>string</em></td>
+<td>The name of the host that the component reporting the metric is running on</td>
+</tr>
+
+<tr>
+<td><em>component-type</em></td>
+<td><code>adapter</code>, <code>service</code></td>
+<td>The type of component reporting the metric</td>
+</tr>
+
+<tr>
+<td><em>component-name</em></td>
+<td><em>string</em></td>
+<td>The name of the component reporting the metric.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The names of Hono’s standard components are as follows:</p>
+
+<table>
+<thead>
+<tr>
+<th>Component</th>
+<th><em>component-name</em></th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td>Auth Server</td>
+<td><code>hono-auth</code></td>
+</tr>
+
+<tr>
+<td>Device Registry</td>
+<td><code>hono-registry</code></td>
+</tr>
+
+<tr>
+<td>AMQP adapter</td>
+<td><code>hono-amqp</code></td>
+</tr>
+
+<tr>
+<td>CoAP adapter</td>
+<td><code>hono-coap</code></td>
+</tr>
+
+<tr>
+<td>HTTP adapter</td>
+<td><code>hono-http</code></td>
+</tr>
+
+<tr>
+<td>Kura adapter</td>
+<td><code>hono-kura-mqtt</code></td>
+</tr>
+
+<tr>
+<td>MQTT adapter</td>
+<td><code>hono-mqtt</code></td>
+</tr>
+
+<tr>
+<td>Lora adapter</td>
+<td><code>hono-lora</code></td>
+</tr>
+
+<tr>
+<td>Sigfox adapter</td>
+<td><code>hono-sigfox</code></td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="protocol-adapter-metrics">Protocol Adapter Metrics</h3>
+
+<p>Additional tags for protocol adapters are:</p>
+
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Value</th>
+<th>Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td><em>direction</em></td>
+<td><code>one-way</code>, <code>request</code>, <code>response</code></td>
+<td>The direction in which a Command & Control message is being sent:<br><code>one-way</code> indicates a command sent to a device for which the sending application doesn’t expect to receive a response.<br><code>request</code> indicates a command request message sent to a device.<br><code>response</code> indicates a command response received from a device.</td>
+</tr>
+
+<tr>
+<td><em>qos</em></td>
+<td><code>0</code>, <code>1</code>, <code>unknown</code></td>
+<td>The quality of service used for a telemetry or event message.<br><code>0</code> indicates <em>at most once</em>,<br><code>1</code> indicates <em>at least once</em> and<br> <code>none</code> indicates unknown delivery semantics.</td>
+</tr>
+
+<tr>
+<td><em>status</em></td>
+<td><code>forwarded</code>, <code>unprocessable</code>, <code>undeliverable</code></td>
+<td>The processing status of a message.<br><code>forwarded</code> indicates that the message has been forwarded to a downstream consumer<br><code>unprocessable</code> indicates that the message has not been processed not forwarded, e.g. because the message was malformed<br><code>undeliverable</code> indicates that the message could not be forwarded, e.g. because there is no downstream consumer or due to an infrastructure problem</td>
+</tr>
+
+<tr>
+<td><em>tenant</em></td>
+<td><em>string</em></td>
+<td>The identifier of the tenant that the metric is being reported for</td>
+</tr>
+
+<tr>
+<td><em>ttd</em></td>
+<td><code>command</code>, <code>expired</code>, <code>none</code></td>
+<td>A status indicating the outcome of processing a TTD value contained in a message received from a device.<br><code>command</code> indicates that a command for the device has been included in the response to the device’s request for uploading the message.<br><code>expired</code> indicates that a response without a command has been sent to the device.<br><code>none</code> indicates that either no TTD value has been specified by the device or that the protocol adapter does not support it.</td>
+</tr>
+
+<tr>
+<td><em>type</em></td>
+<td><code>telemetry</code>, <code>event</code></td>
+<td>The type of (downstream) message that the metric is being reported for.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Additional tags for <em>hono.connections.attempts</em>:</p>
+
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Value</th>
+<th>Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td><em>outcome</em></td>
+<td><code>adapter-disabled</code>, <code>connection-duration-exceeded</code>,<br/><code>data-volume-exceeded</code>, <code>registration-assertion-failure</code>,<br/><code>succeeded</code>, <code>tenant-connections-exceeded</code>,<br/><code>unauthorized</code>, <code>unavailable</code>, <code>unknown</code></td>
+<td>The outcome of a device’s connection attempt.<br/><code>adapter-connections-exceeded</code> indicates that the maximum number of connections that the adapter instance can handle are exceeded<br/><code>adapter-disabled</code> indicates that the protocol adapter is not enabled for the device’s tenant<br/><code>connection-duration-exceeded</code> indicates that the overall amount of time that a tenant’s devices may be connected to an adapter has exceeded<br/><code>data-volume-exceeded</code> indicates that the overall amount of data that a tenant’s device may transfer per time period has exceeded<br/><code>registration-assertion-failure</code> indicates that the device is either unknown or disabled<br/><code>succeeded</code> indicates a successfully established connection<br/><code>tenant-connections-exceeded</code> indicates that the maximum number of devices that may be connected simultaneously for a tenant has been exceeded<br/><code>unauthorized</code> indicates that the device failed to authenticate<br/><code>unavailable</code> indicates that some of Hono’s (required) services are not available<br/><code>unknown</code> indicates an unknown reason.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Additional tags for <em>hono.downstream.sent</em>:</p>
+
+<table>
+<thead>
+<tr>
+<th>Name</th>
+<th>Value</th>
+<th>Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td><em>outcome</em></td>
+<td><code>received</code>, <code>accepted</code>, <code>rejected</code>, <code>released</code>, <code>modified</code>, <code>declared</code>, <code>transactionalState</code>, and <code>aborted</code></td>
+<td>Any of the AMQP 1.0 disposition states, as well as <code>aborted</code>, in the case the connection/link was closed before the disposition could be read.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Metrics provided by the protocol adapters are:</p>
+
+<table>
+<thead>
+<tr>
+<th>Metric</th>
+<th>Type</th>
+<th>Tags</th>
+<th>Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td><em>hono.commands.received</em></td>
+<td>Timer</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em>, <em>status</em>, <em>direction</em></td>
+<td>The time it took to process a message conveying a command or a response to a command.</td>
+</tr>
+
+<tr>
+<td><em>hono.commands.payload</em></td>
+<td>DistributionSummary</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em>, <em>status</em>, <em>direction</em></td>
+<td>The number of bytes conveyed in the payload of a command message.</td>
+</tr>
+
+<tr>
+<td><em>hono.connections.authenticated</em></td>
+<td>Gauge</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em></td>
+<td>Current number of connected, authenticated devices. <br/> <strong>NB</strong> This metric is only supported by protocol adapters that maintain <em>connection state</em> with authenticated devices. In particular, the HTTP adapter does not support this metric.</td>
+</tr>
+
+<tr>
+<td><em>hono.connections.unauthenticated</em></td>
+<td>Gauge</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em></td>
+<td>Current number of connected, unauthenticated devices. <br/> <strong>NB</strong> This metric is only supported by protocol adapters that maintain <em>connection state</em> with authenticated devices. In particular, the HTTP adapter does not support this metric.</td>
+</tr>
+
+<tr>
+<td><em>hono.connections.authenticated.duration</em></td>
+<td>Timer</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em></td>
+<td>The overall amount of time that authenticated devices have been connected to protocol adapters. <br/> <strong>NB</strong> This metric is only supported by protocol adapters that maintain <em>connection state</em> with authenticated devices. In particular, the HTTP adapter does not support this metric.</td>
+</tr>
+
+<tr>
+<td><em>hono.connections.attempts</em></td>
+<td>Counter</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>outcome</em></td>
+<td>The number of attempts made by devices to connect to a protocol adapter. The <em>outcome</em> tag’s value determines if the attempt was successful or not. In the latter case the outcome also indicates the reason for the failure to connect.<br/><strong>NB</strong> This metric is only supported by protocol adapters that maintain <em>connection state</em> with authenticated devices. In particular, the HTTP adapter does not support this metric.</td>
+</tr>
+
+<tr>
+<td><em>hono.downstream.full</em></td>
+<td>Counter</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em></td>
+<td>The number of times a message should be sent, but could not because the sender was out of credit.</td>
+</tr>
+
+<tr>
+<td><em>hono.downstream.sent</em></td>
+<td>Timer</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em>, <em>outcome</em></td>
+<td>The time it took to send a message and receive the remote peers disposition.</td>
+</tr>
+
+<tr>
+<td><em>hono.downstream.timeout</em></td>
+<td>Counter</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em></td>
+<td>The number of times a message timed out, meaning that no disposition was received in the appropriate amount of time.</td>
+</tr>
+
+<tr>
+<td><em>hono.messages.received</em></td>
+<td>Timer</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em>, <em>status</em>, <em>qos</em>, <em>ttd</em></td>
+<td>The time it took to process a message conveying telemetry data or an event.</td>
+</tr>
+
+<tr>
+<td><em>hono.messages.payload</em></td>
+<td>DistributionSummary</td>
+<td><em>host</em>, <em>component-type</em>, <em>component-name</em>, <em>tenant</em>, <em>type</em>, <em>status</em></td>
+<td>The number of bytes conveyed in the payload of a telemetry or event message.</td>
+</tr>
+</tbody>
+</table>
+
+<h4 id="minimum-message-size">Minimum Message Size</h4>
+
+<p>If a minimum message size is configured for a <a href="/hono/docs/1.5/api/tenant/#tenant-information-format">tenant</a>,
+then the payload size of the telemetry, event and command messages are calculated in accordance with the configured
+value and then reported to the metrics by the AMQP, HTTP and MQTT protocol adapters. If minimum message size is not
+configured for a tenant then the actual message payload size is reported.</p>
+
+<p>Assume that the minimum message size for a tenant is configured as 4096 bytes (4KB). The payload size of
+an incoming message with size 1KB is calculated as 4KB by the protocol adapters and reported to the metrics system.
+For an incoming message of size 10KB, it is reported as 12KB.</p>
+
+<h3 id="service-metrics">Service Metrics</h3>
+
+<p>Hono’s service components do not report any metrics at the moment.</p>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/telemetry/consume.svg b/docs/1.5/api/telemetry/consume.svg
new file mode 100644
index 0000000..d543c4a
--- /dev/null
+++ b/docs/1.5/api/telemetry/consume.svg
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="187.2px" preserveAspectRatio="none" style="width:601px;height:187px;" version="1.1" viewBox="0 0 601 187" width="601.2px" zoomAndPan="magnify"><defs><filter height="300%" id="fk0kzz7ikwsfa" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fk0kzz7ikwsfa)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="490.2" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="144" x2="144" y1="45.9563" y2="139.875"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="495.6" x2="495.6" y1="45.9563" y2="139.875"/><rect fill="#FEFECE" filter="url(#fk0kzz7ikwsfa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="18" y="27.5941">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#fk0kzz7ikwsfa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="9.6" y="138.675"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="18" y="162.6691">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#fk0kzz7ikwsfa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="399.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="408" y="27.5941">Business Application</text><rect fill="#FEFECE" filter="url(#fk0kzz7ikwsfa)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="188.4" x="399.6" y="138.675"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="171.6" x="408" y="162.6691">Business Application</text><rect fill="#FFFFFF" filter="url(#fk0kzz7ikwsfa)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="490.2" y="83.3156"/><polygon fill="#A80036" points="475.8,78.5156,487.8,83.3156,475.8,88.1156,480.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="144.6" x2="483" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="322.8" x="153" y="77.2365">1.0 transfer(device_id: "4711", body: data)</text><polygon fill="#A80036" points="157.8,113.475,145.8,118.275,157.8,123.075,153,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="150.6" x2="495" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="254.4" x="165" y="112.1959">1.1 disposition(state: "accepted")</text><!--
+@startuml
+scale 1.2
+
+participant "AMQP 1.0 Messaging Network"
+participant "Business Application"
+
+"AMQP 1.0 Messaging Network" -> "Business Application"+: 1.0 transfer(device_id: "4711", body: data)
+"Business Application" -> "AMQP 1.0 Messaging Network"-: 1.1 disposition(state: "accepted")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/telemetry/forward_qos0.svg b/docs/1.5/api/telemetry/forward_qos0.svg
new file mode 100644
index 0000000..4ac292d
--- /dev/null
+++ b/docs/1.5/api/telemetry/forward_qos0.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="258px" preserveAspectRatio="none" style="width:889px;height:258px;" version="1.1" viewBox="0 0 889 258" width="889.2px" zoomAndPan="magnify"><defs><filter height="300%" id="fu25wuvvfg960" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fu25wuvvfg960)" height="69.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="387.6" x2="387.6" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="745.2" x2="745.2" y1="45.9563" y2="209.7938"/><rect fill="#FEFECE" filter="url(#fu25wuvvfg960)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#fu25wuvvfg960)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="232.5879">Device</text><rect fill="#FEFECE" filter="url(#fu25wuvvfg960)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="320.4" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="328.8" y="27.5941">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#fu25wuvvfg960)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="320.4" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="328.8" y="232.5879">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#fu25wuvvfg960)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="610.8" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="619.2" y="27.5941">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#fu25wuvvfg960)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="610.8" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="619.2" y="232.5879">AMQP 1.0 Messaging Network</text><rect fill="#FFFFFF" filter="url(#fu25wuvvfg960)" height="69.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="83.3156"/><polygon fill="#A80036" points="367.8,78.5156,379.8,83.3156,367.8,88.1156,372.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="375" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="310.8" x="57" y="77.2365">1.0 PUT("telemetry/TENANT/4711", data)</text><polygon fill="#A80036" points="731.4,113.475,743.4,118.275,731.4,123.075,736.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="394.2" x2="738.6" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="322.8" x="402.6" y="112.1959">1.1 transfer(device_id: "4711", body: data)</text><polygon fill="#A80036" points="61.8,148.4344,49.8,153.2344,61.8,158.0344,57,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="387" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="146.4" x="69" y="147.1553">1.2 202 (Accepted)</text><polygon fill="#A80036" points="401.4,183.3937,389.4,188.1938,401.4,192.9938,396.6,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="394.2" x2="744.6" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="254.4" x="408.6" y="182.1146">2.0 disposition(state: "accepted")</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "HTTP Adapter"
+participant "AMQP 1.0 Messaging Network"
+
+Device -> "HTTP Adapter"+: 1.0 PUT("telemetry/TENANT/4711", data)
+"HTTP Adapter" -> "AMQP 1.0 Messaging Network": 1.1 transfer(device_id: "4711", body: data)
+"HTTP Adapter" -> Device-: 1.2 202 (Accepted)
+"AMQP 1.0 Messaging Network" -> "HTTP Adapter": 2.0 disposition(state: "accepted")
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/telemetry/forward_qos1.svg b/docs/1.5/api/telemetry/forward_qos1.svg
new file mode 100644
index 0000000..3babcfc
--- /dev/null
+++ b/docs/1.5/api/telemetry/forward_qos1.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="258px" preserveAspectRatio="none" style="width:1008px;height:258px;" version="1.1" viewBox="0 0 1008 258" width="1008px" zoomAndPan="magnify"><defs><filter height="300%" id="fb5qyniwb5b5d" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#fb5qyniwb5b5d)" height="104.8781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="501" y="83.3156"/><rect fill="#FFFFFF" filter="url(#fb5qyniwb5b5d)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="858.6" y="118.275"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="48" x2="48" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="506.4" x2="506.4" y1="45.9563" y2="209.7938"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="864" x2="864" y1="45.9563" y2="209.7938"/><rect fill="#FEFECE" filter="url(#fb5qyniwb5b5d)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="27.5941">Device</text><rect fill="#FEFECE" filter="url(#fb5qyniwb5b5d)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="73.2" x="9.6" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="56.4" x="18" y="232.5879">Device</text><rect fill="#FEFECE" filter="url(#fb5qyniwb5b5d)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="439.2" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="447.6" y="27.5941">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#fb5qyniwb5b5d)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="130.8" x="439.2" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="114" x="447.6" y="232.5879">HTTP Adapter</text><rect fill="#FEFECE" filter="url(#fb5qyniwb5b5d)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="729.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="738" y="27.5941">AMQP 1.0 Messaging Network</text><rect fill="#FEFECE" filter="url(#fb5qyniwb5b5d)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="265.2" x="729.6" y="208.5938"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="248.4" x="738" y="232.5879">AMQP 1.0 Messaging Network</text><rect fill="#FFFFFF" filter="url(#fb5qyniwb5b5d)" height="104.8781" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="501" y="83.3156"/><rect fill="#FFFFFF" filter="url(#fb5qyniwb5b5d)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="858.6" y="118.275"/><polygon fill="#A80036" points="486.6,78.5156,498.6,83.3156,486.6,88.1156,491.4,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="48.6" x2="493.8" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="429.6" x="57" y="77.2365">1.0 PUT("telemetry/TENANT/4711", "QoS-Level: 1", data)</text><polygon fill="#A80036" points="844.2,113.475,856.2,118.275,844.2,123.075,849,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="513" x2="851.4" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="322.8" x="521.4" y="112.1959">1.1 transfer(device_id: "4711", body: data)</text><polygon fill="#A80036" points="526.2,148.4344,514.2,153.2344,526.2,158.0344,521.4,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="519" x2="863.4" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="254.4" x="533.4" y="147.1553">1.2 disposition(state: "accepted")</text><polygon fill="#A80036" points="61.8,183.3937,49.8,188.1938,61.8,192.9938,57,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="54.6" x2="505.8" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="146.4" x="69" y="182.1146">1.3 202 (Accepted)</text><!--
+@startuml
+scale 1.2
+
+participant Device
+participant "HTTP Adapter"
+participant "AMQP 1.0 Messaging Network"
+
+Device -> "HTTP Adapter"+: 1.0 PUT("telemetry/TENANT/4711", "QoS-Level: 1", data)
+"HTTP Adapter" -> "AMQP 1.0 Messaging Network"+: 1.1 transfer(device_id: "4711", body: data)
+"AMQP 1.0 Messaging Network" -> "HTTP Adapter"-: 1.2 disposition(state: "accepted")
+"HTTP Adapter" -> Device-: 1.3 202 (Accepted)
+@enduml
+
+PlantUML version 1.2019.07(Mon Jun 24 19:59:20 UTC 2019)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/telemetry/index.html b/docs/1.5/api/telemetry/index.html
new file mode 100644
index 0000000..88363b7
--- /dev/null
+++ b/docs/1.5/api/telemetry/index.html
@@ -0,0 +1,2967 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Telemetry API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Telemetry API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Telemetry API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/telemetry//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/telemetry/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/telemetry/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/telemetry/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/telemetry/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/telemetry/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/telemetry/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/telemetry/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/telemetry/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/telemetry/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/telemetry/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Telemetry API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#southbound-operations">Southbound Operations</a>
+<ul>
+<li><a href="#forward-telemetry-data">Forward Telemetry Data</a></li>
+</ul></li>
+<li><a href="#northbound-operations">Northbound Operations</a>
+<ul>
+<li><a href="#receive-telemetry-data">Receive Telemetry Data</a></li>
+</ul></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Telemetry API Specification</h1>
+
+
+
+
+
+<p>The <em>Telemetry</em> API is used by <em>Protocol Adapters</em> to send telemetry data downstream.
+<em>Business Applications</em> and other consumers use the API to receive data published by devices belonging to a particular tenant.</p>
+
+<p>The Telemetry API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to Hono using AMQP 1.0 in order to invoke operations of the API as described in the following sections. Throughout the remainder of this page we will simply use <em>AMQP</em> when referring to AMQP 1.0.</p>
+
+<h2 id="southbound-operations">Southbound Operations</h2>
+
+<p>The following operations can be used by <em>Protocol Adapters</em> to forward telemetry data received from devices to downstream consumers like <em>Business Applications</em>.</p>
+
+<h3 id="forward-telemetry-data">Forward Telemetry Data</h3>
+
+<p><strong>Preconditions</strong></p>
+
+<ol>
+<li>Adapter has established an AMQP connection with the AMQP Messaging Network.</li>
+<li>Adapter has established an AMQP link in role <em>sender</em> with the AMQP Messaging Network using target address <code>telemetry/${tenant_id}</code> where <code>${tenant_id}</code> is the ID of the tenant that the client wants to upload telemetry data for.</li>
+<li>The device for which the adapter wants to send telemetry data has been registered (see <a href="/hono/docs/1.5/api/device-registration/">Device Registration API</a>).</li>
+</ol>
+
+<p>The adapter indicates its preferred message delivery mode by means of the <em>snd-settle-mode</em> and <em>rcv-settle-mode</em> fields of its <em>attach</em> frame during link establishment.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">snd-settle-mode</th>
+<th align="left">rcv-settle-mode</th>
+<th align="left">Delivery semantics</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><code>unsettled</code>, <code>mixed</code></td>
+<td align="left"><code>first</code></td>
+<td align="left">Using <code>unsettled</code> for the <em>snd-settle-mode</em> allows for adapters to implement both <em>AT LEAST ONCE</em> or <em>AT MOST ONCE</em> delivery semantics, depending on whether the adapter waits for and considers the disposition frames it receives from the AMQP Messaging Network or not. This is the recommended mode for forwarding telemetry data.</td>
+</tr>
+
+<tr>
+<td align="left"><code>settled</code></td>
+<td align="left"><code>first</code></td>
+<td align="left">Using <code>settled</code> for the <em>snd-settle-mode</em> allows for adapters to implement <em>AT MOST ONCE</em> delivery semantics only. This is the fastest mode of delivery but has the drawback of less reliable end-to-end flow control and potential loss of messages without notice.</td>
+</tr>
+</tbody>
+</table>
+
+<p>All other combinations are not supported by Hono and may result in the termination of the link or connection (depending on the configuration of the AMQP Messaging Network).</p>
+
+<p><strong>Message Flow</strong></p>
+
+<p>As indicated above, it is up to the discretion of the protocol adapter whether it wants to use <em>AT LEAST ONCE</em> or <em>AT MOST ONCE</em> delivery semantics.</p>
+
+<p>Hono’s HTTP adapter allows devices to indicate, which delivery semantics they want to use when uploading telemetry data.
+The HTTP adapter always forwards messages unsettled and either ignores the outcome of the message transfer (<em>AT MOST ONCE</em>) or waits for the downstream peer to accept the message (<em>AT LEAST ONCE</em>) before acknowledging the reception of the message to the device.</p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in the <em>HTTP Adapter</em> forwarding an <em>unsettled</em> telemetry data message to the downstream AMQP Messaging Network implementing <em>AT MOST ONCE</em> delivery semantics.</p>
+
+<figure>
+ <img src="forward_qos0.svg"/> <figcaption>
+ <h4>Forward telemetry data flow (AT MOST ONCE)</h4>
+ </figcaption>
+</figure>
+
+
+<ol>
+<li><em>Device</em> <code>4711</code> PUTs telemetry data to the <em>HTTP Adapter</em>
+
+<ol>
+<li><em>HTTP Adapter</em> transfers telemetry data to <em>AMQP 1.0 Messaging Network</em>.</li>
+<li><em>HTTP Adapter</em> acknowledges the reception of the data to the <em>Device</em>.</li>
+</ol></li>
+<li><em>AMQP 1.0 Messaging Network</em> acknowledges reception of the message which is ignored by the <em>HTTP Adapter</em>.</li>
+</ol>
+
+<div class="alert alert-notice">
+ <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
+ <div>In the example above the HTTP adapter does not wait for the outcome of the transfer of the message to the AMQP Messaging Network before sending back the HTTP response to the device.
+If the messaging network had sent a disposition frame with the <em>rejected</em> instead of the <em>accepted</em> outcome, the HTTP adapter would still have signaled a 202 status code back to the device. In this case the data would have been lost without the device noticing.</div>
+</div>
+
+<p>The following sequence diagram illustrates the flow of messages involved in the <em>HTTP Adapter</em> forwarding an <em>unsettled</em> telemetry data message to the downstream AMQP Messaging Network implementing <em>AT LEAST ONCE</em> delivery semantics.</p>
+
+<figure>
+ <img src="forward_qos1.svg"/> <figcaption>
+ <h4>Forward telemetry data flow (AT LEAST ONCE)</h4>
+ </figcaption>
+</figure>
+
+
+<ol>
+<li><em>Device</em> <code>4711</code> PUTs telemetry data to the <em>HTTP Adapter</em>, indicating <em>QoS Level</em> 1.
+
+<ol>
+<li><em>HTTP Adapter</em> transfers telemetry data to <em>AMQP 1.0 Messaging Network</em>.</li>
+<li><em>AMQP 1.0 Messaging Network</em> acknowledges reception of the message.</li>
+<li><em>HTTP Adapter</em> acknowledges the reception of the data to the <em>Device</em>.</li>
+</ol></li>
+</ol>
+
+<p>When the AMQP Messaging Network fails to settle the transfer of a telemetry message or settles the transfer with any other outcome than <code>accepted</code>, the protocol adapter MUST NOT try to re-send such rejected messages but SHOULD indicate the failed transfer to the device if the transport protocol provides means to do so.</p>
+
+<p><strong>Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a <em>Forward Telemetry Data</em> message.</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>symbol</em></td>
+<td align="left">A content type indicating the type and characteristics of the data contained in the payload, e.g. <code>text/plain; charset="utf-8"</code> for a text message or <code>application/json</code> etc. The value may be set to <code>application/octet-stream</code> if the message payload is to be considered <em>opaque</em> binary data.</td>
+</tr>
+
+<tr>
+<td align="left"><em>creation-time</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>timestamp</em></td>
+<td align="left">The instant in time when the message has been created (see the <a href="http://docs.oasis-open.org/amqp/core/v1.0/amqp-core-messaging-v1.0.html">AMQP 1.0 specification</a> for details). This property is mandatory if <em>ttd</em> is set, otherwise it is optional.</td>
+</tr>
+
+<tr>
+<td align="left"><em>device_id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the device that the data in the payload is originating from.</td>
+</tr>
+
+<tr>
+<td align="left"><em>ttd</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">The <em>time ‘til disconnect</em> indicates the number of seconds that the device will remain connected to the protocol adapter. The value of this property must be interpreted relative to the message’s <em>creation-time</em>. A value of <code>-1</code> is used to indicate that the device will remain connected until further notice, i.e. until another message indicates a <em>ttd</em> value of <code>0</code>. In absence of this property, the connection status of the device is to be considered indeterminate. <em>Backend Applications</em> might use this information to determine a time window during which the device will be able to receive a command.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the message MUST consist of a single AMQP <em>Data</em> section containing the telemetry data. The format and encoding of the data MUST be indicated by the <em>content-type</em> and (optional) <em>content-encoding</em> properties of the message.</p>
+
+<p>Any additional properties set by the client in either the <em>properties</em> or <em>application-properties</em> sections are preserved by Hono, i.e. these properties will also be contained in the message delivered to consumers.</p>
+
+<h2 id="northbound-operations">Northbound Operations</h2>
+
+<h3 id="receive-telemetry-data">Receive Telemetry Data</h3>
+
+<p>Hono delivers messages containing telemetry data reported by a particular device in the same order that they have been received in (using the <a href="#forward-telemetry-data">Forward Telemetry Data</a> operation). Hono MAY drop telemetry messages that it cannot deliver to any consumers. Reasons for this include that there are no consumers connected to Hono or the existing consumers are not able to process the messages from Hono fast enough.</p>
+
+<p>Hono supports multiple non-competing <em>Business Application</em> consumers of telemetry data for a given tenant. Hono allows each <em>Business Application</em> to have multiple competing consumers for telemetry data for a given tenant to share the load of processing the messages.</p>
+
+<p><strong>Preconditions</strong></p>
+
+<ol>
+<li>Client has established an AMQP connection with Hono.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> with Hono using source address <code>telemetry/${tenant_id}</code> where <code>${tenant_id}</code> represents the ID of the tenant the client wants to retrieve telemetry data for.</li>
+</ol>
+
+<p>Hono supports both <em>AT MOST ONCE</em> as well as <em>AT LEAST ONCE</em> delivery of telemetry messages. However, clients SHOULD use <em>AT LEAST ONCE</em> delivery in order to support end-to-end flow control and therefore SHOULD set the <em>snd-settle-mode</em> field to <code>unsettled</code> and the <em>rcv-settle-mode</em> field to <code>first</code> in their <em>attach</em> frame during link establishment.</p>
+
+<p>A client MAY indicate to Hono during link establishment that it wants to distribute the telemetry messages received for a given tenant among multiple consumers by including a link property <code>subscription-name</code> whose value is shared by all other consumers of the tenant. Hono ensures that messages from a given device are delivered to the same consumer. Note that this also means that telemetry messages MAY not be evenly distributed among consumers, e.g. when only a single device sends data. <strong>NB</strong> This feature is not supported yet.</p>
+
+<p>In addition a client MAY include a boolean link property <code>ordering-required</code> with value <code>false</code> during link establishment in order to indicate to Hono that it does not require messages being delivered strictly in order per device but instead allows for messages being distributed evenly among the consumers. <strong>NB</strong> This feature is not supported yet.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in a <em>Business Application</em> receiving a telemetry data message from Hono. The delivery mode used is <em>AT LEAST ONCE</em>.</p>
+
+<figure>
+ <img src="consume.svg"/> <figcaption>
+ <h4>Receive Telemetry Data</h4>
+ </figcaption>
+</figure>
+
+
+<ol>
+<li><em>AMQP 1.0 Messaging Network</em> delivers telemetry message to <em>Business Application</em>.
+
+<ol>
+<li><em>Business Application</em> acknowledges reception of message.</li>
+</ol></li>
+</ol>
+
+<div class="alert alert-notice">
+ <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
+ <div>The <em>Business Application</em> can only consume telemetry messages that have been uploaded to Hono <em>after</em> the <em>Business Application</em> has established the link with the <em>AMQP 1.0 Messaging Network</em>. This is because telemetry messages are not <em>durable</em>, i.e. they are not persisted in Hono in order to be forwarded at a later time.</div>
+</div>
+
+<p><strong>Message Format</strong></p>
+
+<p>The format of the messages containing the telemetry data is the same as for the <a href="#forward-telemetry-data">Forward Telemetry Data operation</a>.</p>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/tenant/get_tenant_success.svg b/docs/1.5/api/tenant/get_tenant_success.svg
new file mode 100644
index 0000000..e6a10d4
--- /dev/null
+++ b/docs/1.5/api/tenant/get_tenant_success.svg
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="234px" preserveAspectRatio="none" style="width:717px;height:234px;" version="1.1" viewBox="0 0 717 234" width="717.6px" zoomAndPan="magnify"><defs><filter height="300%" id="f6egohjifnt9s" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f6egohjifnt9s)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="630.6" y="83.3156"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="186.8344"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="636" x2="636" y1="45.9563" y2="186.8344"/><rect fill="#FEFECE" filter="url(#f6egohjifnt9s)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f6egohjifnt9s)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="209.6285">Client</text><rect fill="#FEFECE" filter="url(#f6egohjifnt9s)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="140.4" x="564" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="123.6" x="572.4" y="27.5941">Tenant Service</text><rect fill="#FEFECE" filter="url(#f6egohjifnt9s)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="140.4" x="564" y="185.6344"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="123.6" x="572.4" y="209.6285">Tenant Service</text><rect fill="#FFFFFF" filter="url(#f6egohjifnt9s)" height="81.9188" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="630.6" y="83.3156"/><polygon fill="#A80036" points="616.2,78.5156,628.2,83.3156,616.2,88.1156,621,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="623.4" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="339.6" x="52.2" y="77.2365">transfer(subject: "get", body: search criteria)</text><path d="M566.4,98.9156 L566.4,128.9156 L702,128.9156 L702,110.9156 L690,98.9156 L566.4,98.9156 " fill="#FBFB77" filter="url(#f6egohjifnt9s)" style="stroke: #A80036; stroke-width: 1.2;"/><path d="M690,98.9156 L690,110.9156 L702,110.9156 L690,98.9156 " fill="#FBFB77" style="stroke: #A80036; stroke-width: 1.2;"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="110.4" x="573.6" y="119.3959">look up tenant</text><polygon fill="#A80036" points="57,160.4344,45,165.2344,57,170.0344,52.2,165.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="635.4" y1="165.2344" y2="165.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="558" x="64.2" y="159.1553">transfer(status: "200", content-type: "application/json", body: tenant info)</text><!--
+@startuml
+scale 1.2
+
+Client -> "Tenant Service"++: transfer(subject: "get", body: search criteria)
+
+note over "Tenant Service"
+look up tenant
+end note
+
+"Tenant Service" -> Client- -: transfer(status: "200", content-type: "application/json", body: tenant info)
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file
diff --git a/docs/1.5/api/tenant/index.html b/docs/1.5/api/tenant/index.html
new file mode 100644
index 0000000..2ffaa23
--- /dev/null
+++ b/docs/1.5/api/tenant/index.html
@@ -0,0 +1,3493 @@
+<!DOCTYPE html>
+<html lang="1.5" class="js csstransforms3d">
+ <head>
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta name="generator" content="Hugo 0.58.3" />
+ <meta name="description" content="A set of micro-services for connecting millions of devices.">
+<meta name="author" content="The Eclipse Hono Project">
+
+ <link rel="apple-touch-icon" sizes="180x180" href="/hono/docs/favicon/apple-touch-icon.png">
+<link rel="icon" type="image/png" sizes="48x48" href="/hono/docs/favicon/favicon-48x48.png">
+<link rel="icon" type="image/png" sizes="32x32" href="/hono/docs/favicon/favicon-32x32.png">
+<link rel="icon" type="image/png" sizes="16x16" href="/hono/docs/favicon/favicon-16x16.png">
+<link rel="manifest" href="/hono/docs/favicon/site.webmanifest">
+<link rel="mask-icon" href="/hono/docs/favicon/safari-pinned-tab.svg" color="#5bbad5">
+<link rel="shortcut icon" href="/hono/docs/favicon/favicon.ico">
+<meta name="msapplication-TileColor" content="#da532c">
+<meta name="msapplication-config" content="/hono/docs/favicon/browserconfig.xml">
+<meta name="theme-color" content="#ffffff">
+
+ <title>Tenant API Specification :: Eclipse Hono™ Vers.: 1.5</title>
+
+
+ <link href="/hono/docs/css/nucleus.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/fontawesome-all.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hybrid.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/featherlight.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/perfect-scrollbar.min.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/auto-complete.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/theme.css?1608171129" rel="stylesheet">
+ <link href="/hono/docs/css/hugo-theme.css?1608171129" rel="stylesheet">
+
+ <link href="/hono/docs/css/theme-hono.css?1608171129" rel="stylesheet">
+
+
+ <script src="/hono/docs/js/jquery-2.x.min.js?1608171129"></script>
+
+ <style type="text/css">
+ :root #header + #content > #left > #rlblock_left{
+ display:none !important;
+ }
+
+ :not(pre) > code + span.copy-to-clipboard {
+ display: none;
+ }
+
+ </style>
+
+
+<link rel="stylesheet" href="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/stylesheets/vendor/cookieconsent/cookieconsent.min.css">
+<link rel="stylesheet" href='/hono/docs/css/hono.css'>
+
+
+<meta name="twitter:card" content="summary_large_image">
+<meta name="twitter:site" content="@EclipseHono">
+<meta name="twitter:title" content="Tenant API Specification :: Eclipse Hono&trade; Vers.: 1.5">
+<meta name="twitter:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png">
+<meta name="twitter:description" content="A set of micro-services for connecting millions of devices.">
+
+
+<meta property="og:title" content="Tenant API Specification :: Eclipse Hono&trade; Vers.: 1.5" />
+<meta property="og:type" content="website" />
+<meta property="og:url" content="https://www.eclipse.org/hono/docs/1.5/api/tenant//" />
+<meta property="og:image" content="https://www.eclipse.org/hono/docs/images/twitter_image.png" />
+
+ </head>
+ <body class="" data-url="/hono/docs/1.5/api/tenant/">
+ <nav id="sidebar" class="">
+
+
+
+ <div id="header-wrapper">
+ <div id="header">
+ <a href="https://www.eclipse.org/hono/">
+ <img src="/hono/docs/images/HONO-Logo_Bild-Wort_quer-w-310x120px.svg" alt="Hono logo" class="logo-img">
+</a>
+
+ </div>
+
+ <div class="searchbox">
+ <label for="search-by"><i class="fas fa-search"></i></label>
+ <input data-search-input id="search-by" type="search" placeholder="Search...">
+ <span data-search-clear=""><i class="fas fa-times"></i></span>
+</div>
+
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1608171129"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1608171129"></script>
+<script type="text/javascript">
+
+ var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/1.5";
+
+</script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1608171129"></script>
+
+
+ </div>
+
+ <div class="highlightable">
+ <ul class="topics">
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/" title="Concepts" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/concepts/">
+ <i class="far fa-lightbulb"></i> Concepts
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-identity/" title="Device Identity" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-identity/">
+ Device Identity
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/tenancy/" title="Multi-Tenancy" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/tenancy/">
+ Multi-Tenancy
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-provisioning/" title="Device Provisioning" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-provisioning/">
+ Device Provisioning
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connecting-devices/" title="Connecting Devices" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connecting-devices/">
+ Connecting Devices
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/device-notifications/" title="Device Notifications" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/device-notifications/">
+ Device Notifications
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/command-and-control/" title="Command & Control" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/command-and-control/">
+ Command & Control
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/resource-limits/" title="Resource limits" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/resource-limits/">
+ Resource limits
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/concepts/connection-events/" title="Connection Events" class="dd-item ">
+ <a href="/hono/docs/1.5/concepts/connection-events/">
+ Connection Events
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/" title="User Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/user-guide/">
+ <i class="fas fa-book-reader"></i> User Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mongodb-based-device-registry/" title="MongoDB Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mongodb-based-device-registry/">
+ MongoDB Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/file-based-device-registry/" title="File Based Device Registry" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/file-based-device-registry/">
+ File Based Device Registry
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/http-adapter/" title="HTTP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/http-adapter/">
+ HTTP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/mqtt-adapter/" title="MQTT Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/mqtt-adapter/">
+ MQTT Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/amqp-adapter/" title="AMQP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/amqp-adapter/">
+ AMQP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/coap-adapter/" title="CoAP Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/coap-adapter/">
+ CoAP Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/kura-adapter/" title="Kura Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/kura-adapter/">
+ Kura Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/user-guide/sigfox-adapter/" title="Sigfox Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/user-guide/sigfox-adapter/">
+ Sigfox Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/" title="Admin Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/admin-guide/">
+ <i class="fas fa-sliders-h"></i> Admin Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/common-config/" title="Common Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/common-config/">
+ Common Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/auth-server-config/" title="Auth Server Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/auth-server-config/">
+ Auth Server Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/" title="JDBC Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/jdbc-device-registry-config/">
+ JDBC Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/" title="MongoDB Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mongodb-device-registry-config/">
+ MongoDB Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/file-based-device-registry-config/" title="File Based Device Registry Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/file-based-device-registry-config/">
+ File Based Device Registry Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/command-router-config/" title="Configuring the Command Router Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/command-router-config/">
+ Command Router Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/device-connection-config/" title="Configuring the Device Connection Service" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/device-connection-config/">
+ Device Connection Service Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/http-adapter-config/" title="HTTP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/http-adapter-config/">
+ HTTP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/mqtt-adapter-config/" title="MQTT Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/mqtt-adapter-config/">
+ MQTT Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-adapter-config/" title="AMQP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-adapter-config/">
+ AMQP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/coap-adapter-config/" title="CoAP Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/coap-adapter-config/">
+ CoAP Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/kura-adapter-config/" title="Kura Adapter Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/kura-adapter-config/">
+ Kura Adapter Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/hono-client-configuration/" title="Hono Client Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/hono-client-configuration/">
+ Hono Client Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/amqp-network-config/" title="AMQP 1.0 Messaging Network Configuration" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/amqp-network-config/">
+ AMQP 1.0 Messaging Network Configuration
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/secure_communication/" title="Secure Communication" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/secure_communication/">
+ Secure Communication
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/admin-guide/monitoring-tracing-config/" title="Monitoring & Tracing" class="dd-item ">
+ <a href="/hono/docs/1.5/admin-guide/monitoring-tracing-config/">
+ Monitoring & Tracing
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/" title="Developer Guide" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/dev-guide/">
+ <i class="fas fa-tools"></i> Developer Guide
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/building_hono/" title="Building from Source" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/building_hono/">
+ Building from Source
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/amqp_adapter_client/" title="AMQP Adapter Client for Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/amqp_adapter_client/">
+ AMQP Adapter Client for Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/java_client_consumer/" title="Consuming Messages from Java" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/java_client_consumer/">
+ Consuming Messages from Java
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/dev-guide/custom_http_adapter/" title="Implement a Custom Hono HTTP Protocol Adapter" class="dd-item ">
+ <a href="/hono/docs/1.5/dev-guide/custom_http_adapter/">
+ Implement a Custom Hono HTTP Protocol Adapter
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/" title="API" class="dd-item
+ parent
+
+
+ ">
+ <a href="/hono/docs/1.5/api/">
+ <i class='fas fa-plug'></i> API
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/telemetry/" title="Telemetry API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/telemetry/">
+ Telemetry API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/event/" title="Event API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/event/">
+ Event API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-and-control/" title="Command & Control API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-and-control/">
+ Command & Control API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/tenant/" title="Tenant API Specification" class="dd-item active">
+ <a href="/hono/docs/1.5/api/tenant/">
+ Tenant API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/command-router/" title="Command Router API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/command-router/">
+ Command Router API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-connection/" title="Device Connection API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-connection/">
+ Device Connection API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/device-registration/" title="Device Registration API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/device-registration/">
+ Device Registration API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/credentials/" title="Credentials API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/credentials/">
+ Credentials API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/authentication/" title="Authentication API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/authentication/">
+ Authentication API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/management/" title="Device Registry Management API Specification" class="dd-item ">
+ <a href="/hono/docs/1.5/api/management/">
+ Device Registry Management API
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/api/metrics/" title="Metrics" class="dd-item ">
+ <a href="/hono/docs/1.5/api/metrics/">
+ Metrics
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/" title="Deployment" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/deployment/">
+ <i class="fas fa-shipping-fast"></i> Deployment
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/helm-based-deployment/" title="Helm based Deployment" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/helm-based-deployment/">
+ Helm based Deployment
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/openshift/" title="OpenShift / OKD" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/openshift/">
+ OpenShift / OKD
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/create-kubernetes-cluster/" title="Setting up a Kubernetes Cluster" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/create-kubernetes-cluster/">
+ Setting up a Kubernetes Cluster
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/deployment/resource-limitation/" title="Limiting Resource Usage" class="dd-item ">
+ <a href="/hono/docs/1.5/deployment/resource-limitation/">
+ Limiting Resource Usage
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/" title="Architecture" class="dd-item
+
+
+
+ ">
+ <a href="/hono/docs/1.5/architecture/">
+ <i class="fas fa-landmark"></i> Architecture
+
+ </a>
+
+
+ <ul>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/component-view/" title="Component View" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/component-view/">
+ Component View
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <li data-nav-id="/hono/docs/1.5/architecture/auth/" title="Authentication/Authorization" class="dd-item ">
+ <a href="/hono/docs/1.5/architecture/auth/">
+ Authentication/Authorization
+
+ </a>
+ </li>
+
+
+
+
+
+
+
+ </ul>
+
+ </li>
+
+
+
+
+
+ </ul>
+
+
+
+ <section id="shortcuts">
+ <h3></h3>
+ <ul>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/" title="Hono's Homepage"><i class='fas fa-home'></i> Hono Home</a>
+ </li>
+
+ <li>
+ <a class="padding" href="https://www.eclipse.org/hono/getting-started/" title="Getting started with Eclipse Hono"><i class='fas fa-plane-departure'></i> Getting Started</a>
+ </li>
+
+ </ul>
+ </section>
+
+
+
+ <section id="prefooter">
+ <hr/>
+ <ul>
+
+ <li>
+ <div id="select-box-wrapper">
+ <div id="select-box">
+ <a class="padding">
+ Version:
+ <div class="select-style">
+ <select id="select-language" onchange="location = this.value;">
+
+
+
+
+
+
+
+
+ <option id="stable" value="/hono/docs/api/tenant/">stable (1.5)</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.5" value="/hono/docs/1.5/api/tenant/" selected>1.5</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.4" value="/hono/docs/1.4/api/tenant/">1.4</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.3" value="/hono/docs/1.3/api/tenant/">1.3</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.2" value="/hono/docs/1.2/api/tenant/">1.2</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.1" value="/hono/docs/1.1/api/tenant/">1.1</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="1.0" value="/hono/docs/1.0/api/tenant/">1.0</option>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <option id="dev" value="/hono/docs/dev/api/tenant/">dev</option>
+
+
+
+
+ </select>
+ <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+ width="255px" height="255px" viewBox="0 0 255 255" style="enable-background:new 0 0 255 255;" xml:space="preserve">
+ <g>
+ <g id="arrow-drop-down">
+ <polygon points="0,63.75 127.5,191.25 255,63.75 " />
+ </g>
+ </g>
+ </svg>
+ </div>
+ </a>
+ </div>
+ </div>
+ </li>
+
+
+
+ </ul>
+ </section>
+
+ <section id="footer">
+
+
+<p>© 2020 <a href="https://www.eclipse.org/hono/">The Eclipse Hono Project</a></p>
+
+<p>
+ Documentation built with
+ <a href="https://gohugo.io/" target="_blank">Hugo</a>
+ using the
+ <a href="https://github.com/matcornic/hugo-theme-learn" target="_blank">Learn</a> theme.
+</p>
+
+<div class="eclipse-logo">
+ <a href="https://www.eclipse.org" target="_blank">
+ <img src="https://www.eclipse.org/hono/docs/images/eclipse_foundation_logo.svg"/>
+ </a>
+</div>
+
+ </section>
+ </div>
+</nav>
+
+
+
+
+
+ <section id="body">
+ <div id="overlay"></div>
+
+
+
+
+ <div class="padding highlightable">
+
+ <div>
+ <div id="top-bar">
+
+
+
+
+ <div id="top-github-link">
+ <a class="github-link" title='Edit this page' href="https://github.com/eclipse/hono/edit/master/site/documentation/content/api/tenant/index.md" target="blank">
+ <i class="fas fa-code-branch"></i>
+ <span id="top-github-link-text">Edit this page</span>
+ </a>
+ </div>
+
+
+
+ <div id="breadcrumbs" itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb">
+ <span id="sidebar-toggle-span">
+ <a href="#" id="sidebar-toggle" data-sidebar-toggle="">
+ <i class="fas fa-bars"></i>
+ </a>
+ </span>
+
+ <span id="toc-menu"><i class="fas fa-list-alt"></i></span>
+
+ <span class="links">
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <a href='/hono/docs/1.5/'>Documentation</a> > <a href='/hono/docs/1.5/api/'>API</a> > Tenant API Specification
+
+
+
+
+
+
+
+ </span>
+ </div>
+
+ <div class="progress">
+ <div class="wrapper">
+<nav id="TableOfContents">
+<ul>
+<li>
+<ul>
+<li><a href="#preconditions-for-invoking-the-tenant-api">Preconditions for invoking the Tenant API</a></li>
+<li><a href="#get-tenant-information">Get Tenant Information</a></li>
+<li><a href="#tenant-information-format">Tenant Information Format</a>
+<ul>
+<li><a href="#tracing-format">Tracing Format</a></li>
+<li><a href="#trusted-ca-format">Trusted CA Format</a></li>
+<li><a href="#adapter-configuration-format">Adapter Configuration Format</a></li>
+<li><a href="#resource-limits-configuration-format">Resource Limits Configuration Format</a></li>
+<li><a href="#connection-duration-configuration-format">Connection Duration Configuration Format</a></li>
+<li><a href="#data-volume-configuration-format">Data Volume Configuration Format</a></li>
+<li><a href="#resource-limits-period-configuration-format">Resource Limits Period Configuration Format</a></li>
+</ul></li>
+<li><a href="#delivery-states-used-by-the-tenant-api">Delivery States used by the Tenant API</a></li>
+</ul></li>
+</ul>
+</nav>
+ </div>
+</div>
+
+
+ </div>
+ </div>
+
+
+
+ <div id="body-inner">
+
+ <h1>Tenant API Specification</h1>
+
+
+
+
+
+<p>The <em>Tenant API</em> is used by Hono’s protocol adapters to retrieve information that affects all devices belonging to a particular tenant.
+A tenant is a logical entity, which groups together a set of devices. The information registered for a tenant is used for example to
+determine if devices belonging to the tenant are allowed to connect to a certain protocol adapter or if devices are required to authenticate.</p>
+
+<p>This document <em>describes</em> the Tenant API’s operations and the payload data format used by them.
+Please refer to <a href="/hono/docs/1.5/concepts/tenancy/">Multi Tenancy</a> for details regarding the way Hono supports multiple tenants.</p>
+
+<p>The Tenant API is defined by means of AMQP 1.0 message exchanges, i.e. a client needs to connect to Hono using an AMQP 1.0 client in order to invoke operations of the API as described in the following sections.</p>
+
+<p><a name="preconditions"></a></p>
+
+<h2 id="preconditions-for-invoking-the-tenant-api">Preconditions for invoking the Tenant API</h2>
+
+<ol>
+<li>Client has established an AMQP connection with the Tenant service.</li>
+<li>Client has established an AMQP link in role <em>sender</em> on the connection using target address <code>tenant</code>. This link is used by the client to send request messages to the Tenant service.</li>
+<li>Client has established an AMQP link in role <em>receiver</em> on the connection using source address <code>tenant/${reply-to}</code> where <em>reply-to</em> may be any arbitrary string chosen by the client. This link is used by the client to receive responses to the requests it has sent to the Tenant service. This link’s source address is also referred to as the <em>reply-to</em> address for the request messages.</li>
+</ol>
+
+<figure>
+ <img src="preconditions.svg"
+ alt="A client establishes an AMQP connection and the links required to invoke operations of the Tenant service"/> <figcaption>
+ <h4>Client connecting to Tenant service</h4>
+ </figcaption>
+</figure>
+
+
+<h2 id="get-tenant-information">Get Tenant Information</h2>
+
+<p>Clients use this operation to <em>retrieve</em> information about a tenant.</p>
+
+<p><strong>Message Flow</strong></p>
+
+<p>The following sequence diagram illustrates the flow of messages involved in a <em>Client</em> retrieving tenant information.</p>
+
+<figure>
+ <img src="get_tenant_success.svg"
+ alt="A client sends a request message for retrieving tenant information and receives a response containing the information"/> <figcaption>
+ <h4>Client retrieving tenant information</h4>
+ </figcaption>
+</figure>
+
+
+<p><strong>Request Message Format</strong></p>
+
+<p>The following table provides an overview of the properties a client needs to set on a message to get tenant information:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">MAY contain an ID used to correlate a response message to the original request. If set, it is used as the <em>correlation-id</em> property in the response, otherwise the value of the <em>message-id</em> property is used. Either this or the <em>message-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>message-id</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MAY contain an identifier that uniquely identifies the message at the sender side. Either this or the <em>correlation-id</em> property MUST be set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>reply-to</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST contain the source address that the client wants to receive response messages from. This address MUST be the same as the source address used for establishing the client’s receive link (see <a href="#preconditions-for-invoking-the-tenant-api">Preconditions</a>).</td>
+</tr>
+
+<tr>
+<td align="left"><em>subject</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>get</code>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The body of the request message MUST consist of a single <em>Data</em> section containing a UTF-8 encoded string representation of a single JSON object.</p>
+
+<p>The JSON object MUST contain <em>exactly one</em> of the following search criteria properties:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject-dn</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The subject DN of the trusted certificate authority’s public key in the format defined by <a href="https://www.ietf.org/rfc/rfc2253.txt">RFC 2253</a>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>tenant-id</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The identifier of the tenant to get.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The following request payload may be used to look up the tenant with identifier <code>ACME Corporation</code>:</p>
+
+<pre><code class="language-json">{
+ "tenant-id": "ACME Corporation"
+}
+</code></pre>
+
+<p>The following request payload may be used to look up the tenant for which a trusted certificate authority with subject DN <code>O=ACME Corporation, CN=devices</code> has been configured:</p>
+
+<pre><code class="language-json">{
+ "subject-dn": "CN=devices,O=ACME Corporation"
+}
+</code></pre>
+
+<p><strong>Response Message Format</strong></p>
+
+<p>The following table provides an overview of the properties contained in a response message to a <em>get tenant information</em> request:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Location</th>
+<th align="left">AMQP Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>correlation-id</em></td>
+<td align="center">yes</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>message-id</em></td>
+<td align="left">Contains the <em>message-id</em> (or the <em>correlation-id</em>, if specified) of the request message that this message is the response to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>content-type</em></td>
+<td align="center">no</td>
+<td align="left"><em>properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">MUST be set to <code>application/json</code> if the invocation of the operation was successful and the body of the response message contains payload as described below.</td>
+</tr>
+
+<tr>
+<td align="left"><em>status</em></td>
+<td align="center">yes</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>int</em></td>
+<td align="left">Contains the status code indicating the outcome of the operation. Concrete values and their semantics are defined for each particular operation.</td>
+</tr>
+
+<tr>
+<td align="left"><em>cache_control</em></td>
+<td align="center">no</td>
+<td align="left"><em>application-properties</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">Contains an <a href="https://tools.ietf.org/html/rfc2616#section-14.9">RFC 2616</a> compliant <em>cache directive</em>. The directive contained in the property MUST be obeyed by clients that are caching responses.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The response message’s <em>status</em> property may contain the following codes:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Code</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>200</em></td>
+<td align="left">OK, The response message body contains the requested tenant information.</td>
+</tr>
+
+<tr>
+<td align="left"><em>400</em></td>
+<td align="left">Bad Request, the request message did not contain all mandatory properties.</td>
+</tr>
+
+<tr>
+<td align="left"><em>403</em></td>
+<td align="left">Forbidden, the client is not authorized to retrieve information for the given tenant.</td>
+</tr>
+
+<tr>
+<td align="left"><em>404</em></td>
+<td align="left">Not Found, there is no tenant matching the given search criteria.</td>
+</tr>
+</tbody>
+</table>
+
+<p>For status codes indicating an error (codes in the <code>400 - 499</code> range) the message body MAY contain a detailed description of the error that occurred. In this case, the response message’s <em>content-type</em> property SHOULD be set accordingly.</p>
+
+<p>Otherwise the response message contains the information for the requested tenant as described in the following sections.</p>
+
+<p><a name="payload-format"></a></p>
+
+<h2 id="tenant-information-format">Tenant Information Format</h2>
+
+<p>Tenant information is carried in a single <em>Data</em> section of the response message as a UTF-8 encoded string representation of a single JSON object.
+It is an error to include payload that is not of this type.</p>
+
+<p>The table below provides an overview of the standard members defined for the JSON response object:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>adapters</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>array</em></td>
+<td align="left">A list of configuration options valid for certain adapters only. The format of a configuration option is described here <a href="#adapter-configuration-format">Adapter Configuration Format</a>. <strong>NB</strong> If the element is provided then the list MUST NOT be empty. <strong>NB</strong> Only a single entry per <em>type</em> is allowed. If multiple entries for the same <em>type</em> are present it is handled as an error. <strong>NB</strong> If the element is omitted then all adapters are <em>enabled</em> in their default configuration.</td>
+</tr>
+
+<tr>
+<td align="left"><em>defaults</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left">Arbitrary <em>default</em> properties for devices belonging to the tenant. The properties can be used by protocol adapters to augment downstream messages with missing information, e.g. setting a default content type or time-to-live.</td>
+</tr>
+
+<tr>
+<td align="left"><em>enabled</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>boolean</em></td>
+<td align="left">If set to <code>false</code> the tenant is currently disabled. Protocol adapters MUST NOT allow devices of a disabled tenant to connect and MUST NOT accept data published by such devices.</td>
+</tr>
+
+<tr>
+<td align="left"><em>minimum-message-size</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>number</em></td>
+<td align="left">The minimum message size in bytes. If it is set then the payload size of the telemetry, event and command messages are calculated in accordance with the configured value and then reported to the metrics. See <a href="/hono/docs/1.5/api/metrics/#minimum-message-size">Metrics</a> for more details.</td>
+</tr>
+
+<tr>
+<td align="left"><em>resource-limits</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left">Any resource limits that should be enforced for the tenant, e.g. the maximum number of concurrent connections and the maximum data volume for a given period. Refer to <a href="#resource-limits-configuration-format">Resource Limits Configuration Format</a> for details.</td>
+</tr>
+
+<tr>
+<td align="left"><em>tenant-id</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left">The ID of the tenant.</td>
+</tr>
+
+<tr>
+<td align="left"><em>tracing</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left">A set of options regarding the tracing of messages for the tenant. See <a href="#tracing-format">Tracing Format</a> for a definition of the content model of the object.</td>
+</tr>
+
+<tr>
+<td align="left"><em>trusted-ca</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>array</em></td>
+<td align="left">The list of trusted certificate authorities to use for validating certificates presented by devices of the tenant for authentication purposes. See <a href="#trusted-ca-format">Trusted Certificate Authority Format</a> for a definition of the content model of the objects contained in the array. <strong>NB</strong> If the element is provided then the list MUST NOT be empty.</td>
+</tr>
+</tbody>
+</table>
+
+<p>The JSON object MAY contain an arbitrary number of additional members with arbitrary names which can be of a scalar or a complex type.
+This allows for future <em>well-known</em> additions and also allows to add further information which might be relevant to a <em>custom</em> adapter only.</p>
+
+<p><strong>Examples</strong></p>
+
+<p>The JSON structure below contains example information for tenant <code>TEST_TENANT</code>. Note that the structure contains some custom properties at both the root level (<em>customer</em>) as well as the adapter configuration level (<em>deployment</em>) and also defines a default TTL for downstream messages.</p>
+
+<pre><code class="language-json">{
+ "tenant-id": "TEST_TENANT",
+ "defaults": {
+ "ttl": 30
+ },
+ "enabled": true,
+ "customer": "ACME Inc.",
+ "resource-limits": {
+ "max-connections": 100000,
+ "data-volume": {
+ "max-bytes": 2147483648,
+ "period": {
+ "mode": "days",
+ "no-of-days": 30
+ },
+ "effective-since": "2019-07-27T14:30:00Z"
+ }
+ },
+ "adapters": [
+ {
+ "type": "hono-mqtt",
+ "enabled": true,
+ "device-authentication-required": true
+ }, {
+ "type": "hono-http",
+ "enabled": true,
+ "device-authentication-required": true,
+ "deployment": {
+ "maxInstances": 4
+ }
+ }
+ ]
+}
+</code></pre>
+
+<h3 id="tracing-format">Tracing Format</h3>
+
+<p>The table below provides an overview of the members defined for the <em>tracing</em> JSON object:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>sampling-mode</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>default</code></td>
+<td align="left">Defines in how far OpenTracing spans created when processing messages for this tenant shall be recorded (sampled) by the tracing system. The value <code>default</code> lets the default sampling mechanism be used. The value <code>all</code> marks the spans related to this tenant so that they should all be sampled. The value <code>none</code> marks the spans as not to be sampled. The mode defined here may be overridden for a particular auth-id by means of the <code>sampling-mode-per-auth-id</code> property.</td>
+</tr>
+
+<tr>
+<td align="left"><em>sampling-mode-per-auth-id</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left"></td>
+<td align="left">Defines in how far OpenTracing spans created when processing messages for this tenant and a particular auth-id shall be recorded (sampled) by the tracing system. The child properties have the auth-id as name. A child property value of <code>default</code> lets the default sampling mechanism be used. The child property value <code>all</code> marks the spans related to this tenant and the auth-id so that they should all be sampled. The child property value <code>none</code> marks the spans as not to be sampled. The mode defined for a particular auth-id has precedence over the value defined by the <code>sampling-mode</code> property.</td>
+</tr>
+</tbody>
+</table>
+
+<h3 id="trusted-ca-format">Trusted CA Format</h3>
+
+<p>The table below provides an overview of the members of a JSON object representing a trusted CA:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>subject-dn</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The subject DN of the trusted root certificate in the format defined by <a href="https://www.ietf.org/rfc/rfc2253.txt">RFC 2253</a>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>public-key</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The Base64 encoded binary DER encoding of the trusted root certificate’s public key.</td>
+</tr>
+
+<tr>
+<td align="left"><em>algorithm</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>RSA</code></td>
+<td align="left">The name of the public key algorithm. Supported values are <code>RSA</code> and <code>EC</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>auto-provisioning-enabled</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>boolean</em></td>
+<td align="left"><code>false</code></td>
+<td align="left">If set to <code>true</code>, protocol adapters MAY request auto-provisioning of devices that authenticate with a client certificate issued by this CA. Otherwise, protocol adapters MUST NOT request auto-provisioning.</td>
+</tr>
+</tbody>
+</table>
+
+<p><strong>NB</strong> CAs of the <em>same</em> tenant MAY share the same subject DN, e.g. allowing for the definition of overlapping validity periods.
+However, CAs of <em>different</em> tenants MUST NOT share the same subject DN in order to allow for the unique look-up of a tenant by
+the subject DN of one of its trusted CAs.</p>
+
+<p><strong>Examples</strong></p>
+
+<p>Below is an example payload for a response to a <em>get</em> request for tenant <code>TEST_TENANT</code>.
+The tenant is configured with two trusted certificate authorities, each using a different public key algorithm.
+Only one of them is configured to be used for auto-provisioning.</p>
+
+<pre><code class="language-json">{
+ "tenant-id" : "TEST_TENANT",
+ "enabled" : true,
+ "trusted-ca": [{
+ "subject-dn": "CN=ca,OU=Hono,O=Eclipse",
+ "public-key": "PublicKey==",
+ "auto-provisioning-enabled": false,
+ "algorithm": "RSA"
+ }, {
+ "subject-dn": "CN=ca,OU=Hono,O=ACME Inc.",
+ "public-key": "ECKey==",
+ "auto-provisioning-enabled": true,
+ "algorithm": "EC"
+ }]
+}
+</code></pre>
+
+<h3 id="adapter-configuration-format">Adapter Configuration Format</h3>
+
+<p>The table below contains the properties which are used to configure a <em>Hono protocol adapter</em>:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>type</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The type of the adapter which this configuration belongs to.</td>
+</tr>
+
+<tr>
+<td align="left"><em>enabled</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>boolean</em></td>
+<td align="left"><code>false</code></td>
+<td align="left">If set to false the tenant is not allowed to receive / send data utilizing the given adapter.</td>
+</tr>
+
+<tr>
+<td align="left"><em>device-authentication-required</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>boolean</em></td>
+<td align="left"><code>true</code></td>
+<td align="left">If set to false, devices are not required to authenticate with the adapter before sending / receiving data.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Protocol adapters SHOULD use the configuration properties set for a tenant when interacting with devices of that tenant, e.g. in order to make authorization decisions etc.</p>
+
+<p>The JSON object MAY contain an arbitrary number of additional members with arbitrary names of either scalar or complex type.
+This allows for future <em>well-known</em> additions and also allows to add further information which might be relevant to a <em>custom</em> adapter only.</p>
+
+<h3 id="resource-limits-configuration-format">Resource Limits Configuration Format</h3>
+
+<p>The table below contains the properties which are used to configure a tenant’s resource limits:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>max-connections</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>number</em></td>
+<td align="left"><code>-1</code></td>
+<td align="left">The maximum number of concurrent connections allowed from devices of this tenant. The default value <code>-1</code> indicates that no limit is set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>max-ttl</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>number</em></td>
+<td align="left"><code>-1</code></td>
+<td align="left">The maximum time-to-live (in seconds) to use for events published by devices of this tenant. Any default TTL value specified at either the tenant or device level will be limited to the max value specified here. If this property is set to a value greater than <code>-1</code> and no default TTL is specified for a device, the max value will be used for events published by the device. A value of <code>-1</code> (the default) indicates that no limit is set. <strong>Note</strong> that this property contains the TTL in <em>seconds</em> whereas the AMQP 1.0 specification defines a message’s <em>ttl</em> header to use milliseconds.</td>
+</tr>
+
+<tr>
+<td align="left"><em>connection-duration</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The maximum connection duration allowed for the given tenant. Refer to <a href="#connection-duration-configuration-format">Connection Duration Configuration Format</a> for details.</td>
+</tr>
+
+<tr>
+<td align="left"><em>data-volume</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The maximum data volume allowed for the given tenant. Refer to <a href="#data-volume-configuration-format">Data Volume Configuration Format</a> for details.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Protocol adapters SHOULD use the <em>max-connections</em> property to determine if a device’s connection request should be accepted or rejected.</p>
+
+<p>Protocol adapters SHOULD use the <em>max-ttl</em> property to determine the <em>effective time-to-live</em> for events published by devices as follows:</p>
+
+<ol>
+<li>If a non-default <em>max-ttl</em> is set for the tenant, use that value as the <em>effective ttl</em>, otherwise set <em>effective ttl</em> to <code>-1</code>.</li>
+<li>If the event published by the device
+
+<ol>
+<li>contains a <em>ttl</em> header and <em>effective ttl</em> is not <code>-1</code> and the <em>ttl</em> value (in seconds) provided by the device is smaller than the
+<em>effective ttl</em>, use the device provided <em>ttl</em> value as the new <em>effective ttl</em>.</li>
+<li>does not contain a <em>ttl</em> header but a default <em>ttl</em> value is configured for the device (with the device level taking precedence
+over the tenant level) and <em>effective ttl</em> is not <code>-1</code> and the default value is smaller than the <em>effective ttl</em>,
+use the default <em>ttl</em> value as the new <em>effective ttl</em>.</li>
+</ol></li>
+<li>If <em>effective ttl</em> is not <code>-1</code>, set the downstream event message’s <em>ttl</em> header to its value (in milliseconds).</li>
+</ol>
+
+<p>The JSON object MAY contain an arbitrary number of additional members with arbitrary names of either scalar or complex type.
+This allows for future <em>well-known</em> additions and also allows to add further information which might be relevant to a <em>custom</em> adapter only.</p>
+
+<h3 id="connection-duration-configuration-format">Connection Duration Configuration Format</h3>
+
+<p>The table below contains the properties which are used to configure a tenant’s connection duration limit:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>effective-since</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The point in time at which the current settings became effective, i.e. the start of the first accounting period based on these settings. The value MUST be an <a href="https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations">ISO 8601 compliant <em>combined date and time representation in extended format</em></a>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>max-minutes</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>number</em></td>
+<td align="left"><code>-1</code></td>
+<td align="left">The maximum connection duration in minutes allowed for the tenant for each accounting period. MUST be an integer. Minus one indicates that no limit is set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>period</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The mode and length of an accounting period, i.e. the resource usage is calculated based on the defined number of days or on a monthly basis. For more information, please refer to the <a href="#resource-limits-period-configuration-format">resource limits period</a>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Protocol adapters that maintain <em>connection state</em> SHOULD use this information to determine if a connection request from a device should be accepted or not. For more information, please refer to the <a href="/hono/docs/1.5/concepts/resource-limits/#connection-duration-limit">connection duration limit concept</a>.</p>
+
+<h3 id="data-volume-configuration-format">Data Volume Configuration Format</h3>
+
+<p>The table below contains the properties which are used to configure a tenant’s data volume limit:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>effective-since</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The point in time at which the current settings became effective, i.e. the start of the first accounting period based on these settings. The value MUST be an <a href="https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations">ISO 8601 compliant <em>combined date and time representation in extended format</em></a>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>max-bytes</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>number</em></td>
+<td align="left"><code>-1</code></td>
+<td align="left">The maximum number of bytes allowed for the tenant for each accounting period. MUST be an integer. A negative value indicates that no limit is set.</td>
+</tr>
+
+<tr>
+<td align="left"><em>period</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>object</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The mode and length of an accounting period, i.e. the data usage can limited based on the defined number of days or on a monthly basis. For more information, please refer to the <a href="#resource-limits-period-configuration-format">resource limits period</a>.</td>
+</tr>
+</tbody>
+</table>
+
+<p>Protocol adapters SHOULD use this information to determine if a message originating from or destined to a device should be accepted for processing.</p>
+
+<h3 id="resource-limits-period-configuration-format">Resource Limits Period Configuration Format</h3>
+
+<p>The table below contains the properties that are used to configure a tenant’s resource limits period:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Name</th>
+<th align="center">Mandatory</th>
+<th align="left">JSON Type</th>
+<th align="left">Default Value</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>mode</em></td>
+<td align="center"><em>yes</em></td>
+<td align="left"><em>string</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">The mode of the resource usage calculation. The default implementation supports two modes namely <code>days</code> and <code>monthly</code>.</td>
+</tr>
+
+<tr>
+<td align="left"><em>no-of-days</em></td>
+<td align="center"><em>no</em></td>
+<td align="left"><em>number</em></td>
+<td align="left"><code>-</code></td>
+<td align="left">When the mode is set as <code>days</code>, then this value represents the length of an accounting period , i.e. the number of days over which the resource usage is to be limited. MUST be a positive integer.</td>
+</tr>
+</tbody>
+</table>
+
+<h2 id="delivery-states-used-by-the-tenant-api">Delivery States used by the Tenant API</h2>
+
+<p>A Tenant service implementation uses the following AMQP message delivery states when receiving request messages from clients:</p>
+
+<table>
+<thead>
+<tr>
+<th align="left">Delivery State</th>
+<th align="left">Description</th>
+</tr>
+</thead>
+
+<tbody>
+<tr>
+<td align="left"><em>ACCEPTED</em></td>
+<td align="left">Indicates that the request message has been received and accepted for processing.</td>
+</tr>
+
+<tr>
+<td align="left"><em>REJECTED</em></td>
+<td align="left">Indicates that the request message has been received but cannot be processed. The disposition frame’s <em>error</em> field contains information regarding the reason why. Clients should not try to re-send the request using the same message properties and payload in this case.</td>
+</tr>
+</tbody>
+</table>
+
+<footer class=" footline" >
+
+</footer>
+
+
+
+ </div>
+
+
+ </div>
+
+ <div id="navigation">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ </div>
+
+ </section>
+
+ <div style="left: -1000px; overflow: scroll; position: absolute; top: -1000px; border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;">
+ <div style="border: none; box-sizing: content-box; height: 200px; margin: 0px; padding: 0px; width: 200px;"></div>
+ </div>
+ <script src="/hono/docs/js/clipboard.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.min.js?1608171130"></script>
+ <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1608171130"></script>
+ <script src="/hono/docs/js/jquery.sticky.js?1608171130"></script>
+ <script src="/hono/docs/js/featherlight.min.js?1608171130"></script>
+ <script src="/hono/docs/js/html5shiv-printshiv.min.js?1608171130"></script>
+ <script src="/hono/docs/js/highlight.pack.js?1608171130"></script>
+ <script>hljs.initHighlightingOnLoad();</script>
+ <script src="/hono/docs/js/modernizr.custom.71422.js?1608171130"></script>
+ <script src="/hono/docs/js/learn.js?1608171130"></script>
+ <script src="/hono/docs/js/hugo-learn.js?1608171130"></script>
+
+ <link href="/hono/docs/mermaid/mermaid.css?1608171130" type="text/css" rel="stylesheet" />
+ <script src="/hono/docs/mermaid/mermaid.js?1608171130"></script>
+ <script>
+ mermaid.initialize({ startOnLoad: true });
+ </script>
+
+
+
+
+
+<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>
+
+
+<script src="https://www.eclipse.org/eclipse.org-common/themes/solstice/public/javascript/vendor/cookieconsent/default.min.js"></script>
+
+ </body>
+</html>
+
diff --git a/docs/1.5/api/tenant/preconditions.svg b/docs/1.5/api/tenant/preconditions.svg
new file mode 100644
index 0000000..fc6d204
--- /dev/null
+++ b/docs/1.5/api/tenant/preconditions.svg
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="327.6px" preserveAspectRatio="none" style="width:469px;height:327px;" version="1.1" viewBox="0 0 469 327" width="469.2px" zoomAndPan="magnify"><defs><filter height="300%" id="f1cquhxl7jrac4" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.4"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.8" dy="4.8" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><rect fill="#FFFFFF" filter="url(#f1cquhxl7jrac4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1cquhxl7jrac4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="153.2344"/><rect fill="#FFFFFF" filter="url(#f1cquhxl7jrac4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="223.1531"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="43.2" x2="43.2" y1="45.9563" y2="279.7125"/><line style="stroke: #A80036; stroke-width: 1.2; stroke-dasharray: 5.0,5.0;" x1="387.6" x2="387.6" y1="45.9563" y2="279.7125"/><rect fill="#FEFECE" filter="url(#f1cquhxl7jrac4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="27.5941">Client</text><rect fill="#FEFECE" filter="url(#f1cquhxl7jrac4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="63.6" x="9.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="46.8" x="18" y="302.5066">Client</text><rect fill="#FEFECE" filter="url(#f1cquhxl7jrac4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="140.4" x="315.6" y="3.6"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="123.6" x="324" y="27.5941">Tenant Service</text><rect fill="#FEFECE" filter="url(#f1cquhxl7jrac4)" height="36.3562" style="stroke: #A80036; stroke-width: 1.7999999999999998;" width="140.4" x="315.6" y="278.5125"/><text fill="#000000" font-family="sans-serif" font-size="16.8" lengthAdjust="spacingAndGlyphs" textLength="123.6" x="324" y="302.5066">Tenant Service</text><rect fill="#FFFFFF" filter="url(#f1cquhxl7jrac4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="83.3156"/><rect fill="#FFFFFF" filter="url(#f1cquhxl7jrac4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="153.2344"/><rect fill="#FFFFFF" filter="url(#f1cquhxl7jrac4)" height="34.9594" style="stroke: #A80036; stroke-width: 1.2;" width="12" x="382.2" y="223.1531"/><polygon fill="#A80036" points="367.8,78.5156,379.8,83.3156,367.8,88.1156,372.6,83.3156" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="375" y1="83.3156" y2="83.3156"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="52.2" y="77.2365">1.1 open</text><polygon fill="#A80036" points="57,113.475,45,118.275,57,123.075,52.2,118.275" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="387" y1="118.275" y2="118.275"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="67.2" x="64.2" y="112.1959">1.2 open</text><polygon fill="#A80036" points="367.8,148.4344,379.8,153.2344,367.8,158.0344,372.6,153.2344" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="375" y1="153.2344" y2="153.2344"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="214.8" x="52.2" y="147.1553">2.1 attach(sender, "tenant")</text><polygon fill="#A80036" points="57,183.3937,45,188.1938,57,192.9938,52.2,188.1938" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="387" y1="188.1938" y2="188.1938"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="223.2" x="64.2" y="182.1146">2.2 attach(receiver, "tenant")</text><polygon fill="#A80036" points="367.8,218.3531,379.8,223.1531,367.8,227.9531,372.6,223.1531" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="43.8" x2="375" y1="223.1531" y2="223.1531"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="315.6" x="52.2" y="217.074">3.1 attach(receiver, "tenant/${reply-to}")</text><polygon fill="#A80036" points="57,253.3125,45,258.1125,57,262.9125,52.2,258.1125" style="stroke: #A80036; stroke-width: 1.2;"/><line style="stroke: #A80036; stroke-width: 1.2;" x1="49.8" x2="387" y1="258.1125" y2="258.1125"/><text fill="#000000" font-family="sans-serif" font-size="15.6" lengthAdjust="spacingAndGlyphs" textLength="307.2" x="64.2" y="252.0334">3.2 attach(sender, "tenant/${reply-to}")</text><!--
+@startuml
+scale 1.2
+
+Client -> "Tenant Service"++: 1.1 open
+"Tenant Service"-> Client- -: 1.2 open
+
+Client -> "Tenant Service"++: 2.1 attach(sender, "tenant")
+"Tenant Service" -> Client- -: 2.2 attach(receiver, "tenant")
+
+Client -> "Tenant Service"++: 3.1 attach(receiver, "tenant/${reply-to}")
+"Tenant Service" -> Client- -: 3.2 attach(sender, "tenant/${reply-to}")
+@enduml
+
+PlantUML version 1.2019.07beta1(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file