Website build Hono-Website-Declarative-Pipeline-196

Signed-off-by: Hono Bot <hono-bot@eclipse.org>
diff --git a/docs/dev/user-guide/amqp-adapter/index.html b/docs/dev/user-guide/amqp-adapter/index.html
index 6d1aaa5..fd2dcff 100644
--- a/docs/dev/user-guide/amqp-adapter/index.html
+++ b/docs/dev/user-guide/amqp-adapter/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>AMQP Adapter :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/amqp-adapter/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/amqp-adapter/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/amqp-adapter/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/amqp-adapter/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/amqp-adapter/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/amqp-adapter/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/amqp-adapter/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/amqp-adapter/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/amqp-adapter/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/amqp-adapter/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/amqp-adapter/" selected>dev</option>
@@ -1964,45 +2010,46 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#device-authentication">Device Authentication</a>
-<ul>
-<li><a href="#sasl-plain-authentication">SASL PLAIN Authentication</a></li>
-<li><a href="#sasl-external-authentication">SASL EXTERNAL Authentication</a></li>
-</ul></li>
-<li><a href="#resource-limit-checks">Resource Limit Checks</a>
-<ul>
-<li><a href="#connection-limits">Connection Limits</a></li>
-<li><a href="#connection-duration-limits">Connection Duration Limits</a></li>
-<li><a href="#message-limits">Message Limits</a></li>
-</ul></li>
-<li><a href="#connection-events">Connection Events</a></li>
-<li><a href="#link-establishment">Link Establishment</a></li>
-<li><a href="#error-handling">Error Handling</a></li>
-<li><a href="#amqp-command-line-client">AMQP Command-line Client</a></li>
-<li><a href="#publishing-telemetry-data">Publishing Telemetry Data</a></li>
-<li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
-<li><a href="#publishing-events">Publishing Events</a></li>
-<li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
-<li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
-<li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
-<li><a href="#command-control">Command &amp; Control</a>
-<ul>
-<li><a href="#receiving-commands">Receiving Commands</a></li>
-<li><a href="#sending-a-response-to-a-command">Sending a Response to a Command</a></li>
-<li><a href="#examples">Examples</a></li>
-</ul></li>
-<li><a href="#downstream-meta-data">Downstream Meta Data</a>
-<ul>
-<li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
-</ul></li>
-<li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#device-authentication">Device Authentication</a>
+      <ul>
+        <li><a href="#sasl-plain-authentication">SASL PLAIN Authentication</a></li>
+        <li><a href="#sasl-external-authentication">SASL EXTERNAL Authentication</a></li>
+      </ul>
+    </li>
+    <li><a href="#resource-limit-checks">Resource Limit Checks</a>
+      <ul>
+        <li><a href="#connection-limits">Connection Limits</a></li>
+        <li><a href="#connection-duration-limits">Connection Duration Limits</a></li>
+        <li><a href="#message-limits">Message Limits</a></li>
+      </ul>
+    </li>
+    <li><a href="#connection-events">Connection Events</a></li>
+    <li><a href="#link-establishment">Link Establishment</a></li>
+    <li><a href="#error-handling">Error Handling</a></li>
+    <li><a href="#amqp-command-line-client">AMQP Command-line Client</a></li>
+    <li><a href="#publishing-telemetry-data">Publishing Telemetry Data</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
+    <li><a href="#publishing-events">Publishing Events</a></li>
+    <li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
+    <li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
+    <li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
+    <li><a href="#command--control">Command &amp; Control</a>
+      <ul>
+        <li><a href="#receiving-commands">Receiving Commands</a></li>
+        <li><a href="#sending-a-response-to-a-command">Sending a Response to a Command</a></li>
+        <li><a href="#examples">Examples</a></li>
+      </ul>
+    </li>
+    <li><a href="#downstream-meta-data">Downstream Meta Data</a>
+      <ul>
+        <li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
+      </ul>
+    </li>
+    <li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -2027,43 +2074,31 @@
 
 
 <p>The AMQP protocol adapter allows clients (devices or gateway components) supporting the AMQP 1.0 protocol to publish
-messages to Eclipse Hono&trade;&rsquo;s Telemetry, Event and Command &amp; Control endpoints.</p>
-
+messages to Eclipse Hono™&rsquo;s Telemetry, Event and Command &amp; Control endpoints.</p>
 <h2 id="device-authentication">Device Authentication</h2>
-
 <p>By default, all Hono protocol adapters require clients (devices or gateway components) to authenticate during connection establishment.
 This is the preferred way for devices to publish data via protocol adapters. The AMQP adapter supports both the
 <a href="https://tools.ietf.org/html/rfc4616">SASL PLAIN</a> and <a href="https://tools.ietf.org/html/rfc4422">SASL EXTERNAL</a> authentication mechanisms.
 The former uses a <em>username</em> and <em>password</em> to authenticate to the adapter while the latter uses an X.509 client certificate.</p>
-
 <p>This guide provides examples for publishing telemetry and events for <em>authenticated</em> (using SASL PLAIN) and <em>unauthenticated</em> clients.</p>
-
 <p><strong>NB</strong> The AMQP adapter can be configured to <em>allow</em> unauthenticated devices to connect by setting configuration variable
 <code>HONO_AMQP_AUTHENTICATION_REQUIRED</code> to <code>false</code>.</p>
-
 <h3 id="sasl-plain-authentication">SASL PLAIN Authentication</h3>
-
 <p>The AMQP adapter supports authenticating clients using a <em>username</em> and <em>password</em>. This means that clients need to provide a <em>username</em> and a <em>password</em>
 when connecting to the AMQP adapter. The <em>username</em> must match the pattern [<em>auth-id@tenant</em>], e.g. <code>sensor1@DEFAULT_TENANT</code>.</p>
-
 <p>The adapter verifies the credentials provided by the client against the credentials that the
 <a href="/hono/docs/dev/admin-guide/common-config/#credentials-service-connection-configuration">configured Credentials service</a> has on record for the client.
 If the credentials match, the client device can proceed to publish messages to Hono.</p>
-
 <p>The examples below refer to devices <code>4711</code> and <code>gw-1</code> of tenant <code>DEFAULT_TENANT</code> using <em>auth-ids</em> <code>sensor1</code> and <code>gw1</code> and corresponding passwords.
 The example deployment as described in the <a href="/hono/docs/dev/deployment/">Deployment Guide</a> comes pre-configured with the corresponding entities in its
 device registry component.</p>
-
 <p><strong>NB</strong> There is a subtle difference between the <em>device identifier</em> (<em>device-id</em>) and the <em>auth-id</em> a device uses for authentication.
 See <a href="/hono/docs/dev/concepts/device-identity/">Device Identity</a> for a discussion of the concepts.</p>
-
 <h3 id="sasl-external-authentication">SASL EXTERNAL Authentication</h3>
-
 <p>When a device uses a client certificate for authentication, the TLS handshake is initiated during TCP connection establishment.
 If no trust anchor is configured for the AMQP adapter, the TLS handshake will succeed only if the certificate has not yet expired.
 Once the TLS handshake completes and a secure connection is established, the certificate&rsquo;s signature is checked during the SASL handshake.
 To complete the SASL handshake and authenticate the client, the adapter performs the following steps:</p>
-
 <ol>
 <li>The adapter extracts the client certificate&rsquo;s <em>Issuer DN</em> from the client certificate</li>
 <li>The adapter invokes the Tenant service to look up the tenant matching the DN.
@@ -2075,88 +2110,58 @@
 uses the client certificate’s <em>Subject DN</em> (as authentication identifier) and <code>x509-cert</code> (for the credentials type)
 in order to determine the device ID.</li>
 </ol>
-
 <p><strong>NB</strong> The AMQP adapter needs to be configured for TLS in order to support this mechanism.</p>
-
 <h2 id="resource-limit-checks">Resource Limit Checks</h2>
-
 <p>The adapter performs additional checks regarding resource limits when a client tries to connect and/or send a message to the adapter.</p>
-
 <h3 id="connection-limits">Connection Limits</h3>
-
 <p>The adapter immediately closes a newly established connection with an <code>amqp:unauthorized-access</code> error if</p>
-
 <ul>
 <li>the maximum number of connections per protocol adapter instance is reached, or</li>
 <li>if the maximum number of simultaneously connected devices for the client&rsquo;s tenant is reached.</li>
 </ul>
-
 <p>Please refer to <a href="/hono/docs/dev/concepts/resource-limits/">resource-limits</a> for details.</p>
-
 <h3 id="connection-duration-limits">Connection Duration Limits</h3>
-
 <p>The adapter immediately closes a newly established connection with an <code>amqp:unauthorized-access</code> error if the
-<a href="/hono/docs/dev/concepts/resource-limits/#connection-duration-limit">connection duration limit</a> that has been configured for
+<a href="/hono/docs/dev/concepts/resource-limits/">connection duration limit</a> that has been configured for
 the client&rsquo;s tenant is exceeded.</p>
-
 <h3 id="message-limits">Message Limits</h3>
-
 <p>The adapter</p>
-
 <ul>
 <li>immediately closes a newly established connection with an <code>amqp:unauthorized-access</code> error and</li>
 <li>rejects any AMQP 1.0 message containing
-
 <ul>
 <li>telemetry data or an event uploaded by a client</li>
 <li>a command sent by a north bound application</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>if the <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> that has been configured for the device&rsquo;s tenant is exceeded.</p>
-
 <h2 id="connection-events">Connection Events</h2>
-
 <p>The adapter can emit <a href="/hono/docs/dev/api/event/#connection-event">Connection Events</a> for client connections being established and/or terminated.
-Please refer to the <a href="/hono/docs/dev/admin-guide/common-config/#connection-event-producer-configuration">common configuration options</a>
+Please refer to the <a href="/hono/docs/dev/admin-guide/common-config/">common configuration options</a>
 for details regarding how to enable this behavior.</p>
-
 <p>The adapter includes the client&rsquo;s AMQP <em>container-id</em> as the Connection Event&rsquo;s <em>remote-id</em>.</p>
-
 <h2 id="link-establishment">Link Establishment</h2>
-
 <p>The AMQP adapter supports the <a href="http://docs.oasis-open.org/amqp/anonterm/v1.0/anonterm-v1.0.html">Anonymous Terminus for Message Routing</a> specification
 and requires clients to create a single sender link using the <code>null</code> target address for publishing all types of messages to the AMQP adapter.</p>
-
 <p>Using <em>AT MOST ONCE</em> delivery semantics, the client will not wait for the message to be accepted and settled by the downstream consumer. However, with <em>AT LEAST ONCE</em>, the client sends the message and waits for the message to be delivered to and accepted by the downstream consumer. If the message cannot be delivered due to a failure, the client will be notified.</p>
-
 <p>The client 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. Clients should use <code>mixed</code> as the <em>snd-settle-mode</em> and <code>first</code> as the <em>rcv-settle-mode</em> in order to be able to use the same link for sending all types of messages using different delivery semantics as described in the following sections.</p>
-
 <h2 id="error-handling">Error Handling</h2>
-
 <p>The AMQP adapter distinguishes between two types of errors when a message is published using <em>AT LEAST ONCE</em> delivery semantics:</p>
-
 <ul>
 <li>An error caused by the client side, e.g invalid message address, content-type, adapter disabled for tenant etc.</li>
 <li>An error caused by the server side, e.g no downstream consumers registered, downstream connection loss etc.</li>
 </ul>
-
 <p>For a client side error, the adapter settles the message transfer with the <em>rejected</em> outcome and provides an error description in the corresponding disposition frame. In the case of a server-side error, the adapter settles the message with the <em>released</em> outcome, indicating to the client that the message itself was OK but it cannot be delivered due to a failure beyond the control of the client. In the latter case, a client may attempt to re-send the message unaltered.</p>
-
 <p>In case of terminal errors the AMQP connection to the device is closed. The errors that are classified as terminal are listed below.</p>
-
 <ul>
 <li>The adapter is disabled for the tenant that the client belongs to.</li>
 <li>The authenticated device or gateway is disabled or not registered.</li>
 <li>The tenant is disabled or does not exist.</li>
 </ul>
-
 <h2 id="amqp-command-line-client">AMQP Command-line Client</h2>
-
 <p>For purposes of demonstrating the usage of the AMQP adapter, the <strong>Hono CLI Module</strong> contains an AMQP command-line client for interacting with the AMQP adapter. The client can be used to send telemetry or events and to receive/respond to command request messages.</p>
-
 <p>The command-line client supports the following parameters (with default values):</p>
-
 <ul>
 <li><code>--spring.profiles.active=amqp-send</code>: Profile for sending telemetry data or events to Hono.</li>
 <li><code>--spring.profiles.active=amqp-command</code>: Profile for receiving and responding to command request messages.</li>
@@ -2165,73 +2170,59 @@
 <li><code>--hono.client.host</code>: The host name that the AMQP adapter is running on (default: <code>localhost</code>)</li>
 <li><code>--hono.client.port</code>: The port that the adapter is listening for incoming connections (default: <code>5672</code>)</li>
 </ul>
-
 <p>To run the client to send a telemetry message to Hono, open a terminal and execute the following:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --hono.client.username<span style="color:#f92672">=</span>sensor1@DEFAULT_TENANT --hono.client.password<span style="color:#f92672">=</span>hono-secret
 
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --hono.client.username=sensor1@DEFAULT_TENANT --hono.client.password=hono-secret
-
-Accepted{}
-</code></pre>
-
-<p>The client prints the outcome of the operation to standard out. The outcome above (<code>Accepted</code>) indicates that the request to upload the data has succeeded.</p>
-
+Accepted<span style="color:#f92672">{}</span>
+</code></pre></div><p>The client prints the outcome of the operation to standard out. The outcome above (<code>Accepted</code>) indicates that the request to upload the data has succeeded.</p>
 <p><strong>NB</strong>
 There are two JAR files in the hono/cli/target directory. The JAR to use for the client is the <code>hono-cli-$VERSION-exec.jar</code> and not the <code>hono-cli-$VERSION.jar</code> file. Running the latter will not work and will output the message: <code>no main manifest attribute, in hono-cli-$VERSION.jar</code></p>
-
 <h2 id="publishing-telemetry-data">Publishing Telemetry Data</h2>
-
 <p>The client indicates the delivery mode to use when uploading telemetry messages by means of the <em>settled</em> and
 <em>rcv-settle-mode</em> properties of the AMQP <em>transfer</em> frame(s) it uses for uploading the message.
 The AMQP adapter will accept messages using a delivery mode according to the following table:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">settled</th>
-<th align="left">rcv-settle-mode</th>
-<th align="left">Delivery semantics</th>
+<th style="text-align:left">settled</th>
+<th style="text-align:left">rcv-settle-mode</th>
+<th style="text-align:left">Delivery semantics</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><code>false</code></td>
-<td align="left"><code>first</code></td>
-<td align="left">The adapter will forward the message to the downstream AMQP 1.0 Messaging Network and will forward any AMQP <em>disposition</em> frame received from the AMQP 1.0 Messaging Network to the client <em>as is</em>. It is up to the client&rsquo;s discretion if and how it processes the disposition frame. The adapter will accept any re-delivered message. Sending <em>unsettled</em> messages allows for clients to implement either <em>AT LEAST ONCE</em> or <em>AT MOST ONCE</em> delivery semantics, depending on whether a client actually waits for and considers the disposition frames it receives from the adapter or not. This is the recommended mode for uploading telemetry data.</td>
+<td style="text-align:left"><code>false</code></td>
+<td style="text-align:left"><code>first</code></td>
+<td style="text-align:left">The adapter will forward the message to the downstream AMQP 1.0 Messaging Network and will forward any AMQP <em>disposition</em> frame received from the AMQP 1.0 Messaging Network to the client <em>as is</em>. It is up to the client&rsquo;s discretion if and how it processes the disposition frame. The adapter will accept any re-delivered message. Sending <em>unsettled</em> messages allows for clients to implement either <em>AT LEAST ONCE</em> or <em>AT MOST ONCE</em> delivery semantics, depending on whether a client actually waits for and considers the disposition frames it receives from the adapter or not. This is the recommended mode for uploading telemetry data.</td>
 </tr>
-
 <tr>
-<td align="left"><code>true</code></td>
-<td align="left"><code>first</code></td>
-<td align="left">The adapter will acknowledge and settle any received message spontaneously before forwarding it to the downstream AMQP 1.0 Messaging Network. The adapter will ignore any AMQP <em>disposition</em> frames it receives from the AMQP 1.0 Messaging Network. Sending <em>pre-settled</em> messages allows for clients 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>
+<td style="text-align:left"><code>true</code></td>
+<td style="text-align:left"><code>first</code></td>
+<td style="text-align:left">The adapter will acknowledge and settle any received message spontaneously before forwarding it to the downstream AMQP 1.0 Messaging Network. The adapter will ignore any AMQP <em>disposition</em> frames it receives from the AMQP 1.0 Messaging Network. Sending <em>pre-settled</em> messages allows for clients 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 the adapter and will result in the message being ignored (pre-settled) or rejected (unsettled).</p>
-
 <h2 id="publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</h2>
-
 <ul>
 <li>Authentication: SASL PLAIN or SASL EXTERNAL</li>
 <li>Message <em>properties</em>:
-
 <ul>
 <li>(required) <code>to</code>: either <code>telemetry</code> or <code>t</code></li>
 <li>(optional) <code>content-type</code>: The type of payload contained in the message body. The given content type will be used
 in the AMQP message being forwarded downstream if not empty. Otherwise, the content type of the downstream
 message will be set to <code>application/octet-stream</code> if the payload is not empty and no default content type has been
 defined for the origin device or its tenant (see <a href="#downstream-meta-data">Downstream Meta Data</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Message Body:
-
 <ul>
 <li>(optional) Arbitrary payload contained in either a single AMQP <em>Data</em> or <em>AmqpValue</em> section. Note that the adapter
-only supports values of type <em>string</em> or <em>array</em> of *byte*s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
-</ul></li>
+only supports values of type <em>string</em> or <em>array</em> of <em>byte</em>s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
+</ul>
+</li>
 <li>Outcomes:
-
 <ul>
 <li><code>accepted</code>: The message has been successfully forwarded downstream.</li>
 <li><code>released</code>: The message could not be processed by the adapter due to a (temporary) problem that has not been caused
@@ -2239,55 +2230,45 @@
 <li><code>rejected</code>: The message could not be processed by the adapter because the client and/or the message did not fulfill
 some requirements. The <em>rejected</em> outcome&rsquo;s <em>error</em> field will indicate the reason why the message could not
 be processed. Possible error conditions include:
-
 <ul>
 <li><code>hono:bad-request</code>: The message does not meet all formal requirements, e.g. a required property is missing.</li>
 <li><code>amqp:unauthorized-access</code>: The adapter is not enabled for the tenant that the client belongs to.</li>
 <li><code>amqp:resource-limit-exceeded</code>: One of the <a href="#resource-limit-checks">Resource Limit Checks</a> has failed for the
 tenant that the client belongs to.</li>
 <li><code>amqp:precondition-failed</code>: The message does not fulfill certain requirements, e.g adapter cannot assert device registration etc.</li>
-</ul></li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
+</li>
+</ul>
 <p>When a device publishes data to the <code>telemetry</code> address, the AMQP adapter automatically determines the device&rsquo;s identity
 and tenant during the authentication process.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --hono.client.username=sensor1@DEFAULT_TENANT --hono.client.password=hono-secret
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code> using a client certificate for authentication:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --hono.client.port=5671 --hono.client.certPath=config/hono-demo-certs-jar/device-4711-cert.pem --hono.client.keyPath=config/hono-demo-certs-jar/device-4711-key.pem --hono.client.trustStorePath=config/hono-demo-certs-jar/trusted-certs.pem --hono.client.hostnameVerificationRequired=false
-</code></pre>
-
-<h2 id="publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --hono.client.username<span style="color:#f92672">=</span>sensor1@DEFAULT_TENANT --hono.client.password<span style="color:#f92672">=</span>hono-secret
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> using a client certificate for authentication:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --hono.client.port<span style="color:#f92672">=</span><span style="color:#ae81ff">5671</span> --hono.client.certPath<span style="color:#f92672">=</span>config/hono-demo-certs-jar/device-4711-cert.pem --hono.client.keyPath<span style="color:#f92672">=</span>config/hono-demo-certs-jar/device-4711-key.pem --hono.client.trustStorePath<span style="color:#f92672">=</span>config/hono-demo-certs-jar/trusted-certs.pem --hono.client.hostnameVerificationRequired<span style="color:#f92672">=</span>false
+</code></pre></div><h2 id="publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</h2>
 <ul>
 <li>Authentication: SASL PLAIN or SASL EXTERNAL</li>
 <li>Message <em>properties</em>:
-
 <ul>
 <li>(required) <code>to</code>: either <code>telemetry/${tenant-id}/${device-id}</code> or <code>t/${tenant-id}/${device-id}</code></li>
 <li>(optional) <code>content-type</code>: The type of payload contained in the message body. The given content type will be used
 in the AMQP message being forwarded downstream if not empty. Otherwise, the content type of the downstream
 message will be set to <code>application/octet-stream</code> if the payload is not empty and no default content type has been
 defined for the origin device or its tenant (see <a href="#downstream-meta-data">Downstream Meta Data</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Message Body:
-
 <ul>
 <li>(optional) Arbitrary payload contained in either a single AMQP <em>Data</em> or <em>AmqpValue</em> section. Note that the adapter
-only supports values of type <em>string</em> or <em>array</em> of *byte*s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
-</ul></li>
+only supports values of type <em>string</em> or <em>array</em> of <em>byte</em>s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
+</ul>
+</li>
 <li>Outcomes:
-
 <ul>
 <li><code>accepted</code>: The message has been successfully forwarded downstream.</li>
 <li><code>released</code>: The message could not be processed by the adapter due to a (temporary) problem that has not been caused
@@ -2295,69 +2276,53 @@
 <li><code>rejected</code>: The message could not be processed by the adapter because the client and/or the message did not fulfill
 some requirements. The <em>rejected</em> outcome&rsquo;s <em>error</em> field will indicate the reason why the message could not
 be processed. Possible error conditions include:
-
 <ul>
 <li><code>hono:bad-request</code>: The message does not meet all formal requirements, e.g. a required property is missing.</li>
 <li><code>amqp:unauthorized-access</code>: The adapter is not enabled for the tenant that the client belongs to.</li>
 <li><code>amqp:resource-limit-exceeded</code>: One of the <a href="#resource-limit-checks">Resource Limit Checks</a> has failed for the
 tenant that the client belongs to.</li>
 <li><code>amqp:precondition-failed</code>: The message does not fulfill certain requirements, e.g adapter cannot assert device registration etc.</li>
-</ul></li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
+</li>
+</ul>
 <p>This address format is used by devices that have not authenticated to the protocol adapter. Note that this requires the
 adapter&rsquo;s <code>HONO_AMQP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --message.address=t/DEFAULT_TENANT/4711
-</code></pre>
-
-<h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --message.address<span style="color:#f92672">=</span>t/DEFAULT_TENANT/4711
+</code></pre></div><h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
 <p>A device that publishes data on behalf of another device is called a gateway device. The message address is used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the protocol adapter are used to authenticate the gateway whereas the message address is used to identify the device that the gateway publishes data for.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>A gateway connecting to the adapter using <code>gw@DEFAULT_TENANT</code> as username and <code>gw-secret</code> as password and then publishing some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --hono.client.username=gw@DEFAULT_TENANT --hono.client.password=gw-secret --message.address=t/DEFAULT_TENANT/4711
-</code></pre>
-
-<p>In this example, we are using message address <code>t/DEFAULT_TENANT/4711</code> which contains the device that the gateway is publishing the message for.</p>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --hono.client.username<span style="color:#f92672">=</span>gw@DEFAULT_TENANT --hono.client.password<span style="color:#f92672">=</span>gw-secret --message.address<span style="color:#f92672">=</span>t/DEFAULT_TENANT/4711
+</code></pre></div><p>In this example, we are using message address <code>t/DEFAULT_TENANT/4711</code> which contains the device that the gateway is publishing the message for.</p>
 <h2 id="publishing-events">Publishing Events</h2>
-
 <p>The adapter supports <em>AT LEAST ONCE</em> delivery of <em>Event</em> messages only. A client therefore MUST set the <em>settled</em>
 property to <code>false</code> and the <em>rcv-settle-mode</em> property to <code>first</code> in all <em>transfer</em> frame(s) it uses for uploading events.
 All other combinations are not supported by the adapter and result in the message being rejected.</p>
-
 <h2 id="publish-an-event-authenticated-device">Publish an Event (authenticated Device)</h2>
-
 <ul>
 <li>Authentication: SASL PLAIN or SASL EXTERNAL</li>
 <li>Message <em>properties</em>:
-
 <ul>
 <li>(required) <code>to</code>: either <code>event</code> or <code>e</code></li>
 <li>(optional) <code>content-type</code>: The type of payload contained in the message body. The given content type will be used
 in the AMQP message being forwarded downstream if not empty. Otherwise, the content type of the downstream
 message will be set to <code>application/octet-stream</code> if the payload is not empty and no default content type has been
 defined for the origin device or its tenant (see <a href="#downstream-meta-data">Downstream Meta Data</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Message Body:
-
 <ul>
 <li>(optional) Arbitrary payload contained in either a single AMQP <em>Data</em> or <em>AmqpValue</em> section. Note that the adapter
-only supports values of type <em>string</em> or <em>array</em> of *byte*s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
-</ul></li>
+only supports values of type <em>string</em> or <em>array</em> of <em>byte</em>s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
+</ul>
+</li>
 <li>Outcomes:
-
 <ul>
 <li><code>accepted</code>: The message has been successfully forwarded downstream.</li>
 <li><code>released</code>: The message could not be processed by the adapter due to a (temporary) problem that has not been caused
@@ -2365,49 +2330,42 @@
 <li><code>rejected</code>: The message could not be processed by the adapter because the client and/or the message did not fulfill
 some requirements. The <em>rejected</em> outcome&rsquo;s <em>error</em> field will indicate the reason why the message could not
 be processed. Possible error conditions include:
-
 <ul>
 <li><code>hono:bad-request</code>: The message does not meet all formal requirements, e.g. a required property is missing.</li>
 <li><code>amqp:unauthorized-access</code>: The adapter is not enabled for the tenant that the client belongs to.</li>
 <li><code>amqp:resource-limit-exceeded</code>: One of the <a href="#resource-limit-checks">Resource Limit Checks</a> has failed for the
 tenant that the client belongs to.</li>
 <li><code>amqp:precondition-failed</code>: The message does not fulfill certain requirements, e.g adapter cannot assert device registration etc.</li>
-</ul></li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
+</li>
+</ul>
 <p>This is the preferred way for devices to publish events. It is available only if the protocol adapter has been
 configured to require devices to authenticate (which is the default).</p>
-
 <p><strong>Example</strong></p>
-
 <p>Upload a JSON string for device <code>4711</code>:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --hono.client.username=sensor1@DEFAULT_TENANT --hono.client.password=hono-secret --message.address=event --message.payload='{&quot;alarm&quot;: 1}'
-</code></pre>
-
-<h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --hono.client.username<span style="color:#f92672">=</span>sensor1@DEFAULT_TENANT --hono.client.password<span style="color:#f92672">=</span>hono-secret --message.address<span style="color:#f92672">=</span>event --message.payload<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;{&#34;alarm&#34;: 1}&#39;</span>
+</code></pre></div><h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
 <ul>
 <li>Authentication: SASL PLAIN or SASL EXTERNAL</li>
 <li>Message <em>properties</em>:
-
 <ul>
 <li>(required) <code>to</code>: either <code>event/${tenant-id}/${device-id}</code> or <code>e/${tenant-id}/${device-id}</code></li>
 <li>(optional) <code>content-type</code>: The type of payload contained in the message body. The given content type will be used
 in the AMQP message being forwarded downstream if not empty. Otherwise, the content type of the downstream
 message will be set to <code>application/octet-stream</code> if the payload is not empty and no default content type has been
 defined for the origin device or its tenant (see <a href="#downstream-meta-data">Downstream Meta Data</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Message Body:
-
 <ul>
 <li>(optional) Arbitrary payload contained in either a single AMQP <em>Data</em> or <em>AmqpValue</em> section. Note that the adapter
-only supports values of type <em>string</em> or <em>array</em> of *byte*s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
-</ul></li>
+only supports values of type <em>string</em> or <em>array</em> of <em>byte</em>s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
+</ul>
+</li>
 <li>Outcomes:
-
 <ul>
 <li><code>accepted</code>: The message has been successfully forwarded downstream.</li>
 <li><code>released</code>: The message could not be processed by the adapter due to a (temporary) problem that has not been caused
@@ -2415,126 +2373,94 @@
 <li><code>rejected</code>: The message could not be processed by the adapter because the client and/or the message did not fulfill
 some requirements. The <em>rejected</em> outcome&rsquo;s <em>error</em> field will indicate the reason why the message could not
 be processed. Possible error conditions include:
-
 <ul>
 <li><code>hono:bad-request</code>: The message does not meet all formal requirements, e.g. a required property is missing.</li>
 <li><code>amqp:unauthorized-access</code>: The adapter is not enabled for the tenant that the client belongs to.</li>
 <li><code>amqp:resource-limit-exceeded</code>: One of the <a href="#resource-limit-checks">Resource Limit Checks</a> has failed for the
 tenant that the client belongs to.</li>
 <li><code>amqp:precondition-failed</code>: The message does not fulfill certain requirements, e.g adapter cannot assert device registration etc.</li>
-</ul></li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
+</li>
+</ul>
 <p>This address format is used by devices that have not authenticated to the protocol adapter. Note that this requires the
 adapter&rsquo;s <code>HONO_AMQP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Example</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --message.address=e/DEFAULT_TENANT/4711 --message.payload='{&quot;alarm&quot;: 1}'
-</code></pre>
-
-<h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --message.address<span style="color:#f92672">=</span>e/DEFAULT_TENANT/4711 --message.payload<span style="color:#f92672">=</span><span style="color:#e6db74">&#39;{&#34;alarm&#34;: 1}&#39;</span>
+</code></pre></div><h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
 <p><strong>Example</strong></p>
-
 <p>A gateway connecting to the adapter using <code>gw@DEFAULT_TENANT</code> as username and <code>gw-secret</code> as password and then publishing some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-send --hono.client.username=gw@DEFAULT_TENANT --hono.client.password=gw-secret --message.address=e/DEFAULT_TENANT/4711
-</code></pre>
-
-<p>In this example, we are using message address <code>e/DEFAULT_TENANT/4711</code> which contains the device that the gateway is publishing the message for.</p>
-
-<h2 id="command-control">Command &amp; Control</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-send --hono.client.username<span style="color:#f92672">=</span>gw@DEFAULT_TENANT --hono.client.password<span style="color:#f92672">=</span>gw-secret --message.address<span style="color:#f92672">=</span>e/DEFAULT_TENANT/4711
+</code></pre></div><p>In this example, we are using message address <code>e/DEFAULT_TENANT/4711</code> which contains the device that the gateway is publishing the message for.</p>
+<h2 id="command--control">Command &amp; Control</h2>
 <p>The AMQP adapter enables devices to receive commands that have been sent by business applications by means of opening a receiver link using a device specific <em>source address</em> as described below. When a device no longer wants to receive commands anymore, it can simply close the link.</p>
-
 <p>When a device has successfully opened a receiver link for commands, the adapter sends an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a> on behalf of the device to the downstream AMQP 1.0 Messaging Network with the <em>ttd</em> header set to <code>-1</code>, indicating that the device will be ready to receive commands until further notice. Analogously, the adapter sends an empty notification with the <em>ttd</em> header set to <code>0</code> when a device closes the link or disconnects.</p>
-
 <p>Devices send their responses to commands by means of sending an AMQP message with properties specific to the command that has been executed. The AMQP adapter accepts responses being published using either <em>at most once</em> (QoS 0) or <em>at least once</em> (QoS 1) delivery semantics. The device must send the command response messages using the same (sender) link that it uses for sending telemetry data and events.</p>
-
-<p>The AMQP adapter checks the configured <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> before accepting any command requests and responses. In case of incoming command requests from business applications or the command responses from devices, if the message limit is exceeded, the Adapter rejects the message with the reason <code>amqp:resource-limit-exceeded</code>.</p>
-
+<p>The AMQP adapter checks the configured [message limit] (/hono/docs/dev/concepts/resource-limits/) before accepting any command requests and responses. In case of incoming command requests from business applications or the command responses from devices, if the message limit is exceeded, the Adapter rejects the message with the reason <code>amqp:resource-limit-exceeded</code>.</p>
 <h3 id="receiving-commands">Receiving Commands</h3>
-
 <p>A device MUST use the following source address in its <em>attach</em> frame to open a link for receiving commands:</p>
-
 <ul>
 <li><code>command</code> (authenticated device)</li>
 <li><code>command</code> (authenticated gateway receiving commands for all devices it acts on behalf of)</li>
 <li><code>command/${tenant}/${device-id}</code> (unauthenticated device)</li>
 <li><code>command/${tenant}/${device-id}</code> (authenticated gateway receiving commands for a specific device it acts on behalf of)</li>
 </ul>
-
 <p>The adapter supports <em>AT LEAST ONCE</em> delivery of command 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 and result in the termination of the link.</p>
-
 <p>Once the link has been established, the adapter will send command messages having 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">Type</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:center">Mandatory</th>
+<th style="text-align:left">Location</th>
+<th style="text-align:left">Type</th>
+<th style="text-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">Contains the name of the command to be executed.</td>
+<td style="text-align:left"><em>subject</em></td>
+<td style="text-align:center">yes</td>
+<td style="text-align:left"><em>properties</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the name of the command to be executed.</td>
 </tr>
-
 <tr>
-<td align="left"><em>reply-to</em></td>
-<td align="center">no</td>
-<td align="left"><em>properties</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the address to which the command response should be sent. This property will be empty for <em>one-way</em> commands.</td>
+<td style="text-align:left"><em>reply-to</em></td>
+<td style="text-align:center">no</td>
+<td style="text-align:left"><em>properties</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the address to which the command response should be sent. This property will be empty for <em>one-way</em> commands.</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">This property will be empty for <em>one-way</em> commands, otherwise it will contain the identifier used to correlate the response with the command request.</td>
+<td style="text-align:left"><em>correlation-id</em></td>
+<td style="text-align:center">no</td>
+<td style="text-align:left"><em>properties</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">This property will be empty for <em>one-way</em> commands, otherwise it will contain the identifier used to correlate the response with the command request.</td>
 </tr>
-
 <tr>
-<td align="left"><em>device_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">This property will only be set if an authenticated gateway has connected to the adapter. It will contain the id of the device (connected to the gateway) that the command is targeted at.</td>
+<td style="text-align:left"><em>device_id</em></td>
+<td style="text-align:center">no</td>
+<td style="text-align:left"><em>application-properties</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">This property will only be set if an authenticated gateway has connected to the adapter. It will contain the id of the device (connected to the gateway) that the command is targeted at.</td>
 </tr>
 </tbody>
 </table>
-
-<p>Authenticated gateways will receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/#configuring-gateway-devices">Configuring Gateway Devices</a> for details.</p>
-
+<p>Authenticated gateways will receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/">Configuring Gateway Devices</a> for details.</p>
 <p>A gateway can open a link to receive commands for <em>all</em> devices it acts on behalf of. An authenticated gateway can also open a receiver link for commands targeted at a <em>specific</em> device.</p>
-
 <p>When processing an incoming command message, the protocol adapter will give precedence to a device-specific command consumer matching the command target device, whether it was created by a gateway or by the device itself. If multiple such consumer links have been created, by multiple gateways and/or from the device itself, the gateway or device that last created the consumer link will get the command messages.</p>
-
 <p>If no device-specific command consumer exists for a command target device, but <em>one</em> gateway, that may act on behalf of the device, has opened a generic, device-unspecific command consumer link, then the command message is sent to that gateway.</p>
-
 <p>If <em>multiple</em> gateways have opened a generic command consumer link, the protocol adapter may have to decide to which gateway a particular command message will be sent to.
 In case the command target device has already sent a telemetry, event or command response message via a gateway and if that gateway has opened a command consumer link, that gateway will be chosen. Otherwise one gateway that may act on behalf of the command target device and that has opened a command consumer link will be chosen randomly to receive the command message.</p>
-
 <p>Clients MUST settle command messages using one of the following outcomes:</p>
-
 <ul>
 <li><code>accepted</code>: The command message has been accepted for processing.</li>
 <li><code>released</code>: The command message can not be processed by the client due to a (temporary) problem at the client side.</li>
@@ -2542,40 +2468,35 @@
 some requirements. The <em>rejected</em> outcome&rsquo;s <em>error</em> field SHOULD indicate the reason why the message can not
 be processed.</li>
 </ul>
-
 <h3 id="sending-a-response-to-a-command">Sending a Response to a Command</h3>
-
 <p>A device only needs to respond to commands that contain a <em>reply-to</em> address and a <em>correlation-id</em>.
 However, if the application expects a response, then devices must publish a response back to the application.
 Devices may use the same anonymous sender link for this purpose that they also use for sending telemetry data and events.</p>
-
 <p>The adapter supports <em>AT LEAST ONCE</em> delivery of command response messages only. A client therefore MUST set the
 <em>settled</em> property to <code>false</code> and the <em>rcv-settle-mode</em> property to <code>first</code> in all <em>transfer</em> frame(s) it uses
 for uploading command responses. All other combinations are not supported by the adapter and result in the message being rejected.</p>
-
 <ul>
 <li>Authentication: SASL PLAIN or SASL EXTERNAL</li>
 <li>Message <em>properties</em>:
-
 <ul>
 <li>(required) <code>to</code>: MUST contain the value of the <em>reply-to</em> property of the command request message.</li>
 <li>(required) <code>correlation-id</code>: MUST contain the value of the <em>correlation-id</em> property of the command request message.</li>
 <li>(optional) <code>content-type</code>: The type of payload contained in the message body.</li>
-</ul></li>
+</ul>
+</li>
 <li>Message <em>application-properties</em>:
-
 <ul>
 <li>(required) <code>status</code>: MUST contain an integer status code indicating the outcome of processing the command at the
 device (see <a href="/hono/docs/dev/api/command-and-control/">Command &amp; Control API</a> for details).</li>
-</ul></li>
+</ul>
+</li>
 <li>Message Body:
-
 <ul>
 <li>(optional) Arbitrary payload contained in either a single AMQP <em>Data</em> or <em>AmqpValue</em> section. Note that the adapter
-only supports values of type <em>string</em> or <em>array</em> of *byte*s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
-</ul></li>
+only supports values of type <em>string</em> or <em>array</em> of <em>byte</em>s in the <em>AmqpValue</em> section. Values of other types will be ignored.</li>
+</ul>
+</li>
 <li>Outcomes:
-
 <ul>
 <li><code>accepted</code>: The message has been successfully forwarded downstream.</li>
 <li><code>released</code>: The message could not be processed by the adapter due to a (temporary) problem that has not been caused
@@ -2583,133 +2504,102 @@
 <li><code>rejected</code>: The message could not be processed by the adapter because the client and/or the message did not fulfill
 some requirements. The <em>rejected</em> outcome&rsquo;s <em>error</em> field will indicate the reason why the message could not
 be processed. Possible error conditions include:
-
 <ul>
 <li><code>hono:bad-request</code>: The message does not meet all formal requirements, e.g. a required property is missing.</li>
 <li><code>amqp:unauthorized-access</code>: The adapter is not enabled for the tenant that the client belongs to.</li>
 <li><code>amqp:resource-limit-exceeded</code>: One of the <a href="#resource-limit-checks">Resource Limit Checks</a> has failed for the
 tenant that the client belongs to.</li>
 <li><code>amqp:precondition-failed</code>: The message does not fulfill certain requirements, e.g adapter cannot assert device registration etc.</li>
-</ul></li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
+</li>
+</ul>
 <h3 id="examples">Examples</h3>
-
 <p>The AMQP adapter client can be used to simulate a device which receives commands and sends responses back to the application. The command line client is used to simulate an application sending commands to devices and receiving command responses from devices.</p>
-
 <p>Start the AMQP adapter client, as follows:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/target/
-java -jar hono-cli-*-exec.jar --spring.profiles.active=amqp-command --hono.client.username=sensor1@DEFAULT_TENANT --hono.client.password=hono-secret
-</code></pre>
-
-<p>After successfully starting the client, a message indicating that the device is ready to receive commands will be printed to standard output. The device is now waiting to receive commands from applications.</p>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/target/</span>
+java -jar hono-cli-*-exec.jar --spring.profiles.active<span style="color:#f92672">=</span>amqp-command --hono.client.username<span style="color:#f92672">=</span>sensor1@DEFAULT_TENANT --hono.client.password<span style="color:#f92672">=</span>hono-secret
+</code></pre></div><p>After successfully starting the client, a message indicating that the device is ready to receive commands will be printed to standard output. The device is now waiting to receive commands from applications.</p>
 <p>To send a command to the device, open a new terminal shell and start the command application, as shown below:</p>
-
-<pre><code class="language-sh"># in directory: hono/cli/
-java -jar target/hono-cli-*-exec.jar --hono.client.host=localhost --hono.client.username=consumer@HONO --hono.client.password=verysecret --spring.profiles.active=command,ssl
-</code></pre>
-
-<div class="alert alert-notice">
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in directory: hono/cli/</span>
+java -jar target/hono-cli-*-exec.jar --hono.client.host<span style="color:#f92672">=</span>localhost --hono.client.username<span style="color:#f92672">=</span>consumer@HONO --hono.client.password<span style="color:#f92672">=</span>verysecret --spring.profiles.active<span style="color:#f92672">=</span>command,ssl
+</code></pre></div><div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div>Change into the <code>cli</code> directory before running the command above to start the command application. If you change into the target directory (i.e <code>cli/target</code>), then the client will not be able to locate to certificate needed to connect to the messaging network.</div>
 </div>
-
 <p>Once the command application starts successfully, enter a command name, payload and content-type of the command to send to the device.</p>
-
-<pre><code class="language-plaintext">&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Enter name of command for device [DEFAULT_TENANT:4711] (prefix with 'ow:' to send one-way command):
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Enter name of command for device [DEFAULT_TENANT:4711] (prefix with &#39;ow:&#39; to send one-way command):
 setBrightness
 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Enter command payload:
 some-payload
 &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt; Enter content type:
 text/plain
-</code></pre>
-
-<p>After sending the command, the device (i.e. AMQP command client) will print out the command name and payload that it receives and automatically sends a command response to the application.</p>
-
-<pre><code class="language-plaintext">Received Command Message : [Command name: setBrightness, Command payload: some-payload]
+</code></pre></div><p>After sending the command, the device (i.e. AMQP command client) will print out the command name and payload that it receives and automatically sends a command response to the application.</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">Received Command Message : [Command name: setBrightness, Command payload: some-payload]
 Command response sent [outcome: Accepted{}]
-</code></pre>
-
-<h2 id="downstream-meta-data">Downstream Meta Data</h2>
-
+</code></pre></div><h2 id="downstream-meta-data">Downstream Meta Data</h2>
 <p>The adapter includes the following meta data in the application properties of messages being sent downstream:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>device_id</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The identifier of the device that the message originates from.</td>
+<td style="text-align:left"><em>device_id</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The identifier of the device that the message originates from.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_adapter</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The AMQP adapter&rsquo;s type name is <code>hono-amqp</code>.</td>
+<td style="text-align:left"><em>orig_adapter</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The AMQP adapter&rsquo;s type name is <code>hono-amqp</code>.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_address</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the AMQP <em>target address</em> that the device has used to send the data.</td>
+<td style="text-align:left"><em>orig_address</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the AMQP <em>target address</em> that the device has used to send the data.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The adapter also considers <em>defaults</em> registered for the device at either the <a href="/hono/docs/dev/api/tenant/#tenant-information-format">tenant</a>
 or the <a href="/hono/docs/dev/api/device-registration/#assert-device-registration">device level</a>.
 The values of the default properties are determined as follows:</p>
-
 <ol>
 <li>If the message already contains a non-empty property of the same name, the value if unchanged.</li>
 <li>Otherwise, if a default property of the same name is defined in the device&rsquo;s registration information, that value is used.</li>
 <li>Otherwise, if a default property of the same name is defined for the tenant that the device belongs to, that value is used.</li>
 </ol>
-
 <p>Note that of the standard AMQP 1.0 message properties only the <em>content-type</em> and <em>ttl</em> can be set this way to a default value.</p>
-
 <h3 id="event-message-time-to-live">Event Message Time-to-live</h3>
-
 <p>Events published by devices will usually be persisted by the AMQP Messaging Network in order to support deferred delivery to downstream consumers.
 In most cases the AMQP Messaging Network can be configured with a maximum <em>time-to-live</em> to apply to the events so that the events will be removed
 from the persistent store if no consumer has attached to receive the event before the message expires.</p>
-
 <p>In order to support environments where the AMQP Messaging Network cannot be configured accordingly, the protocol adapter supports setting a
 downstream event message&rsquo;s <em>ttl</em> property based on the default <em>ttl</em> and <em>max-ttl</em> values configured for a tenant/device as described in the
 <a href="/hono/docs/dev/api/tenant/#resource-limits-configuration-format">Tenant API</a>.</p>
-
 <h2 id="tenant-specific-configuration">Tenant specific Configuration</h2>
-
 <p>The adapter uses the <a href="/hono/docs/dev/api/tenant/#get-tenant-information">Tenant API</a> to retrieve <em>tenant specific configuration</em> for adapter type <code>hono-amqp</code>.
 The following properties are (currently) supported:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Default Value</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Default Value</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>enabled</em></td>
-<td align="left"><em>boolean</em></td>
-<td align="left"><code>true</code></td>
-<td align="left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant and respond with a <code>amqp:unauthorized-access</code> as the error condition value for rejecting the message.</td>
+<td style="text-align:left"><em>enabled</em></td>
+<td style="text-align:left"><em>boolean</em></td>
+<td style="text-align:left"><code>true</code></td>
+<td style="text-align:left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant and respond with a <code>amqp:unauthorized-access</code> as the error condition value for rejecting the message.</td>
 </tr>
 </tbody>
 </table>
@@ -3836,19 +3726,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844323"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844323"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844323"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844323"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844323"></script>
+    <script src="/hono/docs/js/learn.js?1617844323"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844323"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844323" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844323"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/coap-adapter/index.html b/docs/dev/user-guide/coap-adapter/index.html
index beacded..4cbef71 100644
--- a/docs/dev/user-guide/coap-adapter/index.html
+++ b/docs/dev/user-guide/coap-adapter/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>CoAP Adapter :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/coap-adapter/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/coap-adapter/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/coap-adapter/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/coap-adapter/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/coap-adapter/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/coap-adapter/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/coap-adapter/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/coap-adapter/">1.2</option>
@@ -1794,6 +1834,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/coap-adapter/" selected>dev</option>
@@ -1912,35 +1954,35 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#device-authentication">Device Authentication</a>
-<ul>
-<li><a href="#psk">PSK</a></li>
-</ul></li>
-<li><a href="#message-limits">Message Limits</a></li>
-<li><a href="#coap-content-format-codes">CoAP Content Format Codes</a></li>
-<li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
-<li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
-<li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
-<li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
-<li><a href="#command-control">Command &amp; Control</a>
-<ul>
-<li><a href="#commands-handled-by-gateways">Commands handled by gateways</a></li>
-<li><a href="#sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</a></li>
-<li><a href="#sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</a></li>
-<li><a href="#sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</a></li>
-</ul></li>
-<li><a href="#downstream-meta-data">Downstream Meta Data</a>
-<ul>
-<li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
-</ul></li>
-<li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#device-authentication">Device Authentication</a>
+      <ul>
+        <li><a href="#psk">PSK</a></li>
+      </ul>
+    </li>
+    <li><a href="#message-limits">Message Limits</a></li>
+    <li><a href="#coap-content-format-codes">CoAP Content Format Codes</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
+    <li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
+    <li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
+    <li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
+    <li><a href="#command--control">Command &amp; Control</a>
+      <ul>
+        <li><a href="#commands-handled-by-gateways">Commands handled by gateways</a></li>
+        <li><a href="#sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</a></li>
+        <li><a href="#sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</a></li>
+        <li><a href="#sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</a></li>
+      </ul>
+    </li>
+    <li><a href="#downstream-meta-data">Downstream Meta Data</a>
+      <ul>
+        <li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
+      </ul>
+    </li>
+    <li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -1964,79 +2006,62 @@
         
 
 
-<p>The CoAP protocol adapter exposes <a href="https://tools.ietf.org/html/rfc7252">CoAP</a> based endpoints for Eclipse Hono&trade;&rsquo;s south bound Telemetry, Event and Command &amp; Control APIs.</p>
-
+<p>The CoAP protocol adapter exposes <a href="https://tools.ietf.org/html/rfc7252">CoAP</a> based endpoints for Eclipse Hono™&rsquo;s south bound Telemetry, Event and Command &amp; Control APIs.</p>
 <h2 id="device-authentication">Device Authentication</h2>
-
 <p>The CoAP adapter by default requires clients (devices or gateway components) to authenticate during connection establishment.
 The adapter (currently) only supports <a href="https://tools.ietf.org/html/rfc4279">PSK</a> as part of a DTLS handshake for that purpose.
 Additional variants mentioned in <a href="https://tools.ietf.org/html/rfc7252#section-9">Securing CoAP</a> might be added in the future.</p>
-
 <p>The adapter tries to authenticate the device using these mechanisms in the following order</p>
-
 <h3 id="psk">PSK</h3>
-
 <p>The <em>identity</em> provided in the ClientKeyExchange must have the form <em>auth-id@tenant</em>, e.g. <code>sensor1@DEFAULT_TENANT</code>.
 The adapter performs the handshake using the credentials the <a href="/hono/docs/dev/admin-guide/common-config/#credentials-service-connection-configuration">configured Credentials service</a>
 has on record for the client. The adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record
 with the <em>tenant</em> and <em>auth-id</em> provided by the device in the <em>identity</em> and <code>psk</code> as the <em>type</em> of secret as query parameters.</p>
-
 <p>The examples below refer to devices <code>4711</code> and <code>gw-1</code> of tenant <code>DEFAULT_TENANT</code> using <em>auth-ids</em> <code>sensor1</code> and <code>gw1</code> and
 corresponding secrets. The example deployment as described in the <a href="/hono/docs/dev/deployment/">Deployment Guides</a> comes pre-configured
 with the corresponding entities in its device registry component.
 Please refer to the <a href="/hono/docs/dev/api/credentials/#standard-credential-types">Credentials API</a> for details regarding the different
 types of secrets.</p>
-
 <p><strong>NB</strong> There is a subtle difference between the <em>device identifier</em> (<em>device-id</em>) and the <em>auth-id</em> a device uses for authentication. See <a href="/hono/docs/dev/concepts/device-identity/">Device Identity</a> for a discussion of the concepts.</p>
-
 <h2 id="message-limits">Message Limits</h2>
-
 <p>The adapter rejects</p>
-
 <ul>
 <li>a client&rsquo;s request to upload data with status code <code>429 Too Many Requests</code> and</li>
 <li>any AMQP 1.0 message containing a command sent by a north bound application</li>
 </ul>
-
 <p>if the <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> that has been configured for the device&rsquo;s tenant is exceeded.</p>
-
 <h2 id="coap-content-format-codes">CoAP Content Format Codes</h2>
-
 <p>CoAP doesn&rsquo;t use a textual identifier for content types. Instead, numbers are used, which are maintained by the <a href="https://www.iana.org/">IANA</a>.
 The <a href="https://www.iana.org/assignments/core-parameters/core-parameters.xhtml#content-formats">IANA - CoAP Content Formats</a> page lists all
 (currently) registered codes and the corresponding media types.</p>
-
 <h2 id="publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</h2>
-
 <p>The device is authenticated using PSK.</p>
-
 <ul>
 <li>URI: <code>/telemetry</code></li>
 <li>Method: <code>POST</code></li>
 <li>Type:
-
 <ul>
 <li><code>CON</code>: <em>at least once</em> delivery semantics</li>
 <li><code>NON</code>: <em>at most once</em> delivery semantics</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: The type of payload contained in the request body. Required, if request contains payload.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>empty</code>: Marks the request as an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary payload encoded according to the given content type. Maybe empty, if <code>URI-query: empty</code> is provided.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: A media type describing the semantics and format of payload contained in the response body.
 This option will only be present if the response contains a command to be executed by the device which requires input data.
@@ -2049,116 +2074,88 @@
 In the latter case, the <em>location-path</em> option contains exactly the URI-path that the device must use when sending its
 response to the command.
 This option will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device.</li>
 <li>(optional) Error details, if status code is &gt;= 4.00.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The data in the request body has been accepted for processing. The response may contain a command for the device to execute.
 Note that if the message type is <code>NON</code> (<em>at most once</em> semantics), this status code does <strong>not</strong> mean that the message has been
 delivered to any potential consumer (yet). However, if the message type is <code>CON</code> (<em>at least once</em> semantics), then the adapter waits
 for the message to be delivered and accepted by a downstream consumer before responding with this status code.</li>
 <li>4.00 (Bad Request): The request cannot be processed. Possible reasons include:
-
-<ul>
-<li>the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
-</ul></li>
+* the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).</li>
-<li>If the message type is <code>CON</code> (<em>at least once</em> semantics), the reason may be:
-
-<ul>
-<li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li>
-<li>The consumer failed to indicate in time whether it has processed the telemetry data.</li>
-</ul></li>
-</ul></li>
-</ul></li>
+* There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).
+* If the message type is <code>CON</code> (<em>at least once</em> semantics), the reason may be:
+* The consumer has indicated that it didn&rsquo;t process the telemetry data.
+* The consumer failed to indicate in time whether it has processed the telemetry data.</li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to publish telemetry data. It is available only if the protocol adapter is configured to require
 devices to authenticate (which is the default).</p>
-
 <p><strong>Examples</strong></p>
-
 <p>The examples provided below make use of the <em>coap-client</em> command line tool which is part of the <a href="https://libcoap.net/">libcoap project</a>.
 Precompiled packages should be available for different Linux variants.</p>
-
 <p>Publish some JSON data for device <code>4711</code> using default message type <code>CON</code> (<em>at least once</em>):</p>
-
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/telemetry -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<div class="alert alert-notice">
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/telemetry -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div><em>coap-client</em> only reports error response-codes, so the expected 2.04 response code will not be printed to the terminal.</div>
 </div>
-
 <p>Publish some JSON data for device <code>4711</code> using message type <code>NON</code> (<em>at most once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -N -m POST coaps://hono.eclipseprojects.io/telemetry -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/telemetry?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
 
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -N -m POST coaps://hono.eclipseprojects.io/telemetry -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/telemetry?hono-ttd=10 -t application/json -e '{&quot;temp&quot;: 5}'
-
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<div class="alert alert-notice">
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div>In the example above the response actually contains payload that should be used as input to a command to be executed by the device.
 This is just for illustrative purposes. You will usually get an empty response because there is no downstream application attached which could
 send any commands to the device.</div>
 </div>
-
 <h2 id="publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</h2>
-
 <ul>
 <li>URI: <code>/telemetry/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Type:
-
 <ul>
 <li><code>CON</code>: <em>at least once</em> delivery semantics</li>
 <li><code>NON</code>: <em>at most once</em> delivery semantics</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: The type of payload contained in the request body. Required, if request contains payload.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>empty</code>: Marks the request as an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary payload encoded according to the given content type. Maybe empty, if <code>URI-query: empty</code> is provided.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: A media type describing the semantics and format of payload contained in the response body.
 This option will only be present if the response contains a command to be executed by the device which requires input data.
@@ -2171,102 +2168,77 @@
 In the latter case, the <em>location-path</em> option contains exactly the URI-path that the device must use when sending its
 response to the command.
 This option will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 2.05 (Content).</li>
 <li>(optional) Error details, if status code is &gt;= 4.00.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The data in the request body has been accepted for processing. The response may contain a command for the device to execute.
 Note that if the message type is <code>NON</code> (<em>at most once</em> semantics), this status code does <strong>not</strong> mean that the message has been
 delivered to any potential consumer (yet). However, if the message type is <code>CON</code> (<em>at least once</em> semantics), then the adapter waits
 for the message to be delivered and accepted by a downstream consumer before responding with this status code.</li>
 <li>4.00 (Bad Request): The request cannot be processed. Possible reasons include:
-
-<ul>
-<li>the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
-</ul></li>
+* the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).</li>
-<li>If the message type is <code>CON</code> (<em>at least once</em> semantics), the reason may be:
-
-<ul>
-<li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li>
-<li>The consumer failed to indicate in time whether it has processed the telemetry data.</li>
-</ul></li>
-</ul></li>
-</ul></li>
+* There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).
+* If the message type is <code>CON</code> (<em>at least once</em> semantics), the reason may be:
+* The consumer has indicated that it didn&rsquo;t process the telemetry data.
+* The consumer failed to indicate in time whether it has processed the telemetry data.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource MUST be used by devices that have not authenticated to the protocol adapter. Note that this requires the
 <code>HONO_COAP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code> using default message type <code>CON</code> (<em>at least once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -m PUT coap://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4711 -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> using message type <code>NON</code> (<em>at most once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -N -m PUT coap://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4711 -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -m PUT coap://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4711?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
 
-<pre><code class="language-sh">coap-client -m PUT coap://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4711 -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code> using message type <code>NON</code> (<em>at most once</em>):</p>
-
-<pre><code class="language-sh">coap-client -N -m PUT coap://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4711 -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">coap-client -m PUT coap://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4711?hono-ttd=10 -t application/json -e '{&quot;temp&quot;: 5}'
-
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
-
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
 <ul>
 <li>URI: <code>/telemetry/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Type:
-
 <ul>
 <li><code>CON</code>: <em>at least once</em> delivery semantics</li>
 <li><code>NON</code>: <em>at most once</em> delivery semantics</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: The type of payload contained in the request body. Required, if request contains payload.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>empty</code>: Marks the request as an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary payload encoded according to the given content type. Maybe empty, if <code>URI-query: empty</code> is provided.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: A media type describing the semantics and format of payload contained in the response body.
 This option will only be present if the response contains a command to be executed by the device which requires input data.
@@ -2280,110 +2252,82 @@
 response to the command. Note that in both cases the <code>${tenantId}/${deviceId}</code> path segments indicate the device that
 the command is targeted at.
 This option will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 2.05 (Content).</li>
 <li>(optional) Error details, if status code is &gt;= 4.00.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The data in the request body has been accepted for processing. The response may contain a command for a device to execute.
 Note that if the message type is <code>NON</code> (<em>at most once</em> semantics), this status code does <strong>not</strong> mean that the message has been
 delivered to any potential consumer (yet). However, if the message type is <code>CON</code> (<em>at least once</em> semantics), then the adapter waits
 for the message to be delivered and accepted by a downstream consumer before responding with this status code.</li>
 <li>4.00 (Bad Request): The request cannot be processed. Possible reasons include:
-
-<ul>
-<li>the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
-</ul></li>
+* the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The tenant that the gateway belongs to is not allowed to use this protocol adapter.</li>
-<li>The device belongs to another tenant than the gateway.</li>
-<li>The gateway is not authorized to act <em>on behalf of</em> the device.</li>
-<li>The gateway associated with the device is not registered or disabled.</li>
-</ul></li>
+* The tenant that the gateway belongs to is not allowed to use this protocol adapter.
+* The device belongs to another tenant than the gateway.
+* The gateway is not authorized to act <em>on behalf of</em> the device.
+* The gateway associated with the device is not registered or disabled.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).</li>
-<li>If the message type is <code>CON</code> (<em>at least once</em> semantics), the reason may be:
-
-<ul>
-<li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li>
-<li>The consumer failed to indicate in time whether it has processed the telemetry data.</li>
-</ul></li>
-</ul></li>
-</ul></li>
+* There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).
+* If the message type is <code>CON</code> (<em>at least once</em> semantics), the reason may be:
+* The consumer has indicated that it didn&rsquo;t process the telemetry data.
+* The consumer failed to indicate in time whether it has processed the telemetry data.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource can be used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter
 directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a>
 or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the
 protocol adapter are used to authenticate the gateway whereas the parameters from the URI are used to identify the device that the gateway
 publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to publish data on behalf of the device implicitly by means of retrieving a <em>registration assertion</em>
 for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4712</code> using default message type <code>CON</code> (<em>at least once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4712 -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4712</code> using message type <code>NON</code> (<em>at most once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -N -m PUT coaps://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4712 -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4712</code>, indicating that the gateway will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4712?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
 
-<pre><code class="language-sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4712 -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4712</code> using message type <code>NON</code> (<em>at most once</em>):</p>
-
-<pre><code class="language-sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -N -m PUT coaps://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4712 -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4712</code>, indicating that the gateway will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/telemetry/DEFAULT_TENANT/4712?hono-ttd=10 -t application/json -e '{&quot;temp&quot;: 5}'
-
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<p><strong>NB</strong> The examples above assume that a gateway device has been registered with <code>psk</code> credentials with <em>auth-id</em> <code>gw</code> and secret <code>gw-secret</code>
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><p><strong>NB</strong> The examples above assume that a gateway device has been registered with <code>psk</code> credentials with <em>auth-id</em> <code>gw</code> and secret <code>gw-secret</code>
 which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
-
 <h2 id="publish-an-event-authenticated-device">Publish an Event (authenticated Device)</h2>
-
 <p>The device is authenticated using PSK.</p>
-
 <ul>
 <li>URI: <code>/event</code></li>
 <li>Method: <code>POST</code></li>
 <li>Type:<code>CON</code></li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: The type of payload contained in the request body. Required, if request contains payload.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>empty</code>: Marks the request as an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary payload encoded according to the given content type. Maybe empty, if <code>URI-query: empty</code> is provided.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: A media type describing the semantics and format of payload contained in the response body.
 This option will only be present if the response contains a command to be executed by the device which requires input data.
@@ -2396,96 +2340,77 @@
 In the latter case, the <em>location-path</em> option contains exactly the URI-path that the device must use when sending its
 response to the command.
 This option will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 2.05 (Content).</li>
 <li>(optional) Error details, if status code is &gt;= 4.00.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The data in the request body has been accepted for processing. The response may contain a command for the device to execute.
 Note that if the message type is <code>NON</code> (<em>at most once</em> semantics), this status code does <strong>not</strong> mean that the message has been
 delivered to any potential consumer (yet). However, if the message type is <code>CON</code> (<em>at least once</em> semantics), then the adapter waits
 for the message to be delivered and accepted by a downstream consumer before responding with this status code.</li>
 <li>4.00 (Bad Request): The request cannot be processed. Possible reasons include:
-
-<ul>
-<li>the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
-</ul></li>
+* the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed because there is no consumer of events for the given tenant connected to Hono, or the consumer didn&rsquo;t process the event.</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to publish events. It is available only if the protocol adapter is configured to require
 devices to authenticate (which is the default).</p>
-
 <p><strong>Examples</strong></p>
-
 <p>The examples provided below make use of the <em>coap-client</em> command line tool which is part of the <a href="https://libcoap.net/">libcoap project</a>.
 Precompiled packages should be available for different Linux variants.</p>
-
 <p>Publish some JSON data for device <code>4711</code> using default message type <code>CON</code> (<em>at least once</em>):</p>
-
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/event -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<div class="alert alert-notice">
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/event -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div><em>coap-client</em> only reports error response-codes, so the expected 2.04 response code will not be printed to the terminal.</div>
 </div>
-
 <p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/event?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
 
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret -m POST coaps://hono.eclipseprojects.io/event?hono-ttd=10 -t application/json -e '{&quot;temp&quot;: 5}'
-
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<div class="alert alert-notice">
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div>In the example above the response actually contains payload that should be used as input to a command to be executed by the device.
 This is just for illustrative purposes. You will usually get an empty response because there is no downstream application attached which could
 send any commands to the device.</div>
 </div>
-
 <h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
-
 <ul>
 <li>URI: <code>/event/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Type:<code>CON</code></li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: The type of payload contained in the request body. Required, if request contains payload.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>empty</code>: Marks the request as an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary payload encoded according to the given content type. Maybe empty, if <code>URI-query: empty</code> is provided.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: A media type describing the semantics and format of payload contained in the response body.
 This option will only be present if the response contains a command to be executed by the device which requires input data.
@@ -2498,82 +2423,66 @@
 In the latter case, the <em>location-path</em> option contains exactly the URI-path that the device must use when sending its
 response to the command.
 This option will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 2.05 (Content).</li>
 <li>(optional) Error details, if status code is &gt;= 4.00.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The data in the request body has been accepted for processing. The response may contain a command for the device to execute.
 Note that if the message type is <code>NON</code> (<em>at most once</em> semantics), this status code does <strong>not</strong> mean that the message has been
 delivered to any potential consumer (yet). However, if the message type is <code>CON</code> (<em>at least once</em> semantics), then the adapter waits
 for the message to be delivered and accepted by a downstream consumer before responding with this status code.</li>
 <li>4.00 (Bad Request): The request cannot be processed. Possible reasons include:
-
-<ul>
-<li>the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
-</ul></li>
+* the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed because there is no consumer of events for the given tenant connected to Hono, or the consumer didn&rsquo;t process the event.</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This resource MUST be used by devices that have not authenticated to the protocol adapter. Note that this requires the
 <code>HONO_COAP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code> using default message type <code>CON</code> (<em>at least once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -m PUT coap://hono.eclipseprojects.io/event/DEFAULT_TENANT/4711 -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -m PUT coap://hono.eclipseprojects.io/event/DEFAULT_TENANT/4711?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
 
-<pre><code class="language-sh">coap-client -m PUT coap://hono.eclipseprojects.io/event/DEFAULT_TENANT/4711 -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">coap-client -m PUT coap://hono.eclipseprojects.io/event/DEFAULT_TENANT/4711?hono-ttd=10 -t application/json -e '{&quot;temp&quot;: 5}'
-
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
-
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
 <ul>
 <li>URI: <code>/event/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Type:<code>CON</code></li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: The type of payload contained in the request body. Required, if request contains payload.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>empty</code>: Marks the request as an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a>.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary payload encoded according to the given content type. Maybe empty, if <code>URI-query: empty</code> is provided.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Options:
-
 <ul>
 <li>(optional) <code>content-format</code>: A media type describing the semantics and format of payload contained in the response body.
 This option will only be present if the response contains a command to be executed by the device which requires input data.
@@ -2587,367 +2496,285 @@
 response to the command. Note that in both cases the <code>${tenantId}/${deviceId}</code> path segments indicate the device that
 the command is targeted at.
 This option will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 2.05 (Content).</li>
 <li>(optional) Error details, if status code is &gt;= 4.00.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The data in the request body has been accepted for processing. The response may contain a command for a device to execute.
 Note that if the message type is <code>NON</code> (<em>at most once</em> semantics), this status code does <strong>not</strong> mean that the message has been
 delivered to any potential consumer (yet). However, if the message type is <code>CON</code> (<em>at least once</em> semantics), then the adapter waits
 for the message to be delivered and accepted by a downstream consumer before responding with this status code.</li>
 <li>4.00 (Bad Request): The request cannot be processed. Possible reasons include:
-
-<ul>
-<li>the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
-</ul></li>
+* the request body is empty, and the <em>URI-query</em> option doesn&rsquo;t contain the <code>empty</code> parameter.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The tenant that the gateway belongs to is not allowed to use this protocol adapter.</li>
-<li>The device belongs to another tenant than the gateway.</li>
-<li>The gateway is not authorized to act <em>on behalf of</em> the device.</li>
-<li>The gateway associated with the device is not registered or disabled.</li>
-</ul></li>
+* The tenant that the gateway belongs to is not allowed to use this protocol adapter.
+* The device belongs to another tenant than the gateway.
+* The gateway is not authorized to act <em>on behalf of</em> the device.
+* The gateway associated with the device is not registered or disabled.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed because there is no consumer of events for the given tenant connected to Hono, or the consumer didn&rsquo;t process the event.</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This resource can be used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter
 directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a>
 or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the
 protocol adapter are used to authenticate the gateway whereas the parameters from the URI are used to identify the device that the gateway
 publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to publish data on behalf of the device implicitly by means of retrieving a <em>registration assertion</em>
 for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4712</code> using default message type <code>CON</code> (<em>at least once</em>):</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/event/DEFAULT_TENANT/4712 -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4712</code>, indicating that the gateway will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/event/DEFAULT_TENANT/4712?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -t application/json -e <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
 
-<pre><code class="language-sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/event/DEFAULT_TENANT/4712 -t application/json -e '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4712</code>, indicating that the gateway will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret -m PUT coaps://hono.eclipseprojects.io/event/DEFAULT_TENANT/4712?hono-ttd=10 -t application/json -e '{&quot;temp&quot;: 5}'
-
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<p><strong>NB</strong> The examples above assume that a gateway device has been registered with <code>psk</code> credentials with <em>auth-id</em> <code>gw</code> and secret <code>gw-secret</code>
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><p><strong>NB</strong> The examples above assume that a gateway device has been registered with <code>psk</code> credentials with <em>auth-id</em> <code>gw</code> and secret <code>gw-secret</code>
 which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
-
-<h2 id="command-control">Command &amp; Control</h2>
-
+<h2 id="command--control">Command &amp; Control</h2>
 <p>The CoAP adapter enables devices to receive commands that have been sent by business applications. Commands are delivered to the device by means of a response message. That means a device first has to send a request, indicating how long it will wait for the response. That request can either be a telemetry or event message, with a <code>hono-ttd</code> query parameter (<code>ttd</code> for <code>time till disconnect</code>) specifying the number of seconds the device will wait for the response. The business application can react on that message by sending a command message, targeted at the device. The CoAP adapter will then send the command message as part of the response message to the device.</p>
-
 <h3 id="commands-handled-by-gateways">Commands handled by gateways</h3>
-
-<p>Authenticated gateways will receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/#configuring-gateway-devices">Configuring Gateway Devices</a> for details.</p>
-
+<p>Authenticated gateways will receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/">Configuring Gateway Devices</a> for details.</p>
 <p>A gateway can send a request with the <code>hono-ttd</code> query parameter on the <code>/event</code> or <code>/telemetry</code> URI, indicating its readiness to receive a command for <em>any</em> device it acts on behalf of. Note that in this case, the business application will be notified with the gateway id in the <code>device_id</code> property of the downstream message.</p>
-
 <p>An authenticated gateway can also indicate its readiness to receive a command targeted at a <em>specific</em> device. For that, the <code>/event/${tenantId}/${deviceId}</code> or <code>/telemetry/${tenantId}/${deviceId}</code> URI is to be used, containing the id of the device to receive a command for. The business application will receive a notification with that device id.</p>
-
 <p>If there are multiple concurrent requests with a <code>hono-ttd</code> query parameter, sent by the command target device and/or one or more of its potential gateways, the CoAP adapter will choose the device or gateway to send the command to as follows:</p>
-
 <ul>
 <li>A request done by the command target device or by a gateway specifically done for that device, has precedence. If there are multiple, concurrent such requests, the last one will get the command message (if received) in its response. Note that the other requests won&rsquo;t be answered with a command message in their response event if the business application sent multiple command messages. That means commands for a single device can only be requested sequentially, not in parallel.</li>
 <li>If the above doesn&rsquo;t apply, a single <code>hono-ttd</code> request on the <code>/event</code> or <code>/telemetry</code> URI, sent by a gateway that the command target device is configured for, will get the command message in its response.</li>
 <li>If there are multiple, concurrent such requests by different gateways, all configured for the command target device, the request by the gateway will be chosen, through which the target device has last sent a telemetry or event message. If the target device hasn&rsquo;t sent a message yet and it is thereby unknown via which gateway the device communicates, then one of the requests will be chosen randomly to set the command in its response.</li>
 </ul>
-
 <h3 id="sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</h3>
-
 <p>The device is authenticated using PSK.</p>
-
 <ul>
 <li>URI: <code>/command_response/${commandRequestId}</code></li>
 <li>Method: <code>POST</code></li>
 <li>Type: <code>CON</code></li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of the payload contained in the request body.
 This option must be set if the result of processing the command on the device is non-empty. In this case the result data is
 contained in the request body.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(required) <code>hono-cmd-status</code>: An HTTP status code indicating the outcome of processing the command.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary data representing the result of processing the command on the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The response has been successfully delivered to the application that has sent the command.</li>
 <li>4.00 (Bad Request): The request cannot be processed because the command status or command request ID are missing/malformed.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no application listening for a reply to the given <em>commandRequestId</em>.</li>
-<li>The application has already given up on waiting for a response.</li>
-</ul></li>
-</ul></li>
+* There is no application listening for a reply to the given <em>commandRequestId</em>.
+* The application has already given up on waiting for a response.</li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to respond to commands. It is available only if the protocol adapter is configured to require devices to
 authenticate (which is the default).</p>
-
 <p><strong>Example</strong></p>
-
 <p>Send a response to a previously received command with the command-request-id <code>req-id-uuid</code> for device <code>4711</code>:</p>
-
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret coaps://hono.eclipseprojects.io/command_response/req-id-uuid?hono-cmd-status=200
-</code></pre>
-
-<h3 id="sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</h3>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret coaps://hono.eclipseprojects.io/command_response/req-id-uuid?hono-cmd-status<span style="color:#f92672">=</span><span style="color:#ae81ff">200</span>
+</code></pre></div><h3 id="sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</h3>
 <ul>
 <li>URI: <code>/command_response/${tenantId}/${deviceId}/${commandRequestId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Type: <code>CON</code></li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of the payload contained in the request body.
 This option must be set if the result of processing the command on the device is non-empty. In this case the result data is
 contained in the request body.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(required) <code>hono-cmd-status</code>: An HTTP status code indicating the outcome of processing the command.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary data representing the result of processing the command on the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The response has been successfully delivered to the application that has sent the command.</li>
 <li>4.00 (Bad Request): The request cannot be processed because the command status or command request ID are missing/malformed.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no application listening for a reply to the given <em>commandRequestId</em>.</li>
-<li>The application has already given up on waiting for a response.</li>
-</ul></li>
-</ul></li>
+* There is no application listening for a reply to the given <em>commandRequestId</em>.
+* The application has already given up on waiting for a response.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource MUST be used by devices that have not authenticated to the protocol adapter. Note that this requires the
 <code>HONO_HTTP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Send a response to a previously received command with the command-request-id <code>req-id-uuid</code> for the unauthenticated device <code>4711</code>:</p>
-
-<pre><code class="language-sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret coaps://hono.eclipseprojects.io/command_response/DEFAULT_TENANT/4711/req-id-uuid?hono-cmd-status=200 -e '{&quot;brightness-changed&quot;: true}'
-</code></pre>
-
-<h3 id="sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</h3>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u sensor1@DEFAULT_TENANT -k hono-secret coaps://hono.eclipseprojects.io/command_response/DEFAULT_TENANT/4711/req-id-uuid?hono-cmd-status<span style="color:#f92672">=</span><span style="color:#ae81ff">200</span> -e <span style="color:#e6db74">&#39;{&#34;brightness-changed&#34;: true}&#39;</span>
+</code></pre></div><h3 id="sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</h3>
 <ul>
 <li>URI: <code>/command_response/${tenantId}/${deviceId}/${commandRequestId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Type: <code>CON</code></li>
 <li>Request Options:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of the payload contained in the request body.
 This option must be set if the result of processing the command on the device is non-empty. In this case the result data is
 contained in the request body.</li>
-</ul></li>
+</ul>
+</li>
 <li>Query Parameters:
-
 <ul>
 <li>(required) <code>hono-cmd-status</code>: An HTTP status code indicating the outcome of processing the command.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary data representing the result of processing the command on the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Codes:
-
 <ul>
 <li>2.04 (Changed): The response has been successfully delivered to the application that has sent the command.</li>
 <li>4.00 (Bad Request): The request cannot be processed because the command status or command request ID are missing/malformed.</li>
 <li>4.03 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted.
 Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-<li>The gateway is not authorized to act <em>on behalf of</em> the device.</li>
-<li>The gateway associated with the device is not registered or disabled.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.
+* The gateway is not authorized to act <em>on behalf of</em> the device.
+* The gateway associated with the device is not registered or disabled.</li>
 <li>4.04 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>4.13 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>4.29 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>5.03 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no application listening for a reply to the given <em>commandRequestId</em>.</li>
-<li>The application has already given up on waiting for a response.</li>
-</ul></li>
-</ul></li>
+* There is no application listening for a reply to the given <em>commandRequestId</em>.
+* The application has already given up on waiting for a response.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource can be used by <em>gateway</em> components to send the response to a command <em>on behalf of</em> other devices which do not connect
 to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like
 <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during
 connection establishment with the protocol adapter are used to authenticate the gateway whereas the parameters from the URI are used
 to identify the device that the gateway publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to send responses to a command on behalf of the device implicitly by means of
-retrieving a <em>registration assertion</em> for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
+retrieving a <em>registration assertion</em> for the device from the [configured Device Registration service]
+(/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration).</p>
 <p><strong>Examples</strong></p>
-
 <p>Send a response to a previously received command with the command-request-id <code>req-id-uuid</code> for device <code>4712</code>:</p>
-
-<pre><code class="language-sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret coaps://hono.eclipseprojects.io/command_response/DEFAULT_TENANT/4712/req-id-uuid?hono-cmd-status=200 -e '{&quot;brightness-changed&quot;: true}'
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>psk</code> credentials with <em>auth-id</em> <code>gw</code> and secret <code>gw-secret</code> which is
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">coap-client -u gw@DEFAULT_TENANT -k gw-secret coaps://hono.eclipseprojects.io/command_response/DEFAULT_TENANT/4712/req-id-uuid?hono-cmd-status<span style="color:#f92672">=</span><span style="color:#ae81ff">200</span> -e <span style="color:#e6db74">&#39;{&#34;brightness-changed&#34;: true}&#39;</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>psk</code> credentials with <em>auth-id</em> <code>gw</code> and secret <code>gw-secret</code> which is
 authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
-
 <h2 id="downstream-meta-data">Downstream Meta Data</h2>
-
 <p>The adapter includes the following meta data in the application properties of messages being sent downstream:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>device_id</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The identifier of the device that the message originates from.</td>
+<td style="text-align:left"><em>device_id</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The identifier of the device that the message originates from.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_adapter</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The CoAP adapter&rsquo;s type name is <code>hono-coap</code>.</td>
+<td style="text-align:left"><em>orig_adapter</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The CoAP adapter&rsquo;s type name is <code>hono-coap</code>.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_address</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the (relative) URI that the device has originally posted the data to.</td>
+<td style="text-align:left"><em>orig_address</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the (relative) URI that the device has originally posted the data to.</td>
 </tr>
-
 <tr>
-<td align="left"><em>ttd</em></td>
-<td align="left"><em>integer</em></td>
-<td align="left">Contains the effective number of seconds that the device will wait for a response. This property is only set if the request contains the <code>hono-ttd</code> <em>URI-query</em> option.</td>
+<td style="text-align:left"><em>ttd</em></td>
+<td style="text-align:left"><em>integer</em></td>
+<td style="text-align:left">Contains the effective number of seconds that the device will wait for a response. This property is only set if the request contains the <code>hono-ttd</code> <em>URI-query</em> option.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The adapter also considers <em>defaults</em> registered for the device at either the <a href="/hono/docs/dev/api/tenant/#tenant-information-format">tenant</a> or the <a href="/hono/docs/dev/api/device-registration/#assert-device-registration">device level</a>. The values of the default properties are determined as follows:</p>
-
 <ol>
 <li>If the message already contains a non-empty property of the same name, the value if unchanged.</li>
 <li>Otherwise, if a default property of the same name is defined in the device&rsquo;s registration information, that value is used.</li>
 <li>Otherwise, if a default property of the same name is defined for the tenant that the device belongs to, that value is used.</li>
 </ol>
-
 <p>Note that of the standard AMQP 1.0 message properties only the <em>content-type</em> and <em>ttl</em> can be set this way to a default value.</p>
-
 <h3 id="event-message-time-to-live">Event Message Time-to-live</h3>
-
 <p>Events published by devices will usually be persisted by the AMQP Messaging Network in order to support deferred delivery to downstream consumers.
 In most cases the AMQP Messaging Network can be configured with a maximum <em>time-to-live</em> to apply to the events so that the events will be removed
 from the persistent store if no consumer has attached to receive the event before the message expires.</p>
-
 <p>In order to support environments where the AMQP Messaging Network cannot be configured accordingly, the protocol adapter supports setting a
 downstream event message&rsquo;s <em>ttl</em> property based on the <em>hono-ttl</em> property set as a query parameter in the event requests by the devices.
-Also the default <em>ttl</em> and <em>max-ttl</em> values can be configured for a tenant/device as described in the <a href="/hono/docs/dev/api/tenant/#resource-limits-configuration-format">Tenant API</a>.</p>
-
+Also the default <em>ttl</em> and <em>max-ttl</em> values can be configured for a tenant/device as described in the [Tenant API]
+(/hono/docs/dev/api/tenant/#resource-limits-configuration-format).</p>
 <h2 id="tenant-specific-configuration">Tenant specific Configuration</h2>
-
 <p>The adapter uses the <a href="/hono/docs/dev/api/tenant/#get-tenant-information">Tenant API</a> to retrieve <em>tenant specific configuration</em> for adapter type <code>hono-coap</code>.
 The following properties are (currently) supported:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Default Value</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Default Value</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>enabled</em></td>
-<td align="left"><em>boolean</em></td>
-<td align="left"><code>true</code></td>
-<td align="left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
+<td style="text-align:left"><em>enabled</em></td>
+<td style="text-align:left"><em>boolean</em></td>
+<td style="text-align:left"><code>true</code></td>
+<td style="text-align:left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
 </tr>
-
 <tr>
-<td align="left"><em>max-ttd</em></td>
-<td align="left"><em>integer</em></td>
-<td align="left"><code>60</code></td>
-<td align="left">Defines a tenant specific upper limit for the <em>time until disconnect</em> property that devices may include in requests for uploading telemetry data or events. Please refer to the <a href="/hono/docs/dev/concepts/command-and-control/">Command &amp; Control concept page</a> for a discussion of this parameter&rsquo;s purpose and usage.<br>This property can be set for the <code>hono-coap</code> adapter type as an <em>extension</em> property in the adapter section of the tenant configuration.<br>If it is not set, then the default value of <code>60</code> seconds is used.</td>
+<td style="text-align:left"><em>max-ttd</em></td>
+<td style="text-align:left"><em>integer</em></td>
+<td style="text-align:left"><code>60</code></td>
+<td style="text-align:left">Defines a tenant specific upper limit for the <em>time until disconnect</em> property that devices may include in requests for uploading telemetry data or events. Please refer to the <a href="/hono/docs/dev/concepts/command-and-control/">Command &amp; Control concept page</a> for a discussion of this parameter&rsquo;s purpose and usage.<br>This property can be set for the <code>hono-coap</code> adapter type as an <em>extension</em> property in the adapter section of the tenant configuration.<br>If it is not set, then the default value of <code>60</code> seconds is used.</td>
 </tr>
-
 <tr>
-<td align="left"><em>timeoutToAck</em></td>
-<td align="left"><em>integer</em></td>
-<td align="left">-</td>
-<td align="left">This property has the same semantics as the <a href="/hono/docs/dev/admin-guide/coap-adapter-config/">corresponding property at the adapter level</a>. However, any (non-null) value configured for a tenant takes precedence over the adapter level value for all devices of the particular tenant.</td>
+<td style="text-align:left"><em>timeoutToAck</em></td>
+<td style="text-align:left"><em>integer</em></td>
+<td style="text-align:left">-</td>
+<td style="text-align:left">This property has the same semantics as the <a href="/hono/docs/dev/admin-guide/coap-adapter-config/">corresponding property at the adapter level</a>. However, any (non-null) value configured for a tenant takes precedence over the adapter level value for all devices of the particular tenant.</td>
 </tr>
 </tbody>
 </table>
@@ -4074,19 +3901,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844324"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844324"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844324"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844324"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844324"></script>
+    <script src="/hono/docs/js/learn.js?1617844324"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844324"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844324" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844324"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/device-registry/index.html b/docs/dev/user-guide/device-registry/index.html
index 826f68a..6cfa1a0 100644
--- a/docs/dev/user-guide/device-registry/index.html
+++ b/docs/dev/user-guide/device-registry/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>Device Registries :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757974" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757974" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757974" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757974" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757974"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757974"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757974"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757974"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/device-registry/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/device-registry/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/device-registry/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/device-registry/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/device-registry/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/device-registry/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/device-registry/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/device-registry/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/device-registry/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/device-registry/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/device-registry/" selected>dev</option>
@@ -1963,7 +2009,7 @@
                 
                     <div class="progress">
     <div class="wrapper">
-
+<nav id="TableOfContents"></nav>
     </div>
 </div>
 
@@ -1986,10 +2032,8 @@
         
 
 
-<p>Eclipse Hono&trade; provides these device registry implementations:</p>
-
+<p>Eclipse Hono™ provides these device registry implementations:</p>
 <p><a href="/hono/docs/dev/user-guide/file-based-device-registry/">File Based Device Registry</a></p>
-
 <p><a href="/hono/docs/dev/user-guide/mongodb-based-device-registry/">MongoDB Based Device Registry</a>.</p>
 
 
@@ -3111,19 +3155,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844323"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844323"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844323"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844323"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844323"></script>
+    <script src="/hono/docs/js/learn.js?1617844323"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844323"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844323" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844323"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/file-based-device-registry/index.html b/docs/dev/user-guide/file-based-device-registry/index.html
index 8b4315e..f86f8ae 100644
--- a/docs/dev/user-guide/file-based-device-registry/index.html
+++ b/docs/dev/user-guide/file-based-device-registry/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>File Based Device Registry :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/file-based-device-registry/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/file-based-device-registry/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/file-based-device-registry/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/file-based-device-registry/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/file-based-device-registry/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/file-based-device-registry/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/file-based-device-registry/">1.3</option>
@@ -1768,6 +1806,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/file-based-device-registry/" selected>dev</option>
@@ -1886,14 +1926,11 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#managing-tenants">Managing Tenants</a></li>
-<li><a href="#managing-devices">Managing Devices</a></li>
-<li><a href="#managing-credentials">Managing Credentials</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#managing-tenants">Managing Tenants</a></li>
+    <li><a href="#managing-devices">Managing Devices</a></li>
+    <li><a href="#managing-credentials">Managing Credentials</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -1918,34 +1955,23 @@
 
 
 <p>The Device Registry component provides exemplary implementations of Hono&rsquo;s <a href="/hono/docs/dev/api/tenant/">Tenant API</a>, <a href="/hono/docs/dev/api/device-registration/">Device Registration API</a> and <a href="/hono/docs/dev/api/credentials/">Credentials API</a>.</p>
-
 <p>As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information and persists data in the local filesystem.</p>
-
 <p>In addition, the Device Registry also exposes HTTP resources for managing the contents of the registry according to the <a href="/hono/docs/dev/api/management/">Device Registry HTTP API</a>.</p>
-
 <div class="alert alert-warning">
     <h4 class="alert-heading"><i class="fas fa-exclamation-triangle"></i> Warning</h4>
     <div><p>The Device Registry is not intended to be used in production environments. In particular, access to the HTTP resources described below is not restricted to authorized clients only.</p>
-
 <p>The resources have been designed to provide convenient access to the registry&rsquo;s content using command line tools like <em>curl</em> or <em>HTTPie</em>.</p>
 </div>
 </div>
-
 <h2 id="managing-tenants">Managing Tenants</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#tenants">Device Registry Management API</a> for information about managing tenants.</p>
-
 <div class="alert alert-warning">
     <h4 class="alert-heading"><i class="fas fa-exclamation-triangle"></i> Warning</h4>
     <div>The file based device registry doesn&rsquo;t support <a href="/hono/docs/dev/api/management/#tenants/searchTenants">search tenants</a> operation defined by the Device Registry Management API.</div>
 </div>
-
 <h2 id="managing-devices">Managing Devices</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#devices">Device Registry Management API</a> for information about managing devices.</p>
-
 <h2 id="managing-credentials">Managing Credentials</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#credentials">Device Registry Management API</a> for information about managing credentials.</p>
 
 <footer class="footline">
@@ -3070,19 +3096,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844323"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844323"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844323"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844323"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844323"></script>
+    <script src="/hono/docs/js/learn.js?1617844323"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844323"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844323" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844323"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/http-adapter/index.html b/docs/dev/user-guide/http-adapter/index.html
index 5c525ee..6e22256 100644
--- a/docs/dev/user-guide/http-adapter/index.html
+++ b/docs/dev/user-guide/http-adapter/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>HTTP Adapter :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/http-adapter/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/http-adapter/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/http-adapter/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/http-adapter/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/http-adapter/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/http-adapter/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/http-adapter/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/http-adapter/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/http-adapter/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/http-adapter/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/http-adapter/" selected>dev</option>
@@ -1964,40 +2010,36 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#device-authentication">Device Authentication</a>
-<ul>
-<li><a href="#client-certificate">Client Certificate</a></li>
-<li><a href="#http-basic-auth">HTTP Basic Auth</a></li>
-</ul></li>
-<li><a href="#message-limits">Message Limits</a></li>
-<li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
-<li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
-<li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
-<li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
-<li><a href="#command-control">Command &amp; Control</a>
-<ul>
-<li><a href="#specifying-the-time-a-device-will-wait-for-a-response">Specifying the Time a Device will wait for a Response</a>
-<ul>
-<li><a href="#using-an-http-header">Using an HTTP Header</a></li>
-<li><a href="#using-a-query-parameter">Using a Query Parameter</a></li>
-</ul></li>
-<li><a href="#commands-handled-by-gateways">Commands handled by gateways</a></li>
-<li><a href="#sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</a></li>
-<li><a href="#sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</a></li>
-<li><a href="#sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</a></li>
-</ul></li>
-<li><a href="#downstream-meta-data">Downstream Meta Data</a>
-<ul>
-<li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
-</ul></li>
-<li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#device-authentication">Device Authentication</a>
+      <ul>
+        <li><a href="#client-certificate">Client Certificate</a></li>
+        <li><a href="#http-basic-auth">HTTP Basic Auth</a></li>
+      </ul>
+    </li>
+    <li><a href="#message-limits">Message Limits</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
+    <li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
+    <li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
+    <li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
+    <li><a href="#command--control">Command &amp; Control</a>
+      <ul>
+        <li><a href="#specifying-the-time-a-device-will-wait-for-a-response">Specifying the Time a Device will wait for a Response</a></li>
+        <li><a href="#commands-handled-by-gateways">Commands handled by gateways</a></li>
+        <li><a href="#sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</a></li>
+        <li><a href="#sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</a></li>
+        <li><a href="#sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</a></li>
+      </ul>
+    </li>
+    <li><a href="#downstream-meta-data">Downstream Meta Data</a>
+      <ul>
+        <li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
+      </ul>
+    </li>
+    <li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -2021,74 +2063,57 @@
         
 
 
-<p>The HTTP protocol adapter exposes HTTP based endpoints for Eclipse Hono&trade;&rsquo;s south bound Telemetry, Event and Command &amp; Control APIs.</p>
-
+<p>The HTTP protocol adapter exposes HTTP based endpoints for Eclipse Hono™&rsquo;s south bound Telemetry, Event and Command &amp; Control APIs.</p>
 <h2 id="device-authentication">Device Authentication</h2>
-
 <p>The HTTP adapter by default requires clients (devices or gateway components) to authenticate during connection establishment. The adapter supports both the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a> as well as client certificate based authentication as part of a TLS handshake for that purpose.</p>
-
 <p>The adapter tries to authenticate the device using these mechanisms in the following order</p>
-
 <h3 id="client-certificate">Client Certificate</h3>
-
 <p>When a device uses a client certificate for authentication during the TLS handshake, the adapter tries to determine the tenant that the device belongs to, based on the <em>issuer DN</em> contained in the certificate. In order for the lookup to succeed, the tenant&rsquo;s trust anchor needs to be configured by means of <a href="/hono/docs/dev/api/tenant/#tenant-information-format">registering the trusted certificate authority</a>. The device&rsquo;s client certificate will then be validated using the registered trust anchor, thus implicitly establishing the tenant that the device belongs to. In a second step, the adapter then uses the Credentials API&rsquo;s <em>get</em> operation with the client certificate&rsquo;s <em>subject DN</em> as the <em>auth-id</em> and <code>x509-cert</code> as the <em>type</em> of secret as query parameters.</p>
-
-<p><strong>NB</strong> The HTTP adapter needs to be <a href="/hono/docs/dev/admin-guide/secure_communication/#http-adapter">configured for TLS</a> in order to support this mechanism.</p>
-
+<p><strong>NB</strong> The HTTP adapter needs to be <a href="/hono/docs/dev/admin-guide/secure_communication/">configured for TLS</a> in order to support this mechanism.</p>
 <h3 id="http-basic-auth">HTTP Basic Auth</h3>
-
-<p>The <em>username</em> provided in the header must have the form <em>auth-id@tenant</em>, e.g. <code>sensor1@DEFAULT_TENANT</code>. The adapter verifies the credentials provided by the client against the credentials that the <a href="/hono/docs/dev/admin-guide/common-config/#credentials-service-connection-configuration">configured Credentials service</a> has on record for the client. The adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record with the <em>tenant</em> and <em>auth-id</em> provided by the device in the <em>username</em> and <code>hashed-password</code> as the <em>type</em> of secret as query parameters.</p>
-
+<p>The <em>username</em> provided in the header must have the form <em>auth-id@tenant</em>, e.g. <code>sensor1@DEFAULT_TENANT</code>. The adapter verifies the credentials provided by the client against the credentials that the <a href="/hono/docs/dev/admin-guide/common-config/">configured Credentials service</a> has on record for the client. The adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record with the <em>tenant</em> and <em>auth-id</em> provided by the device in the <em>username</em> and <code>hashed-password</code> as the <em>type</em> of secret as query parameters.</p>
 <p>The examples below refer to devices <code>4711</code> and <code>gw-1</code> of tenant <code>DEFAULT_TENANT</code> using <em>auth-ids</em> <code>sensor1</code> and <code>gw1</code> and corresponding passwords. The example deployment as described in the <a href="/hono/docs/dev/deployment/">Deployment Guides</a> comes pre-configured with the corresponding entities in its device registry component.
 Please refer to the <a href="/hono/docs/dev/api/credentials/#standard-credential-types">Credentials API</a> for details regarding the different types of secrets.</p>
-
 <p><strong>NB</strong> There is a subtle difference between the <em>device identifier</em> (<em>device-id</em>) and the <em>auth-id</em> a device uses for authentication. See <a href="/hono/docs/dev/concepts/device-identity/">Device Identity</a> for a discussion of the concepts.</p>
-
 <h2 id="message-limits">Message Limits</h2>
-
 <p>The adapter rejects</p>
-
 <ul>
 <li>a client&rsquo;s request to upload data with status code <code>429 Too Many Requests</code> and</li>
 <li>any AMQP 1.0 message containing a command sent by a north bound application</li>
 </ul>
-
 <p>if the <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> that has been configured for the device&rsquo;s tenant is exceeded.</p>
-
 <h2 id="publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</h2>
-
 <ul>
 <li>URI: <code>/telemetry</code></li>
 <li>Method: <code>POST</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>authorization</code>: The device&rsquo;s <em>auth-id</em> and plain text password encoded according to the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a>. If not set, the adapter expects the device to present a client certificate as part of the TLS handshake during connection establishment.</li>
 <li>(required) <code>content-type</code>: The type of payload contained in the request body.</li>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>qos-level</code>: The QoS level for publishing telemetry messages. The adapter supports <em>at most once</em> (<code>0</code>) and <em>at least once</em> (<code>1</code>) QoS levels. The default value of <code>0</code> is assumed if this header is omitted.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(required) Arbitrary payload encoded according to the given content type.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of payload contained in the response body. This header will only be present if the response contains a command to be executed by the device which requires input data.</li>
 <li>(optional) <code>hono-command</code>: The name of the command to execute. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-req-id</code>: An identifier that the device must include in its response to a command. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-target-device</code>: The id of the device that shall execute the command. This header will only be present if the response contains a command to be executed by the device and if the response goes to a gateway that acts on behalf of the target device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 200.</li>
 <li>(optional) Error details, if status code is &gt;= 400.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>200 (OK): The telemetry data has been accepted for processing. The response contains a command for the device to execute.</li>
 <li>202 (Accepted): The telemetry data has been accepted for processing. Note that if the <code>qos-level</code> request header is omitted (<em>at most once</em> semantics),
@@ -2096,112 +2121,83 @@
 (<em>at least once</em> semantics), then the adapter waits for the message to be delivered and accepted by a downstream consumer before responding with
 this status code.</li>
 <li>400 (Bad Request): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>The content type header is missing.</li>
-<li>The request body is empty.</li>
-<li>The QoS header value is invalid.</li>
-</ul></li>
+* The content type header is missing.
+* The request body is empty.
+* The QoS header value is invalid.</li>
 <li>401 (Unauthorized): The request cannot be processed because the request does not contain valid credentials.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).</li>
-<li>If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be:
-
-<ul>
-<li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li>
-<li>The consumer failed to indicate in time whether it has processed the telemetry data.</li>
-</ul></li>
-</ul></li>
-</ul></li>
+* There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).
+* If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be:
+* The consumer has indicated that it didn&rsquo;t process the telemetry data.
+* The consumer failed to indicate in time whether it has processed the telemetry data.</li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to publish telemetry data. It is available only if the protocol adapter is configured to require devices to authenticate (which is the default).</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry
 
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> using <em>at least once</em> QoS:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;qos-level: 1&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://localhost:8080/telemetry
 
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;hono-ttd: 10&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://localhost:8080/telemetry
 
-<p>Publish some JSON data for device <code>4711</code> using <em>at least once</em> QoS:</p>
-
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' -H 'qos-level: 1' --data-binary '{&quot;temp&quot;: 5}' http://localhost:8080/telemetry
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' -H 'hono-ttd: 10' --data-binary '{&quot;temp&quot;: 5}' http://localhost:8080/telemetry
-
-HTTP/1.1 200 OK
+HTTP/1.1 <span style="color:#ae81ff">200</span> OK
 hono-command: set
 hono-cmd-req-id: 1010a7249aa5-f742-4376-8458-bbfc88c72d92
-content-length: 23
+content-length: <span style="color:#ae81ff">23</span>
 
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> using a client certificate for authentication:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in base directory of Hono repository:</span>
+curl -i --cert demo-certs/certs/device-4711-cert.pem --key demo-certs/certs/device-4711-key.pem --cacert demo-certs/certs/trusted-certs.pem -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> https://localhost:8443/telemetry
 
-<p>Publish some JSON data for device <code>4711</code> using a client certificate for authentication:</p>
-
-<pre><code class="language-sh"># in base directory of Hono repository:
-curl -i --cert demo-certs/certs/device-4711-cert.pem --key demo-certs/certs/device-4711-key.pem --cacert demo-certs/certs/trusted-certs.pem -H 'content-type: application/json' --data-binary '{&quot;temp&quot;: 5}' https://localhost:8443/telemetry
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that the HTTP adapter is <a href="/hono/docs/dev/admin-guide/secure_communication/#http-adapter">configured for TLS</a> and the secure port is used.</p>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that the HTTP adapter is <a href="/hono/docs/dev/admin-guide/secure_communication/">configured for TLS</a> and the secure port is used.</p>
 <h2 id="publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</h2>
-
 <ul>
 <li>URI: <code>/telemetry/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(required) <code>content-type</code>: The type of payload contained in the request body.</li>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>qos-level</code>: The QoS level for publishing telemetry messages. The adapter supports <em>at most once</em> (<code>0</code>) and <em>at least once</em> (<code>1</code>) QoS levels. The default value of <code>0</code> is assumed if this header is omitted.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(required) Arbitrary payload encoded according to the given content type.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of payload contained in the response body. This header will only be present if the response contains a command to be executed by the device which requires input data.</li>
 <li>(optional) <code>hono-command</code>: The name of the command to execute. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-req-id</code>: An identifier that the device must include in its response to a command. This header will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 200.</li>
 <li>(optional) Error details, if status code is &gt;= 400.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>200 (OK): The telemetry data has been accepted for processing. The response contains a command for the device to execute.</li>
 <li>202 (Accepted): The telemetry data has been accepted for processing. Note that if the <code>qos-level</code> request header is omitted (<em>at most once</em> semantics),
@@ -2209,103 +2205,78 @@
 (<em>at least once</em> semantics), then the adapter waits for the message to be delivered and accepted by a downstream consumer before responding with
 this status code.</li>
 <li>400 (Bad Request): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>The content type header is missing.</li>
-<li>The request body is empty.</li>
-<li>The QoS header value is invalid.</li>
-</ul></li>
+* The content type header is missing.
+* The request body is empty.
+* The QoS header value is invalid.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).</li>
-<li>If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be:
-
-<ul>
-<li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li>
-<li>The consumer failed to indicate in time whether it has processed the telemetry data.</li>
-</ul></li>
-</ul></li>
-</ul></li>
+* There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).
+* If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be:
+* The consumer has indicated that it didn&rsquo;t process the telemetry data.
+* The consumer failed to indicate in time whether it has processed the telemetry data.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource MUST be used by devices that have not authenticated to the protocol adapter. Note that this requires the <code>HONO_HTTP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4711
 
-<pre><code class="language-sh">curl -i -X PUT -H 'content-type: application/json' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4711
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> using <em>at least once</em> QoS:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;qos-level: 1&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4711
 
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;hono-ttd: 10&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://localhost:8080/telemetry/DEFAULT_TENANT/4711
 
-<p>Publish some JSON data for device <code>4711</code> using <em>at least once</em> QoS:</p>
-
-<pre><code class="language-sh">curl -i -X PUT -H 'content-type: application/json' -H 'qos-level: 1' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4711
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code>, indicating that the device will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">curl -i -X PUT -H 'content-type: application/json' -H 'hono-ttd: 10' --data-binary '{&quot;temp&quot;: 5}' http://localhost:8080/telemetry/DEFAULT_TENANT/4711
-
-HTTP/1.1 200 OK
+HTTP/1.1 <span style="color:#ae81ff">200</span> OK
 hono-command: set
 hono-cmd-req-id: 1010a7249aa5-f742-4376-8458-bbfc88c72d92
-content-length: 23
+content-length: <span style="color:#ae81ff">23</span>
 
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
-
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
 <ul>
 <li>URI: <code>/telemetry/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>authorization</code>: The gateway&rsquo;s <em>auth-id</em> and plain text password encoded according to the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a>. If not set, the adapter expects the gateway to present a client certificate as part of the TLS handshake during connection establishment.</li>
 <li>(required) <code>content-type</code>: The type of payload contained in the request body.</li>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>qos-level</code>: The QoS level for publishing telemetry messages. The adapter supports <em>at most once</em> (<code>0</code>) and <em>at least once</em> (<code>1</code>) QoS levels. The default value of <code>0</code> is assumed if this header is omitted.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(required) Arbitrary payload encoded according to the given content type.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of payload contained in the response body. This header will only be present if the response contains a command to be executed by the device which requires input data.</li>
 <li>(optional) <code>hono-command</code>: The name of the command to execute. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-req-id</code>: An identifier that the device must include in its response to a command. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-target-device</code>: The id of the device that shall execute the command. This header will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 200.</li>
 <li>(optional) Error details, if status code is &gt;= 400.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>200 (OK): The telemetry data has been accepted for processing. The response contains a command for the device to execute.</li>
 <li>202 (Accepted): The telemetry data has been accepted for processing. Note that if the <code>qos-level</code> request header is omitted (<em>at most once</em> semantics),
@@ -2313,583 +2284,441 @@
 (<em>at least once</em> semantics), then the adapter waits for the message to be delivered and accepted by a downstream consumer before responding with
 this status code.</li>
 <li>400 (Bad Request): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>The content type header is missing.</li>
-<li>The request body is empty.</li>
-<li>The QoS header value is invalid.</li>
-</ul></li>
+* The content type header is missing.
+* The request body is empty.
+* The QoS header value is invalid.</li>
 <li>401 (Unauthorized): The request cannot be processed because the request does not contain valid credentials.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The tenant that the gateway belongs to is not allowed to use this protocol adapter.</li>
-<li>The device belongs to another tenant than the gateway.</li>
-<li>The gateway is not authorized to act <em>on behalf of</em> the device.</li>
-<li>The gateway associated with the device is not registered or disabled.</li>
-</ul></li>
+* The tenant that the gateway belongs to is not allowed to use this protocol adapter.
+* The device belongs to another tenant than the gateway.
+* The gateway is not authorized to act <em>on behalf of</em> the device.
+* The gateway associated with the device is not registered or disabled.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).</li>
-<li>If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be:
-
-<ul>
-<li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li>
-<li>The consumer failed to indicate in time whether it has processed the telemetry data.</li>
-</ul></li>
-</ul></li>
-</ul></li>
+* There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits).
+* If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be:
+* The consumer has indicated that it didn&rsquo;t process the telemetry data.
+* The consumer failed to indicate in time whether it has processed the telemetry data.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource can be used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the protocol adapter are used to authenticate the gateway whereas the parameters from the URI are used to identify the device that the gateway publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to publish data on behalf of the device implicitly by means of retrieving a <em>registration assertion</em> for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4712</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4712
 
-<pre><code class="language-sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H 'content-type: application/json' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4712
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p>Publish some JSON data for device <code>4712</code> using <em>at least once</em> QoS:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;qos-level: 1&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4712
 
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p>Publish some JSON data for device <code>4712</code>, indicating that the gateway will wait for 10 seconds to receive the response:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;hono-ttd: 10&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://localhost:8080/telemetry/DEFAULT_TENANT/4712
 
-<p>Publish some JSON data for device <code>4712</code> using <em>at least once</em> QoS:</p>
-
-<pre><code class="language-sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H 'content-type: application/json' -H 'qos-level: 1' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry/DEFAULT_TENANT/4712
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<p>Publish some JSON data for device <code>4712</code>, indicating that the gateway will wait for 10 seconds to receive the response:</p>
-
-<pre><code class="language-sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H 'content-type: application/json' -H 'hono-ttd: 10' --data-binary '{&quot;temp&quot;: 5}' http://localhost:8080/telemetry/DEFAULT_TENANT/4712
-
-HTTP/1.1 200 OK
+HTTP/1.1 <span style="color:#ae81ff">200</span> OK
 hono-command: set
 hono-cmd-req-id: 1010a7249aa5-f742-4376-8458-bbfc88c72d92
-content-length: 23
+content-length: <span style="color:#ae81ff">23</span>
 
-{
-  &quot;brightness&quot;: 87
-}
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code> which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
-
+<span style="color:#f92672">{</span>
+  <span style="color:#e6db74">&#34;brightness&#34;</span>: <span style="color:#ae81ff">87</span>
+<span style="color:#f92672">}</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code> which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
 <h2 id="publish-an-event-authenticated-device">Publish an Event (authenticated Device)</h2>
-
 <ul>
 <li>URI: <code>/event</code></li>
 <li>Method: <code>POST</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>authorization</code>: The device&rsquo;s <em>auth-id</em> and plain text password encoded according to the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a>. If not set, the adapter expects the device to present a client certificate as part of the TLS handshake during connection establishment.</li>
 <li>(required) <code>content-type</code>: The type of payload contained in the request body.</li>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
-<li>(optional) <code>hono-ttl</code>: The <em>time-to-live</em> in number of seconds for event messages.<br /></li>
-</ul></li>
+<li>(optional) <code>hono-ttl</code>: The <em>time-to-live</em> in number of seconds for event messages.</li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(required) Arbitrary payload encoded according to the given content type.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of payload contained in the response body. This header will only be present if the response contains a command to be executed by the device which requires input data.</li>
 <li>(optional) <code>hono-command</code>: The name of the command to execute. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-req-id</code>: An identifier that the device must include in its response to a command. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-target-device</code>: The id of the device that shall execute the command. This header will only be present if the response contains a command to be executed by the device and if the response goes to a gateway that acts on behalf of the target device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 200.</li>
 <li>(optional) Error details, if status code is &gt;= 400.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>200 (OK): The event has been accepted for processing. The response contains a command for the device to execute.</li>
 <li>202 (Accepted): The event has been accepted for processing.</li>
 <li>400 (Bad Request): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>The content type header is missing.</li>
-<li>The request body is empty but the event is not of type <a href="/hono/docs/dev/api/event/#empty-notification">empty-notification</a>.</li>
-</ul></li>
+* The content type header is missing.
+* The request body is empty but the event is not of type <a href="/hono/docs/dev/api/event/#empty-notification">empty-notification</a>.</li>
 <li>401 (Unauthorized): The request cannot be processed because the request does not contain valid credentials.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed because there is no consumer of events for the given tenant connected to Hono, or the consumer didn&rsquo;t process the event.</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to publish events. It is available only if the protocol adapter is configured to require devices to authenticate (which is the default).</p>
-
 <p><strong>Example</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;alarm&#34;: true}&#39;</span> http://127.0.0.1:8080/event
 
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' --data-binary '{&quot;alarm&quot;: true}' http://127.0.0.1:8080/event
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
 <ul>
 <li>URI: <code>/event/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(required) <code>content-type</code>: The type of payload contained in the request body.</li>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>hono-ttl</code>: The <em>time-to-live</em> in number of seconds for event messages.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(required) Arbitrary payload encoded according to the given content type.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of payload contained in the response body. This header will only be present if the response contains a command to be executed by the device which requires input data.</li>
 <li>(optional) <code>hono-command</code>: The name of the command to execute. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-req-id</code>: An identifier that the device must include in its response to a command. This header will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 200.</li>
 <li>(optional) Error details, if status code is &gt;= 400.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>200 (OK): The event has been accepted and put to a persistent store for delivery to consumers. The response contains a command for the device to execute.</li>
 <li>202 (Accepted): The event has been accepted and put to a persistent store for delivery to consumers.</li>
 <li>400 (Bad Request): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>The content type header is missing.</li>
-<li>The request body is empty but the event is not of type <a href="/hono/docs/dev/api/event/#empty-notification">empty-notification</a>.</li>
-</ul></li>
+* The content type header is missing.
+* The request body is empty but the event is not of type <a href="/hono/docs/dev/api/event/#empty-notification">empty-notification</a>.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed because there is no consumer of events for the given tenant connected to Hono, or the consumer didn&rsquo;t process the event.</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This resource MUST be used by devices that have not authenticated to the protocol adapter. Note that this requires the <code>HONO_HTTP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;alarm&#34;: true}&#39;</span> http://127.0.0.1:8080/event/DEFAULT_TENANT/4711
 
-<pre><code class="language-sh">curl -i -X PUT -H 'content-type: application/json' --data-binary '{&quot;alarm&quot;: true}' http://127.0.0.1:8080/event/DEFAULT_TENANT/4711
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
 <ul>
 <li>URI: <code>/event/${tenantId}/${deviceId}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>authorization</code>: The gateway&rsquo;s <em>auth-id</em> and plain text password encoded according to the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a>. If not set, the adapter expects the gateway to present a client certificate as part of the TLS handshake during connection establishment.</li>
 <li>(required) <code>content-type</code>: The type of payload contained in the request body.</li>
 <li>(optional) <code>hono-ttd</code>: The number of seconds the device will wait for the response.</li>
 <li>(optional) <code>hono-ttl</code>: The <em>time-to-live</em> in number of seconds for event messages.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(required) Arbitrary payload encoded according to the given content type.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of payload contained in the response body. This header will only be present if the response contains a command to be executed by the device which requires input data.</li>
 <li>(optional) <code>hono-command</code>: The name of the command to execute. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-req-id</code>: An identifier that the device must include in its response to a command. This header will only be present if the response contains a command to be executed by the device.</li>
 <li>(optional) <code>hono-cmd-target-device</code>: The id of the device that shall execute the command. This header will only be present if the response contains a command to be executed by the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Response Body:
-
 <ul>
 <li>(optional) Arbitrary data serving as input to a command to be executed by the device, if status code is 200.</li>
 <li>(optional) Error details, if status code is &gt;= 400.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>200 (OK): The event has been accepted and put to a persistent store for delivery to consumers. The response contains a command for the device to execute.</li>
 <li>202 (Accepted): The event has been accepted and put to a persistent store for delivery to consumers.</li>
 <li>400 (Bad Request): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>The content type header is missing.</li>
-<li>The request body is empty but the event is not of type <a href="/hono/docs/dev/api/event/#empty-notification">empty-notification</a>.</li>
-</ul></li>
+* The content type header is missing.
+* The request body is empty but the event is not of type <a href="/hono/docs/dev/api/event/#empty-notification">empty-notification</a>.</li>
 <li>401 (Unauthorized): The request cannot be processed because the request does not contain valid credentials.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The tenant that the gateway belongs to is not allowed to use this protocol adapter.</li>
-<li>The device belongs to another tenant than the gateway.</li>
-<li>The gateway is not authorized to act <em>on behalf of</em> the device.</li>
-<li>The gateway associated with the device is not registered or disabled.</li>
-</ul></li>
+* The tenant that the gateway belongs to is not allowed to use this protocol adapter.
+* The device belongs to another tenant than the gateway.
+* The gateway is not authorized to act <em>on behalf of</em> the device.
+* The gateway associated with the device is not registered or disabled.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed because there is no consumer of events for the given tenant connected to Hono, or the consumer didn&rsquo;t process the event.</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This resource can be used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the protocol adapter are used to authenticate the gateway whereas the parameters from the URI are used to identify the device that the gateway publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to publish data on behalf of the device implicitly by means of retrieving a <em>registration assertion</em> for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4712</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/event/DEFAULT_TENANT/4712
 
-<pre><code class="language-sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H 'content-type: application/json' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/event/DEFAULT_TENANT/4712
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code> which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
-
-<h2 id="command-control">Command &amp; Control</h2>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code> which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
+<h2 id="command--control">Command &amp; Control</h2>
 <p>The HTTP adapter enables devices to receive commands that have been sent by business applications. Commands are delivered to the device by means of an HTTP response message. That means a device first has to send a request, indicating how long it will wait for the response. That request can either be a telemetry or event message, with a <code>hono-ttd</code> header or query parameter (<code>ttd</code> for <code>time till disconnect</code>) specifying the number of seconds the device will wait for the response. The business application can react on that message by sending a command message, targeted at the device. The HTTP adapter will then send the command message as part of the HTTP response message with status <code>200</code> (OK) to the device. If the HTTP adapter receives no command message in the given time period, a <code>202</code> (Accepted) response will be sent to the device (provided the request was valid).</p>
-
 <h3 id="specifying-the-time-a-device-will-wait-for-a-response">Specifying the Time a Device will wait for a Response</h3>
-
 <p>The adapter lets devices indicate the number of seconds they will wait for a response by setting a header or a query parameter.</p>
-
 <h4 id="using-an-http-header">Using an HTTP Header</h4>
-
 <p>The (optional) <code>hono-ttd</code> header can be set in requests for publishing telemetry data or events.</p>
-
 <p>Example:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> -H <span style="color:#e6db74">&#39;hono-ttd: 60&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry
 
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' -H 'hono-ttd: 60' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<h4 id="using-a-query-parameter">Using a Query Parameter</h4>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><h4 id="using-a-query-parameter">Using a Query Parameter</h4>
 <p>Alternatively the <code>hono-ttd</code> query parameter can be used:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> http://127.0.0.1:8080/telemetry?hono-ttd<span style="color:#f92672">=</span><span style="color:#ae81ff">60</span>
 
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' --data-binary '{&quot;temp&quot;: 5}' http://127.0.0.1:8080/telemetry?hono-ttd=60
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<h3 id="commands-handled-by-gateways">Commands handled by gateways</h3>
-
-<p>Authenticated gateways will receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/#configuring-gateway-devices">Configuring Gateway Devices</a> for details.</p>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><h3 id="commands-handled-by-gateways">Commands handled by gateways</h3>
+<p>Authenticated gateways will receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/">Configuring Gateway Devices</a> for details.</p>
 <p>A gateway can send a request with the <code>hono-ttd</code> header or query parameter on the <code>/event</code> or <code>/telemetry</code> URI, indicating its readiness to receive a command for <em>any</em> device it acts on behalf of. Note that in this case, the business application will be notified with the gateway id in the <code>device_id</code> property of the downstream message.</p>
-
 <p>An authenticated gateway can also indicate its readiness to receive a command targeted at a <em>specific</em> device. For that, the <code>/event/${tenantId}/${deviceId}</code> or <code>/telemetry/${tenantId}/${deviceId}</code> URI is to be used, containing the id of the device to receive a command for. The business application will receive a notification with that device id.</p>
-
 <p>If there are multiple concurrent requests with a <code>hono-ttd</code> header or query parameter, sent by the command target device and/or one or more of its potential gateways, the HTTP adapter will choose the device or gateway to send the command to as follows:</p>
-
 <ul>
 <li>A request done by the command target device or by a gateway specifically done for that device, has precedence. If there are multiple, concurrent such requests, the last one will get the command message (if received) in its response. Note that the other requests won&rsquo;t be answered with a command message in their response event if the business application sent multiple command messages. That means commands for a single device can only be requested sequentially, not in parallel.</li>
 <li>If the above doesn&rsquo;t apply, a single <code>hono-ttd</code> request on the <code>/event</code> or <code>/telemetry</code> URI, sent by a gateway that the command target device is configured for, will get the command message in its response.</li>
 <li>If there are multiple, concurrent such requests by different gateways, all configured for the command target device, the request by the gateway will be chosen, through which the target device has last sent a telemetry or event message. If the target device hasn&rsquo;t sent a message yet and it is thereby unknown via which gateway the device communicates, then one of the requests will be chosen randomly to set the command in its response.</li>
 </ul>
-
 <h3 id="sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</h3>
-
 <ul>
 <li>URI: <code>/command/res/${commandRequestId}</code> or <code>/command/res/${commandRequestId}?hono-cmd-status=${status}</code></li>
 <li>Method: <code>POST</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>authorization</code>: The device&rsquo;s <em>auth-id</em> and plain text password encoded according to the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a>. If not set, the adapter expects the device to present a client certificate as part of the TLS handshake during connection establishment.</li>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of the payload contained in the request body. This header may be set if the result of processing the command on the device is non-empty. In this case the result data is contained in the request body.</li>
 <li>(optional) <code>hono-cmd-status</code>: The status of the command execution. If not set, the adapter expects that the URI contains it
 as request parameter at the end.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary data representing the result of processing the command on the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>202 (Accepted): The response has been successfully delivered to the application that has sent the command.</li>
 <li>400 (Bad Request): The request cannot be processed because the command status is missing.</li>
-<li>401 (Unauthorized): The request cannot be processed because the request does not contain valid credentials.<br /></li>
+<li>401 (Unauthorized): The request cannot be processed because the request does not contain valid credentials.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this include:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no application listening for a reply to the given <em>commandRequestId</em>.</li>
-<li>The application has already given up on waiting for a response.</li>
-</ul></li>
-</ul></li>
+* There is no application listening for a reply to the given <em>commandRequestId</em>.
+* The application has already given up on waiting for a response.</li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to respond to commands. It is available only if the protocol adapter is configured to require devices to authenticate (which is the default).</p>
-
 <p><strong>Example</strong></p>
-
 <p>Send a response to a previously received command with the command-request-id <code>req-id-uuid</code> for device <code>4711</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;brightness-changed&#34;: true}&#39;</span> http://127.0.0.1:8080/command/res/req-id-uuid?hono-cmd-status<span style="color:#f92672">=</span><span style="color:#ae81ff">200</span>
 
-<pre><code class="language-sh">curl -i -u sensor1@DEFAULT_TENANT:hono-secret -H 'content-type: application/json' --data-binary '{&quot;brightness-changed&quot;: true}' http://127.0.0.1:8080/command/res/req-id-uuid?hono-cmd-status=200
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<h3 id="sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</h3>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><h3 id="sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</h3>
 <ul>
 <li>URI: <code>/command/res/${tenantId}/${deviceId}/${commandRequestId}</code> or <code>/command/res/${tenantId}/${deviceId}/${commandRequestId}?hono-cmd-status=${status}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of the payload contained in the request body (the outcome of processing the command).</li>
 <li>(optional) <code>hono-cmd-status</code>: The status of the command execution. If not set, the adapter expects that the URI contains it
 as request parameter at the end.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary data representing the result of processing the command on the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>202 (Accepted): The response has been successfully delivered to the application that has sent the command.</li>
 <li>400 (Bad Request): The request cannot be processed because the command status is missing.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this might be:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no application listening for a reply to the given <em>commandRequestId</em>.</li>
-<li>The application has already given up on waiting for a response.</li>
-</ul></li>
-</ul></li>
+* There is no application listening for a reply to the given <em>commandRequestId</em>.
+* The application has already given up on waiting for a response.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource MUST be used by devices that have not authenticated to the protocol adapter. Note that this requires the <code>HONO_HTTP_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Send a response to a previously received command with the command-request-id <code>req-id-uuid</code> for the unauthenticated device <code>4711</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;brightness-changed&#34;: true}&#39;</span> http://127.0.0.1:8080/command/res/DEFAULT_TENANT/4711/req-id-uuid?hono-cmd-status<span style="color:#f92672">=</span><span style="color:#ae81ff">200</span>
 
-<pre><code class="language-sh">curl -i -X PUT -H 'content-type: application/json' --data-binary '{&quot;brightness-changed&quot;: true}' http://127.0.0.1:8080/command/res/DEFAULT_TENANT/4711/req-id-uuid?hono-cmd-status=200
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<h3 id="sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</h3>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><h3 id="sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</h3>
 <ul>
 <li>URI: <code>/command/res/${tenantId}/${deviceId}/${commandRequestId}</code> or <code>/command/res/${tenantId}/${deviceId}/${commandRequestId}?hono-cmd-status=${status}</code></li>
 <li>Method: <code>PUT</code></li>
 <li>Request Headers:
-
 <ul>
 <li>(optional) <code>authorization</code>: The gateway&rsquo;s <em>auth-id</em> and plain text password encoded according to the <a href="https://tools.ietf.org/html/rfc7617">Basic HTTP authentication scheme</a>. If not set, the adapter expects the gateway to present a client certificate as part of the TLS handshake during connection establishment.</li>
 <li>(optional) <code>content-type</code>: A media type describing the semantics and format of the payload contained in the request body (the outcome of processing the command).</li>
 <li>(optional) <code>hono-cmd-status</code>: The status of the command execution. If not set, the adapter expects that the URI contains it
 as request parameter at the end.</li>
-</ul></li>
+</ul>
+</li>
 <li>Request Body:
-
 <ul>
 <li>(optional) Arbitrary data representing the result of processing the command on the device.</li>
-</ul></li>
+</ul>
+</li>
 <li>Status Codes:
-
 <ul>
 <li>202 (Accepted): The response has been successfully delivered to the application that has sent the command.</li>
 <li>400 (Bad Request): The request cannot be processed because the command status is missing.</li>
 <li>403 (Forbidden): The request cannot be processed because the device&rsquo;s registration status cannot be asserted. Possible reasons for this might be:
-
-<ul>
-<li>The given tenant is not allowed to use this protocol adapter.</li>
-<li>The given device does not belong to the given tenant.</li>
-<li>The gateway is not authorized to act <em>on behalf of</em> the device.</li>
-<li>The gateway associated with the device is not registered or disabled.</li>
-</ul></li>
+* The given tenant is not allowed to use this protocol adapter.
+* The given device does not belong to the given tenant.
+* The gateway is not authorized to act <em>on behalf of</em> the device.
+* The gateway associated with the device is not registered or disabled.</li>
 <li>404 (Not Found): The request cannot be processed because the device is disabled or does not exist.</li>
 <li>413 (Request Entity Too Large): The request cannot be processed because the request body exceeds the maximum supported size.</li>
 <li>429 (Too Many Requests): The request cannot be processed because the tenant&rsquo;s message limit for the current period is exceeded.</li>
 <li>503 (Service Unavailable): The request cannot be processed. Possible reasons for this include:
-
-<ul>
-<li>There is no application listening for a reply to the given <em>commandRequestId</em>.</li>
-<li>The application has already given up on waiting for a response.</li>
-</ul></li>
-</ul></li>
+* There is no application listening for a reply to the given <em>commandRequestId</em>.
+* The application has already given up on waiting for a response.</li>
 </ul>
-
+</li>
+</ul>
 <p>This resource can be used by <em>gateway</em> components to send the response to a command <em>on behalf of</em> other devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the protocol adapter are used to authenticate the gateway whereas the parameters from the URI are used to identify the device that the gateway publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to send responses to a command on behalf of the device implicitly by means of retrieving a <em>registration assertion</em> for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Send a response to a previously received command with the command-request-id <code>req-id-uuid</code> for device <code>4712</code>:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H <span style="color:#e6db74">&#39;content-type: application/json&#39;</span> --data-binary <span style="color:#e6db74">&#39;{&#34;brightness-changed&#34;: true}&#39;</span> http://127.0.0.1:8080/command/res/DEFAULT_TENANT/4712/req-id-uuid?hono-cmd-status<span style="color:#f92672">=</span><span style="color:#ae81ff">200</span>
 
-<pre><code class="language-sh">curl -i -X PUT -u gw@DEFAULT_TENANT:gw-secret -H 'content-type: application/json' --data-binary '{&quot;brightness-changed&quot;: true}' http://127.0.0.1:8080/command/res/DEFAULT_TENANT/4712/req-id-uuid?hono-cmd-status=200
-
-HTTP/1.1 202 Accepted
-content-length: 0
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code> which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
-
+HTTP/1.1 <span style="color:#ae81ff">202</span> Accepted
+content-length: <span style="color:#ae81ff">0</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that a gateway device has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code> which is authorized to publish data <em>on behalf of</em> device <code>4712</code>.</p>
 <h2 id="downstream-meta-data">Downstream Meta Data</h2>
-
 <p>The adapter includes the following meta data in the application properties of messages being sent downstream:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>device_id</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The identifier of the device that the message originates from.</td>
+<td style="text-align:left"><em>device_id</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The identifier of the device that the message originates from.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_adapter</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The HTTP adapter&rsquo;s type name is <code>hono-http</code>.</td>
+<td style="text-align:left"><em>orig_adapter</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The HTTP adapter&rsquo;s type name is <code>hono-http</code>.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_address</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the (relative) URI that the device has originally posted the data to.</td>
+<td style="text-align:left"><em>orig_address</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the (relative) URI that the device has originally posted the data to.</td>
 </tr>
-
 <tr>
-<td align="left"><em>ttd</em></td>
-<td align="left"><em>integer</em></td>
-<td align="left">Contains the effective number of seconds that the device will wait for a response. This property is only set if the HTTP request contains the <code>hono-ttd</code> header or request parameter.</td>
+<td style="text-align:left"><em>ttd</em></td>
+<td style="text-align:left"><em>integer</em></td>
+<td style="text-align:left">Contains the effective number of seconds that the device will wait for a response. This property is only set if the HTTP request contains the <code>hono-ttd</code> header or request parameter.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The adapter also considers <em>defaults</em> registered for the device at either the <a href="/hono/docs/dev/api/tenant/#tenant-information-format">tenant</a> or the <a href="/hono/docs/dev/api/device-registration/#assert-device-registration">device level</a>. The values of the default properties are determined as follows:</p>
-
 <ol>
 <li>If the message already contains a non-empty property of the same name, the value if unchanged.</li>
 <li>Otherwise, if a default property of the same name is defined in the device&rsquo;s registration information, that value is used.</li>
 <li>Otherwise, if a default property of the same name is defined for the tenant that the device belongs to, that value is used.</li>
 </ol>
-
 <p>Note that of the standard AMQP 1.0 message properties only the <em>content-type</em> and <em>ttl</em> can be set this way to a default value.</p>
-
 <h3 id="event-message-time-to-live">Event Message Time-to-live</h3>
-
 <p>Events published by devices will usually be persisted by the AMQP Messaging Network in order to support deferred delivery to downstream consumers.
 In most cases the AMQP Messaging Network can be configured with a maximum <em>time-to-live</em> to apply to the events so that the events will be removed
 from the persistent store if no consumer has attached to receive the event before the message expires.</p>
-
 <p>In order to support environments where the AMQP Messaging Network cannot be configured accordingly, the protocol adapter supports setting a
 downstream event message&rsquo;s <em>ttl</em> property based on the <em>hono-ttl</em> property set as a header or a query parameter in the event requests by the devices.
-Also the default <em>ttl</em> and <em>max-ttl</em> values can be configured for a tenant/device as described in the <a href="/hono/docs/dev/api/tenant/#resource-limits-configuration-format">Tenant API</a>.</p>
-
+Also the default <em>ttl</em> and <em>max-ttl</em> values can be configured for a tenant/device as described in the [Tenant API]
+(/hono/docs/dev/api/tenant/#resource-limits-configuration-format).</p>
 <h2 id="tenant-specific-configuration">Tenant specific Configuration</h2>
-
 <p>The adapter uses the <a href="/hono/docs/dev/api/tenant/#get-tenant-information">Tenant API</a> to retrieve <em>tenant specific configuration</em> for adapter type <code>hono-http</code>.
 The following properties are (currently) supported:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Default Value</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Default Value</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>enabled</em></td>
-<td align="left"><em>boolean</em></td>
-<td align="left"><code>true</code></td>
-<td align="left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
+<td style="text-align:left"><em>enabled</em></td>
+<td style="text-align:left"><em>boolean</em></td>
+<td style="text-align:left"><code>true</code></td>
+<td style="text-align:left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
 </tr>
-
 <tr>
-<td align="left"><em>max-ttd</em></td>
-<td align="left"><em>integer</em></td>
-<td align="left"><code>60</code></td>
-<td align="left">Defines a tenant specific upper limit for the <em>time until disconnect</em> property that devices may include in requests for uploading telemetry data or events. Please refer to the <a href="/hono/docs/dev/concepts/command-and-control/">Command &amp; Control concept page</a> for a discussion of this parameter&rsquo;s purpose and usage.<br>This property can be set for the <code>hono-http</code> adapter type as an <em>extension</em> property in the adapter section of the tenant configuration.<br>If it is not set, then the default value of <code>60</code> seconds is used.</td>
+<td style="text-align:left"><em>max-ttd</em></td>
+<td style="text-align:left"><em>integer</em></td>
+<td style="text-align:left"><code>60</code></td>
+<td style="text-align:left">Defines a tenant specific upper limit for the <em>time until disconnect</em> property that devices may include in requests for uploading telemetry data or events. Please refer to the <a href="/hono/docs/dev/concepts/command-and-control/">Command &amp; Control concept page</a> for a discussion of this parameter&rsquo;s purpose and usage.<br>This property can be set for the <code>hono-http</code> adapter type as an <em>extension</em> property in the adapter section of the tenant configuration.<br>If it is not set, then the default value of <code>60</code> seconds is used.</td>
 </tr>
 </tbody>
 </table>
@@ -4016,19 +3845,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844324"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844324"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844324"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844324"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844324"></script>
+    <script src="/hono/docs/js/learn.js?1617844324"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844324"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844324" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844324"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/index.html b/docs/dev/user-guide/index.html
index a1e4b00..19d6290 100644
--- a/docs/dev/user-guide/index.html
+++ b/docs/dev/user-guide/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>User Guide :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/" selected>dev</option>
@@ -1969,11 +2015,8 @@
 
 
 
-	
-
-<h1 id="user-guide">User Guide</h1>
-
-<p>Learn how Eclipse Hono&trade; enables you to quickly send data from devices to business applications and vice versa.</p>
+	<h1 id="user-guide">User Guide</h1>
+<p>Learn how Eclipse Hono™ enables you to quickly send data from devices to business applications and vice versa.</p>
 
 
 
@@ -3099,19 +3142,19 @@
     <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?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757973"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757973"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757973"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757973"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844323"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844323"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844323"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844323"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757973"></script>
-    <script src="/hono/docs/js/learn.js?1617757973"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757973"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844323"></script>
+    <script src="/hono/docs/js/learn.js?1617844323"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844323"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757973" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757973"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844323" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844323"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/index.xml b/docs/dev/user-guide/index.xml
index 84bf77d..f40258b 100644
--- a/docs/dev/user-guide/index.xml
+++ b/docs/dev/user-guide/index.xml
@@ -1,22 +1,19 @@
-<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
+<?xml version="1.0" encoding="utf-8" standalone="yes"?>
 <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
   <channel>
     <title>User Guide on Eclipse Hono&amp;trade; Vers.: dev</title>
     <link>https://www.eclipse.org/hono/docs/dev/user-guide/</link>
     <description>Recent content in User Guide on Eclipse Hono&amp;trade; Vers.: dev</description>
     <generator>Hugo -- gohugo.io</generator>
-    <language>en-us</language>
-    
-	<atom:link href="https://www.eclipse.org/hono/docs/dev/user-guide/index.xml" rel="self" type="application/rss+xml" />
-    
-    
+    <language>en-us</language><atom:link href="https://www.eclipse.org/hono/docs/dev/user-guide/index.xml" rel="self" type="application/rss+xml" />
     <item>
       <title>MongoDB Based Device Registry</title>
       <link>https://www.eclipse.org/hono/docs/dev/user-guide/mongodb-based-device-registry/</link>
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/mongodb-based-device-registry/</guid>
-      <description>The MongoDB based Device Registry component provides implementations of Hono&amp;rsquo;s Tenant API, Device Registration API and Credentials API. As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information. Protocol adapters use these APIs to determine a device&amp;rsquo;s registration status, e.g. if it is enabled and if it is registered with a particular tenant, and to authenticate a device before accepting any data for processing from it.</description>
+      <description>The MongoDB based Device Registry component provides implementations of Hono&amp;rsquo;s Tenant API, Device Registration API and Credentials API. As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information. Protocol adapters use these APIs to determine a device&amp;rsquo;s registration status, e.g. if it is enabled and if it is registered with a particular tenant, and to authenticate a device before accepting any data for processing from it.
+In addition to the above APIs, this Device Registry also exposes HTTP endpoints for managing the contents of the Device Registry according to the Device Registry Management API.</description>
     </item>
     
     <item>
@@ -25,7 +22,8 @@
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/jdbc-based-device-registry/</guid>
-      <description>The JDBC based Device Registry component provides implementations of Hono&amp;rsquo;s Tenant API, Device Registration API and Credentials API. As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information. Protocol adapters use these APIs to determine a device&amp;rsquo;s registration status, e.g. if it is enabled and if it is registered with a particular tenant, and to authenticate a device before accepting any data for processing from it.</description>
+      <description>The JDBC based Device Registry component provides implementations of Hono&amp;rsquo;s Tenant API, Device Registration API and Credentials API. As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information. Protocol adapters use these APIs to determine a device&amp;rsquo;s registration status, e.g. if it is enabled and if it is registered with a particular tenant, and to authenticate a device before accepting any data for processing from it.
+In addition to the above APIs, this Device Registry also exposes HTTP endpoints for managing the contents of the Device Registry according to the Device Registry Management API.</description>
     </item>
     
     <item>
@@ -43,7 +41,7 @@
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/http-adapter/</guid>
-      <description>&lt;p&gt;The HTTP protocol adapter exposes HTTP based endpoints for Eclipse Hono&amp;trade;&amp;rsquo;s south bound Telemetry, Event and Command &amp;amp; Control APIs.&lt;/p&gt;</description>
+      <description>&lt;p&gt;The HTTP protocol adapter exposes HTTP based endpoints for Eclipse Hono™&amp;rsquo;s south bound Telemetry, Event and Command &amp;amp; Control APIs.&lt;/p&gt;</description>
     </item>
     
     <item>
@@ -62,7 +60,7 @@
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/amqp-adapter/</guid>
       <description>&lt;p&gt;The AMQP protocol adapter allows clients (devices or gateway components) supporting the AMQP 1.0 protocol to publish
-messages to Eclipse Hono&amp;trade;&amp;rsquo;s Telemetry, Event and Command &amp;amp; Control endpoints.&lt;/p&gt;</description>
+messages to Eclipse Hono™&amp;rsquo;s Telemetry, Event and Command &amp;amp; Control endpoints.&lt;/p&gt;</description>
     </item>
     
     <item>
@@ -71,7 +69,7 @@
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/coap-adapter/</guid>
-      <description>&lt;p&gt;The CoAP protocol adapter exposes &lt;a href=&#34;https://tools.ietf.org/html/rfc7252&#34;&gt;CoAP&lt;/a&gt; based endpoints for Eclipse Hono&amp;trade;&amp;rsquo;s south bound Telemetry, Event and Command &amp;amp; Control APIs.&lt;/p&gt;</description>
+      <description>&lt;p&gt;The CoAP protocol adapter exposes &lt;a href=&#34;https://tools.ietf.org/html/rfc7252&#34;&gt;CoAP&lt;/a&gt; based endpoints for Eclipse Hono™&amp;rsquo;s south bound Telemetry, Event and Command &amp;amp; Control APIs.&lt;/p&gt;</description>
     </item>
     
     <item>
@@ -80,7 +78,7 @@
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/kura-adapter/</guid>
-      <description>&lt;p&gt;The Kura protocol adapter exposes an MQTT topic hierarchy allowing Eclipse Kura&amp;trade; based gateways to publish &lt;em&gt;control&lt;/em&gt; and &lt;em&gt;data&lt;/em&gt; messages to Eclipse Hono&amp;trade;&amp;rsquo;s Telemetry and Event endpoints.&lt;/p&gt;</description>
+      <description>&lt;p&gt;The Kura protocol adapter exposes an MQTT topic hierarchy allowing Eclipse Kura™ based gateways to publish &lt;em&gt;control&lt;/em&gt; and &lt;em&gt;data&lt;/em&gt; messages to Eclipse Hono™&amp;rsquo;s Telemetry and Event endpoints.&lt;/p&gt;</description>
     </item>
     
     <item>
@@ -99,10 +97,10 @@
       <pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate>
       
       <guid>https://www.eclipse.org/hono/docs/dev/user-guide/device-registry/</guid>
-      <description>Eclipse Hono&amp;trade; provides these device registry implementations:
+      <description>Eclipse Hono™ provides these device registry implementations:
 File Based Device Registry
 MongoDB Based Device Registry.</description>
     </item>
     
   </channel>
-</rss>
\ No newline at end of file
+</rss>
diff --git a/docs/dev/user-guide/jdbc-based-device-registry/index.html b/docs/dev/user-guide/jdbc-based-device-registry/index.html
index ea9fd76..65136cf 100644
--- a/docs/dev/user-guide/jdbc-based-device-registry/index.html
+++ b/docs/dev/user-guide/jdbc-based-device-registry/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>JDBC Based Device Registry :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/jdbc-based-device-registry/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/jdbc-based-device-registry/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/jdbc-based-device-registry/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/jdbc-based-device-registry/">1.6</option>
@@ -1690,6 +1722,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/jdbc-based-device-registry/" selected>dev</option>
@@ -1808,14 +1842,11 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#managing-tenants">Managing Tenants</a></li>
-<li><a href="#managing-devices">Managing Devices</a></li>
-<li><a href="#managing-credentials">Managing Credentials</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#managing-tenants">Managing Tenants</a></li>
+    <li><a href="#managing-devices">Managing Devices</a></li>
+    <li><a href="#managing-credentials">Managing Credentials</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -1839,32 +1870,21 @@
         
 
 
-
-
 <p>The JDBC based Device Registry component provides implementations of Hono&rsquo;s <a href="/hono/docs/dev/api/tenant/">Tenant API</a>, <a href="/hono/docs/dev/api/device-registration/">Device Registration API</a> and <a href="/hono/docs/dev/api/credentials/">Credentials API</a>. As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information. Protocol adapters use these APIs to determine a device&rsquo;s registration status, e.g. if it is enabled and if it is registered with a particular tenant, and to authenticate a device before accepting any data for processing from it.</p>
-
 <p>In addition to the above APIs, this Device Registry also exposes HTTP endpoints for managing the contents of the Device Registry according to the <a href="/hono/docs/dev/api/management/">Device Registry Management API</a>. It uses a JDBC compliant database to persist the data. By default, this registry supports H2 and PostgreSQL. For more information on how to configure the JDBC based device registry, see <a href="/hono/docs/dev/admin-guide/jdbc-device-registry-config/">JDBC based Device Registry configuration</a>.</p>
-
 <h2 id="managing-tenants">Managing Tenants</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#tenants">Device Registry Management API</a> for information about managing tenants.</p>
-
 <div class="alert alert-warning">
     <h4 class="alert-heading"><i class="fas fa-exclamation-triangle"></i> Warning</h4>
     <div>The JDBC based device registry doesn&rsquo;t support <a href="/hono/docs/dev/api/management/#tenants/searchTenants">search tenants</a> operation defined by the Device Registry Management API.</div>
 </div>
-
 <h2 id="managing-devices">Managing Devices</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#devices">Device Registry Management API</a> for information about managing devices.</p>
-
 <div class="alert alert-warning">
     <h4 class="alert-heading"><i class="fas fa-exclamation-triangle"></i> Warning</h4>
     <div>The JDBC based device registry doesn&rsquo;t support <a href="/hono/docs/dev/api/management/#devices/searchDevicesForTenant">search devices</a> operation defined by the Device Registry Management API.</div>
 </div>
-
 <h2 id="managing-credentials">Managing Credentials</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#credentials">Device Registry Management API</a> for information about managing credentials.</p>
 
 
@@ -2990,19 +3010,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844323"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844323"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844323"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844323"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844323"></script>
+    <script src="/hono/docs/js/learn.js?1617844323"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844323"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844323" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844323"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/kura-adapter/index.html b/docs/dev/user-guide/kura-adapter/index.html
index 5bc07d8..ebb947a 100644
--- a/docs/dev/user-guide/kura-adapter/index.html
+++ b/docs/dev/user-guide/kura-adapter/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>Kura Adapter :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/kura-adapter/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/kura-adapter/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/kura-adapter/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/kura-adapter/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/kura-adapter/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/kura-adapter/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/kura-adapter/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/kura-adapter/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/kura-adapter/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/kura-adapter/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/kura-adapter/" selected>dev</option>
@@ -1964,29 +2010,29 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#authentication">Authentication</a>
-<ul>
-<li><a href="#client-certificate">Client Certificate</a></li>
-<li><a href="#username-password">Username/Password</a></li>
-</ul></li>
-<li><a href="#resource-limit-checks">Resource Limit Checks</a>
-<ul>
-<li><a href="#connection-limits">Connection Limits</a></li>
-<li><a href="#connection-duration-limits">Connection Duration Limits</a></li>
-<li><a href="#message-limits">Message Limits</a></li>
-</ul></li>
-<li><a href="#connection-events">Connection Events</a></li>
-<li><a href="#publishing-data">Publishing Data</a></li>
-<li><a href="#downstream-meta-data">Downstream Meta Data</a>
-<ul>
-<li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
-</ul></li>
-<li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#authentication">Authentication</a>
+      <ul>
+        <li><a href="#client-certificate">Client Certificate</a></li>
+        <li><a href="#usernamepassword">Username/Password</a></li>
+      </ul>
+    </li>
+    <li><a href="#resource-limit-checks">Resource Limit Checks</a>
+      <ul>
+        <li><a href="#connection-limits">Connection Limits</a></li>
+        <li><a href="#connection-duration-limits">Connection Duration Limits</a></li>
+        <li><a href="#message-limits">Message Limits</a></li>
+      </ul>
+    </li>
+    <li><a href="#connection-events">Connection Events</a></li>
+    <li><a href="#publishing-data">Publishing Data</a></li>
+    <li><a href="#downstream-meta-data">Downstream Meta Data</a>
+      <ul>
+        <li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
+      </ul>
+    </li>
+    <li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -2010,23 +2056,17 @@
         
 
 
-<p>The Kura protocol adapter exposes an MQTT topic hierarchy allowing Eclipse Kura&trade; based gateways to publish <em>control</em> and <em>data</em> messages to Eclipse Hono&trade;&rsquo;s Telemetry and Event endpoints.</p>
-
+<p>The Kura protocol adapter exposes an MQTT topic hierarchy allowing Eclipse Kura™ based gateways to publish <em>control</em> and <em>data</em> messages to Eclipse Hono™&rsquo;s Telemetry and Event endpoints.</p>
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div>The Kura adapter is supposed to be used with gateways running Kura version 3.x. Gateways running Kura version 4 and later should connect to the MQTT adapter instead.</div>
 </div>
-
 <h2 id="authentication">Authentication</h2>
-
 <p>The Kura adapter by default requires devices (gateways) to authenticate during connection establishment.
 The adapter supports both the authentication based on the username/password provided in an MQTT CONNECT packet as well as client
 certificate based authentication as part of a TLS handshake for that purpose.</p>
-
 <p>The adapter tries to authenticate the device using these mechanisms in the following order</p>
-
 <h3 id="client-certificate">Client Certificate</h3>
-
 <p>When a device uses a client certificate for authentication during the TLS handshake, the adapter tries to determine the tenant
 that the device belongs to based on the <em>issuer DN</em> contained in the certificate.
 In order for the lookup to succeed, the tenant&rsquo;s trust anchor needs to be configured by means of registering the
@@ -2035,73 +2075,50 @@
 In a second step, the adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record, including the client
 certificate&rsquo;s <em>subject DN</em> as the <em>auth-id</em>, <code>x509-cert</code> as the <em>type</em> of secret and the MQTT client identifier as <em>client-id</em> in the
 request payload.</p>
-
-<p><strong>NB</strong> The adapter needs to be <a href="/hono/docs/dev/admin-guide/secure_communication/#mqtt-adapter">configured for TLS</a> in order to support this mechanism.</p>
-
-<h3 id="username-password">Username/Password</h3>
-
+<p><strong>NB</strong> The adapter needs to be <a href="/hono/docs/dev/admin-guide/secure_communication/">configured for TLS</a> in order to support this mechanism.</p>
+<h3 id="usernamepassword">Username/Password</h3>
 <p>When a device wants to authenticate using this mechanism, it needs to provide a <em>username</em> and a <em>password</em> in the MQTT <em>CONNECT</em> packet
 it sends in order to initiate the connection. The <em>username</em> must have the form <em>auth-id@tenant</em>, e.g. <code>sensor1@DEFAULT_TENANT</code>.
 The adapter verifies the credentials provided by the client against the credentials that the
-<a href="/hono/docs/dev/admin-guide/common-config/#credentials-service-connection-configuration">configured Credentials service</a> has on record for the client.
+<a href="/hono/docs/dev/admin-guide/common-config/">configured Credentials service</a> has on record for the client.
 The adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record, including the <em>tenant</em> and <em>auth-id</em> provided
 by the client in the <em>username</em>, <code>hashed-password</code> as the <em>type</em> of secret and the MQTT client identifier as <em>client-id</em> in the request payload.</p>
-
 <p>Please refer to the <a href="http://eclipse.github.io/kura/config/cloud-services.html">Eclipse Kura documentation</a> on how to configure the
 gateway&rsquo;s cloud service connection accordingly. It is important to set the gateway&rsquo;s <em>topic.context.account-name</em> to the ID of the
 Hono tenant that the gateway has been registered with whereas the gateway&rsquo;s <em>client-id</em> needs to be set to the corresponding Hono
 device ID. The <em>auth-id</em> used as part of the gateway&rsquo;s <em>username</em> property needs to match the authentication identifier of a set of
 credentials registered for the device ID in Hono&rsquo;s Credentials service. In other words, the credentials configured on the gateway
 need to belong to the corresponding device ID.</p>
-
 <p><strong>NB</strong> There is a subtle difference between the <em>device identifier</em> (<em>device-id</em>) and the <em>auth-id</em> a device uses for authentication.
 See <a href="/hono/docs/dev/concepts/device-identity/">Device Identity</a> for a discussion of the concepts.</p>
-
 <h2 id="resource-limit-checks">Resource Limit Checks</h2>
-
 <p>The adapter performs additional checks regarding resource limits when a client tries to connect and/or send a message to the adapter.</p>
-
 <h3 id="connection-limits">Connection Limits</h3>
-
 <p>The adapter rejects a client&rsquo;s connection attempt with return code <code>0x05</code>, indicating <code>Connection Refused: not authorized</code>, if</p>
-
 <ul>
 <li>the maximum number of connections per protocol adapter instance is reached, or</li>
 <li>if the maximum number of simultaneously connected devices for the tenant is reached.</li>
 </ul>
-
 <p>Please refer to <a href="/hono/docs/dev/concepts/resource-limits/">resource-limits</a> for details.</p>
-
 <h3 id="connection-duration-limits">Connection Duration Limits</h3>
-
 <p>The adapter rejects a client&rsquo;s connection attempt with return code <code>0x05</code>, indicating <code>Connection Refused: not authorized</code>, if the
-<a href="/hono/docs/dev/concepts/resource-limits/#connection-duration-limit">connection duration limit</a> that has been configured for
+<a href="/hono/docs/dev/concepts/resource-limits/">connection duration limit</a> that has been configured for
 the client&rsquo;s tenant is exceeded.</p>
-
 <h3 id="message-limits">Message Limits</h3>
-
 <p>The adapter</p>
-
 <ul>
 <li>discards any MQTT PUBLISH packet containing telemetry data or an event that is sent by a client and</li>
 <li>rejects any AMQP 1.0 message containing a command sent by a north bound application</li>
 </ul>
-
 <p>if the <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> that has been configured for the device&rsquo;s tenant is exceeded.</p>
-
 <h2 id="connection-events">Connection Events</h2>
-
 <p>The adapter can emit <a href="/hono/docs/dev/api/event/#connection-event">Connection Events</a> for client connections being established and/or terminated.
-Please refer to the <a href="/hono/docs/dev/admin-guide/common-config/#connection-event-producer-configuration">common configuration options</a>
+Please refer to the <a href="/hono/docs/dev/admin-guide/common-config/">common configuration options</a>
 for details regarding how to enable this behavior.</p>
-
 <p>The adapter includes the <em>client identifier</em> from the client&rsquo;s MQTT CONNECT packet as the Connection Event&rsquo;s <em>remote-id</em>.</p>
-
 <h2 id="publishing-data">Publishing Data</h2>
-
 <p>Once the gateway has established a connection to the Kura adapter, all <em>control</em> and <em>data</em> messages published by applications running on
 the gateway are sent to the adapter and mapped to Hono&rsquo;s Telemetry and Event API endpoints as follows:</p>
-
 <ol>
 <li>The adapter treats all messages that are published to a topic starting with the configured <code>HONO_KURA_CONTROL_PREFIX</code> as control messages.
 All other messages are considered to be data messages.</li>
@@ -2110,85 +2127,70 @@
 <li><em>data</em> messages with QoS 0 are forwarded to the telemetry endpoint whereas messages with QoS 1 are forwarded to the event endpoint.
 The corresponding AMQP 1.0 messages that are sent downstream have a content type of <code>application/vnd.eclipse.kura-data</code>.</li>
 </ol>
-
 <h2 id="downstream-meta-data">Downstream Meta Data</h2>
-
 <p>The adapter includes the following meta data in messages being sent downstream:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Location</th>
-<th align="left">Type</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Location</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>device_id</em></td>
-<td align="left"><em>application</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The identifier of the device that the message originates from.</td>
+<td style="text-align:left"><em>device_id</em></td>
+<td style="text-align:left"><em>application</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The identifier of the device that the message originates from.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_adapter</em></td>
-<td align="left"><em>application</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The Kura adapter&rsquo;s type name is <code>hono-kura-mqtt</code>.</td>
+<td style="text-align:left"><em>orig_adapter</em></td>
+<td style="text-align:left"><em>application</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The Kura adapter&rsquo;s type name is <code>hono-kura-mqtt</code>.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_address</em></td>
-<td align="left"><em>application</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the name of the MQTT topic that the Kura gateway has originally published the data to.</td>
+<td style="text-align:left"><em>orig_address</em></td>
+<td style="text-align:left"><em>application</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the name of the MQTT topic that the Kura gateway has originally published the data to.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The adapter also considers <em>defaults</em> registered for the device at either the <a href="/hono/docs/dev/api/tenant/#tenant-information-format">tenant</a> or the <a href="/hono/docs/dev/api/device-registration/#assert-device-registration">device level</a>. The values of the default properties are determined as follows:</p>
-
 <ol>
 <li>If the message already contains a non-empty property of the same name, the value if unchanged.</li>
 <li>Otherwise, if a default property of the same name is defined in the device&rsquo;s registration information, that value is used.</li>
 <li>Otherwise, if a default property of the same name is defined for the tenant that the device belongs to, that value is used.</li>
 </ol>
-
 <p>Note that of the standard AMQP 1.0 message properties only the <em>content-type</em> and <em>ttl</em> can be set this way to a default value.</p>
-
 <h3 id="event-message-time-to-live">Event Message Time-to-live</h3>
-
 <p>Events published by devices will usually be persisted by the AMQP Messaging Network in order to support deferred delivery to downstream consumers.
 In most cases the AMQP Messaging Network can be configured with a maximum <em>time-to-live</em> to apply to the events so that the events will be removed
 from the persistent store if no consumer has attached to receive the event before the message expires.</p>
-
 <p>In order to support environments where the AMQP Messaging Network cannot be configured accordingly, the protocol adapter supports setting a
-downstream event message&rsquo;s <em>ttl</em> property based on the default <em>ttl</em> and <em>max-ttl</em> values configured for a tenant/device as described in the <a href="/hono/docs/dev/api/tenant/#resource-limits-configuration-format">Tenant API</a>.</p>
-
+downstream event message&rsquo;s <em>ttl</em> property based on the default <em>ttl</em> and <em>max-ttl</em> values configured for a tenant/device as described in the [Tenant API]
+(/hono/docs/dev/api/tenant/#resource-limits-configuration-format).</p>
 <h2 id="tenant-specific-configuration">Tenant specific Configuration</h2>
-
 <p>The adapter uses the <a href="/hono/docs/dev/api/tenant/#get-tenant-information">Tenant API</a> to retrieve <em>tenant specific configuration</em> for adapter type <code>hono-kura-mqtt</code>.
 The following properties are (currently) supported:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Default Value</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Default Value</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>enabled</em></td>
-<td align="left"><em>boolean</em></td>
-<td align="left"><code>true</code></td>
-<td align="left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
+<td style="text-align:left"><em>enabled</em></td>
+<td style="text-align:left"><em>boolean</em></td>
+<td style="text-align:left"><code>true</code></td>
+<td style="text-align:left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
 </tr>
 </tbody>
 </table>
@@ -3315,19 +3317,19 @@
     <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?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757973"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757973"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757973"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757973"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844324"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844324"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844324"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844324"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757973"></script>
-    <script src="/hono/docs/js/learn.js?1617757973"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757973"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844324"></script>
+    <script src="/hono/docs/js/learn.js?1617844324"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844324"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757973" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757973"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844324" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844324"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/mongodb-based-device-registry/index.html b/docs/dev/user-guide/mongodb-based-device-registry/index.html
index 18f70f9..a8a3030 100644
--- a/docs/dev/user-guide/mongodb-based-device-registry/index.html
+++ b/docs/dev/user-guide/mongodb-based-device-registry/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>MongoDB Based Device Registry :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/mongodb-based-device-registry/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/mongodb-based-device-registry/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/mongodb-based-device-registry/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/mongodb-based-device-registry/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/mongodb-based-device-registry/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/mongodb-based-device-registry/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/mongodb-based-device-registry/">1.3</option>
@@ -1768,6 +1806,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/mongodb-based-device-registry/" selected>dev</option>
@@ -1886,15 +1926,12 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#authentication">Authentication</a></li>
-<li><a href="#managing-tenants">Managing Tenants</a></li>
-<li><a href="#managing-devices">Managing Devices</a></li>
-<li><a href="#managing-credentials">Managing Credentials</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#authentication">Authentication</a></li>
+    <li><a href="#managing-tenants">Managing Tenants</a></li>
+    <li><a href="#managing-devices">Managing Devices</a></li>
+    <li><a href="#managing-credentials">Managing Credentials</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -1918,26 +1955,15 @@
         
 
 
-
-
 <p>The MongoDB based Device Registry component provides implementations of Hono&rsquo;s <a href="/hono/docs/dev/api/tenant/">Tenant API</a>, <a href="/hono/docs/dev/api/device-registration/">Device Registration API</a> and <a href="/hono/docs/dev/api/credentials/">Credentials API</a>. As such it exposes AMQP 1.0 based endpoints for retrieving the relevant information. Protocol adapters use these APIs to determine a device&rsquo;s registration status, e.g. if it is enabled and if it is registered with a particular tenant, and to authenticate a device before accepting any data for processing from it.</p>
-
 <p>In addition to the above APIs, this Device Registry also exposes HTTP endpoints for managing the contents of the Device Registry according to the <a href="/hono/docs/dev/api/management/">Device Registry Management API</a>. It uses a MongoDB database to persist the data. The credentials, device and tenant information are stored in separate collections in a MongoDB database. For more information on how to configure the MongoDB based device registry, see <a href="/hono/docs/dev/admin-guide/mongodb-device-registry-config/">MongoDB based Device Registry configuration</a>.</p>
-
 <h2 id="authentication">Authentication</h2>
-
-<p>This Device Registry secures its HTTP Endpoints using basic authentication mechanism. Thereby the clients connecting to the MongoDB based Device Registry are required to authenticate. For more information on how to enable the authentication and configure it, please refer to the <code>hono.registry.http.authenticationRequired</code> property in the <a href="/hono/docs/dev/admin-guide/mongodb-device-registry-config/#service-configuration">MongoDB based Device Registry configuration</a>.</p>
-
+<p>This Device Registry secures its HTTP Endpoints using basic authentication mechanism. Thereby the clients connecting to the MongoDB based Device Registry are required to authenticate. For more information on how to enable the authentication and configure it, please refer to the <code>hono.registry.http.authenticationRequired</code> property in the <a href="/hono/docs/dev/admin-guide/mongodb-device-registry-config/">MongoDB based Device Registry configuration</a>.</p>
 <h2 id="managing-tenants">Managing Tenants</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#tenants">Device Registry Management API</a> for information about managing tenants.</p>
-
 <h2 id="managing-devices">Managing Devices</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#devices">Device Registry Management API</a> for information about managing devices.</p>
-
 <h2 id="managing-credentials">Managing Credentials</h2>
-
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#credentials">Device Registry Management API</a> for information about managing credentials.</p>
 
 
@@ -3060,19 +3086,19 @@
     <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?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757973"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757973"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757973"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757973"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844323"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844323"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844323"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844323"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844323"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757973"></script>
-    <script src="/hono/docs/js/learn.js?1617757973"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757973"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844323"></script>
+    <script src="/hono/docs/js/learn.js?1617844323"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844323"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757973" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757973"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844323" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844323"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/mqtt-adapter/index.html b/docs/dev/user-guide/mqtt-adapter/index.html
index 3d15304..6e8bf80 100644
--- a/docs/dev/user-guide/mqtt-adapter/index.html
+++ b/docs/dev/user-guide/mqtt-adapter/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>MQTT Adapter :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/mqtt-adapter/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/mqtt-adapter/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/mqtt-adapter/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/mqtt-adapter/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/mqtt-adapter/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/mqtt-adapter/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/mqtt-adapter/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/mqtt-adapter/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/mqtt-adapter/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/mqtt-adapter/" selected>dev</option>
@@ -1964,54 +2010,56 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#authentication">Authentication</a>
-<ul>
-<li><a href="#client-certificate">Client Certificate</a></li>
-<li><a href="#username-password">Username/Password</a></li>
-</ul></li>
-<li><a href="#resource-limit-checks">Resource Limit Checks</a>
-<ul>
-<li><a href="#connection-limits">Connection Limits</a></li>
-<li><a href="#connection-duration-limits">Connection Duration Limits</a></li>
-<li><a href="#message-limits">Message Limits</a></li>
-</ul></li>
-<li><a href="#connection-events">Connection Events</a></li>
-<li><a href="#publishing-telemetry-data">Publishing Telemetry Data</a></li>
-<li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
-<li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
-<li><a href="#publishing-events">Publishing Events</a></li>
-<li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
-<li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
-<li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
-<li><a href="#command-control">Command &amp; Control</a>
-<ul>
-<li><a href="#receiving-commands-authenticated-device">Receiving Commands (authenticated Device)</a></li>
-<li><a href="#receiving-commands-unauthenticated-device">Receiving Commands (unauthenticated Device)</a></li>
-<li><a href="#receiving-commands-authenticated-gateway">Receiving Commands (authenticated Gateway)</a></li>
-<li><a href="#sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</a></li>
-<li><a href="#sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</a></li>
-<li><a href="#sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</a></li>
-</ul></li>
-<li><a href="#error-reporting-via-error-topic">Error Reporting via Error Topic</a>
-<ul>
-<li><a href="#receiving-error-messages-authenticated-device">Receiving Error Messages (authenticated Device)</a></li>
-<li><a href="#receiving-error-messages-unauthenticated-device">Receiving Error Messages (unauthenticated Device)</a></li>
-<li><a href="#receiving-error-messages-authenticated-gateway">Receiving Error Messages (authenticated Gateway)</a></li>
-<li><a href="#error-message-payload">Error Message Payload</a></li>
-</ul></li>
-<li><a href="#error-handling">Error Handling</a></li>
-<li><a href="#custom-message-mapping">Custom Message Mapping</a></li>
-<li><a href="#downstream-meta-data">Downstream Meta Data</a>
-<ul>
-<li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
-</ul></li>
-<li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#authentication">Authentication</a>
+      <ul>
+        <li><a href="#client-certificate">Client Certificate</a></li>
+        <li><a href="#usernamepassword">Username/Password</a></li>
+      </ul>
+    </li>
+    <li><a href="#resource-limit-checks">Resource Limit Checks</a>
+      <ul>
+        <li><a href="#connection-limits">Connection Limits</a></li>
+        <li><a href="#connection-duration-limits">Connection Duration Limits</a></li>
+        <li><a href="#message-limits">Message Limits</a></li>
+      </ul>
+    </li>
+    <li><a href="#connection-events">Connection Events</a></li>
+    <li><a href="#publishing-telemetry-data">Publishing Telemetry Data</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</a></li>
+    <li><a href="#publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</a></li>
+    <li><a href="#publishing-events">Publishing Events</a></li>
+    <li><a href="#publish-an-event-authenticated-device">Publish an Event (authenticated Device)</a></li>
+    <li><a href="#publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</a></li>
+    <li><a href="#publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</a></li>
+    <li><a href="#command--control">Command &amp; Control</a>
+      <ul>
+        <li><a href="#receiving-commands-authenticated-device">Receiving Commands (authenticated Device)</a></li>
+        <li><a href="#receiving-commands-unauthenticated-device">Receiving Commands (unauthenticated Device)</a></li>
+        <li><a href="#receiving-commands-authenticated-gateway">Receiving Commands (authenticated Gateway)</a></li>
+        <li><a href="#sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</a></li>
+        <li><a href="#sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</a></li>
+        <li><a href="#sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</a></li>
+      </ul>
+    </li>
+    <li><a href="#error-reporting-via-error-topic">Error Reporting via Error Topic</a>
+      <ul>
+        <li><a href="#receiving-error-messages-authenticated-device">Receiving Error Messages (authenticated Device)</a></li>
+        <li><a href="#receiving-error-messages-unauthenticated-device">Receiving Error Messages (unauthenticated Device)</a></li>
+        <li><a href="#receiving-error-messages-authenticated-gateway">Receiving Error Messages (authenticated Gateway)</a></li>
+        <li><a href="#error-message-payload">Error Message Payload</a></li>
+      </ul>
+    </li>
+    <li><a href="#error-handling">Error Handling</a></li>
+    <li><a href="#custom-message-mapping">Custom Message Mapping</a></li>
+    <li><a href="#downstream-meta-data">Downstream Meta Data</a>
+      <ul>
+        <li><a href="#event-message-time-to-live">Event Message Time-to-live</a></li>
+      </ul>
+    </li>
+    <li><a href="#tenant-specific-configuration">Tenant specific Configuration</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -2036,9 +2084,7 @@
 
 
 <p>The MQTT protocol adapter exposes an MQTT topic hierarchy for publishing telemetry data and events to downstream consumers and for receiving commands from applications and sending back responses.</p>
-
 <p>The MQTT adapter is <strong>not</strong> a general purpose MQTT broker. In particular the adapter</p>
-
 <ul>
 <li>supports MQTT 3.1.1 only.</li>
 <li>does not maintain session state for clients and thus always sets the <em>session present</em> flag in its CONNACK packet to <code>0</code>, regardless of the value  of the <em>clean session</em> flag provided in a client&rsquo;s CONNECT packet.</li>
@@ -2046,17 +2092,12 @@
 <li>only supports topic names/filters for devices to publish and subscribe to that are specific to Hono&rsquo;s functionality as described in the following sections.</li>
 <li>does not support <em>retaining</em> messages. However, if an event or telemetry message&rsquo;s <em>retain</em> flag is set to <code>1</code> then the corresponding AMQP 1.0 message being sent downstream by the adapter will contain an <em>x-opt-retain</em> message annotation containing the boolean value <code>true</code>. A downstream consumer may then react according to the presence of this annotation.</li>
 </ul>
-
 <h2 id="authentication">Authentication</h2>
-
 <p>The MQTT adapter by default requires clients (devices or gateway components) to authenticate during connection establishment.
 The adapter supports both the authentication based on the username/password provided in an MQTT CONNECT packet as well as client
 certificate based authentication as part of a TLS handshake for that purpose.</p>
-
 <p>The adapter tries to authenticate the device using these mechanisms in the following order</p>
-
 <h3 id="client-certificate">Client Certificate</h3>
-
 <p>When a device uses a client certificate for authentication during the TLS handshake, the adapter tries to determine the tenant
 that the device belongs to based on the <em>issuer DN</em> contained in the certificate.
 In order for the lookup to succeed, the tenant&rsquo;s trust anchor needs to be configured by means of registering the
@@ -2065,940 +2106,658 @@
 In a second step, the adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record, including the client
 certificate&rsquo;s <em>subject DN</em> as the <em>auth-id</em>, <code>x509-cert</code> as the <em>type</em> of secret and the MQTT client identifier as <em>client-id</em> in the
 request payload.</p>
-
-<p><strong>NB</strong> The adapter needs to be <a href="/hono/docs/dev/admin-guide/secure_communication/#mqtt-adapter">configured for TLS</a> in order to support this mechanism.</p>
-
-<h3 id="username-password">Username/Password</h3>
-
+<p><strong>NB</strong> The adapter needs to be <a href="/hono/docs/dev/admin-guide/secure_communication/">configured for TLS</a> in order to support this mechanism.</p>
+<h3 id="usernamepassword">Username/Password</h3>
 <p>When a device wants to authenticate using this mechanism, it needs to provide a <em>username</em> and a <em>password</em> in the MQTT <em>CONNECT</em> packet
 it sends in order to initiate the connection. The <em>username</em> must have the form <em>auth-id@tenant</em>, e.g. <code>sensor1@DEFAULT_TENANT</code>.
 The adapter verifies the credentials provided by the client against the credentials that the
-<a href="/hono/docs/dev/admin-guide/common-config/#credentials-service-connection-configuration">configured Credentials service</a> has on record for the client.
+<a href="/hono/docs/dev/admin-guide/common-config/">configured Credentials service</a> has on record for the client.
 The adapter uses the Credentials API&rsquo;s <em>get</em> operation to retrieve the credentials on record, including the <em>tenant</em> and <em>auth-id</em> provided
 by the client in the <em>username</em>, <code>hashed-password</code> as the <em>type</em> of secret and the MQTT client identifier as <em>client-id</em> in the request payload.</p>
-
 <p>The examples below refer to devices <code>4711</code> and <code>gw-1</code> of tenant <code>DEFAULT_TENANT</code> using <em>auth-ids</em> <code>sensor1</code> and <code>gw1</code> and corresponding passwords.
 The example deployment as described in the <a href="/hono/docs/dev/deployment/">Deployment Guides</a> comes pre-configured with the corresponding entities in its device registry component.</p>
-
 <p><strong>NB</strong> There is a subtle difference between the <em>device identifier</em> (<em>device-id</em>) and the <em>auth-id</em> a device uses for authentication.
 See <a href="/hono/docs/dev/concepts/device-identity/">Device Identity</a> for a discussion of the concepts.</p>
-
 <h2 id="resource-limit-checks">Resource Limit Checks</h2>
-
 <p>The adapter performs additional checks regarding <a href="/hono/docs/dev/concepts/resource-limits/">resource limits</a> when a client tries to connect and/or
 send a message to the adapter.</p>
-
 <h3 id="connection-limits">Connection Limits</h3>
-
 <p>The adapter rejects a client’s connection attempt with return code</p>
-
 <ul>
 <li><code>0x03</code> (<em>Connection Refused: server unavailable</em>), if the maximum number of connections per protocol adapter instance is reached</li>
 <li><code>0x05</code> (<em>Connection Refused: not authorized</em>), if the maximum number of simultaneously connected devices for the tenant is reached.</li>
 </ul>
-
 <h3 id="connection-duration-limits">Connection Duration Limits</h3>
-
 <p>The adapter rejects a client’s connection attempt with return code <code>0x05</code> (<em>Connection Refused: not authorized</em>), if the
-<a href="/hono/docs/dev/concepts/resource-limits/#connection-duration-limit">connection duration limit</a> that has been configured for the client’s tenant is exceeded.</p>
-
+<a href="/hono/docs/dev/concepts/resource-limits/">connection duration limit</a> that has been configured for the client’s tenant is exceeded.</p>
 <h3 id="message-limits">Message Limits</h3>
-
 <p>The adapter</p>
-
 <ul>
 <li>rejects a client&rsquo;s connection attempt with return code <code>0x05</code> (<em>Connection Refused: not authorized</em>),</li>
 <li>discards any MQTT PUBLISH packet containing telemetry data or an event that is sent by a client and</li>
 <li>rejects any AMQP 1.0 message containing a command sent by a north bound application</li>
 </ul>
-
 <p>if the <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> that has been configured for the device’s tenant is exceeded.</p>
-
 <h2 id="connection-events">Connection Events</h2>
-
 <p>The adapter can emit <a href="/hono/docs/dev/api/event/#connection-event">Connection Events</a> for client connections being established and/or terminated.
-Please refer to the <a href="/hono/docs/dev/admin-guide/common-config/#connection-event-producer-configuration">common configuration options</a>
+Please refer to the <a href="/hono/docs/dev/admin-guide/common-config/">common configuration options</a>
 for details regarding how to enable this behavior.</p>
-
 <p>The adapter includes the <em>client identifier</em> from the client&rsquo;s MQTT CONNECT packet as the Connection Event&rsquo;s <em>remote-id</em>.</p>
-
 <h2 id="publishing-telemetry-data">Publishing Telemetry Data</h2>
-
 <p>The MQTT adapter supports the publishing of telemetry data by means of MQTT <em>PUBLISH</em> packets using either QoS 0 or QoS 1.
 Using QoS 1 will result in the adapter sending an MQTT <em>PUBACK</em> packet to the client once the message has been settled with the <em>accepted</em> outcome by the AMQP 1.0 Messaging Network.</p>
-
 <p>This requires that</p>
-
 <ul>
 <li>the AMQP 1.0 Messaging Network has capacity to process telemetry messages for the client&rsquo;s tenant and</li>
 <li>the messages published by the client comply with the format defined by the Telemetry API.</li>
 </ul>
-
-<p>The protocol adapter checks the configured <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> before accepting any telemetry messages. An exceeded message limit will cause an error.</p>
-
+<p>The protocol adapter checks the configured [message limit] (/hono/docs/dev/concepts/resource-limits/) before accepting any telemetry messages. An exceeded message limit will cause an error.</p>
 <p>Any kind of error when processing an incoming telemetry message will be reported back to the client if the client has subscribed on a dedicated error topic. See <a href="#error-reporting-via-error-topic">Error Reporting via Error Topic</a> for details.</p>
-
 <p>If such an error subscription by the client exists, the error will by default be ignored after it got published on the error topic, otherwise the connection to the client will be closed. The handling of errors can further be controlled by means of an <em>on-error</em> property bag parameter set on the telemetry message topic. Refer to <a href="#error-handling">Error Handling</a> for details.</p>
-
 <p>The devices can optionally indicate the content type of the payload by setting the <em>content-type</em> property explicitly in the <code>property-bag</code>. The <code>property-bag</code> is an optional collection of properties intended for the receiver of the message. A property bag is only allowed at the very end of a topic. It always starts with a <code>/?</code> character, followed by pairs of URL encoded property names and values that are separated by <code>&amp;</code>. For example, a property bag containing two properties <em>seqNo</em> and <em>importance</em> looks like this: <code>/topic/name/?seqNo=10034&amp;importance=high</code>.</p>
-
 <h2 id="publish-telemetry-data-authenticated-device">Publish Telemetry Data (authenticated Device)</h2>
-
 <ul>
 <li>Topic: <code>telemetry</code> or <code>t</code></li>
 <li>Authentication: required</li>
 <li>Payload:
-
 <ul>
 <li>(required) Arbitrary payload</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to publish telemetry data. It is available only if the protocol adapter is configured to require devices to authenticate (which is the default). When using this topic, the MQTT adapter determines the device&rsquo;s tenant and device identity as part of the authentication process.</p>
-
 <p><strong>Example</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'sensor1@DEFAULT_TENANT' -P hono-secret -t telemetry -m '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code> using a client certificate for authentication:</p>
-
-<pre><code class="language-sh"># in base directory of Hono repository:
-mosquitto_pub -p 8883 -t telemetry -m '{&quot;temp&quot;: 5}' --cert demo-certs/certs/device-4711-cert.pem --key demo-certs/certs/device-4711-key.pem --cafile demo-certs/certs/trusted-certs.pem
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that the MQTT adapter is <a href="/hono/docs/dev/admin-guide/secure_communication/#mqtt-adapter">configured for TLS</a> and the secure port is used.</p>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;sensor1@DEFAULT_TENANT&#39;</span> -P hono-secret -t telemetry -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> using a client certificate for authentication:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh"><span style="color:#75715e"># in base directory of Hono repository:</span>
+mosquitto_pub -p <span style="color:#ae81ff">8883</span> -t telemetry -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> --cert demo-certs/certs/device-4711-cert.pem --key demo-certs/certs/device-4711-key.pem --cafile demo-certs/certs/trusted-certs.pem
+</code></pre></div><p><strong>NB</strong> The example above assumes that the MQTT adapter is <a href="/hono/docs/dev/admin-guide/secure_communication/">configured for TLS</a> and the secure port is used.</p>
 <h2 id="publish-telemetry-data-unauthenticated-device">Publish Telemetry Data (unauthenticated Device)</h2>
-
 <ul>
 <li>Topic: <code>telemetry/${tenant-id}/${device-id}</code> or <code>t/${tenant-id}/${device-id}</code></li>
 <li>Authentication: none</li>
 <li>Payload:
-
 <ul>
 <li>(required) Arbitrary payload</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This topic can be used by devices that have not authenticated to the protocol adapter. Note that this requires the
 <code>HONO_MQTT_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -t telemetry/DEFAULT_TENANT/4711 -m '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -t telemetry/DEFAULT_TENANT/4711 -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><h2 id="publish-telemetry-data-authenticated-gateway">Publish Telemetry Data (authenticated Gateway)</h2>
 <ul>
 <li>Topic: <code>telemetry/${tenant-id}/${device-id}</code> or <code>t/${tenant-id}/${device-id}</code></li>
 <li>Authentication: required</li>
 <li>Payload:
-
 <ul>
 <li>(required) Arbitrary payload</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This topic can be used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the protocol adapter are used to authenticate the gateway whereas the parameters from the topic name are used to identify the device that the gateway publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to publish data on behalf of the device implicitly by means of retrieving a <em>registration assertion</em> for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4712</code> via gateway <code>gw-1</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'gw@DEFAULT_TENANT' -P gw-secret -t telemetry/DEFAULT_TENANT/4712 -m '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that a gateway device with ID <code>gw-1</code> has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code>.</p>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;gw@DEFAULT_TENANT&#39;</span> -P gw-secret -t telemetry/DEFAULT_TENANT/4712 -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that a gateway device with ID <code>gw-1</code> has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code>.</p>
 <h2 id="publishing-events">Publishing Events</h2>
-
 <p>The MQTT adapter supports the publishing of events by means of MQTT <em>PUBLISH</em> packets using QoS 1 only.
 The adapter will send an MQTT <em>PUBACK</em> packet to the client once the event has been settled with the <em>accepted</em> outcome by the AMQP 1.0 Messaging Network.</p>
-
 <p>This requires that</p>
-
 <ul>
 <li>the AMQP 1.0 Messaging Network has capacity to process events for the client&rsquo;s tenant and</li>
 <li>the events published by the client comply with the format defined by the Event API.</li>
 </ul>
-
-<p>The protocol adapter checks the configured <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> before accepting any event messages. An exceeded message limit will cause an error.</p>
-
+<p>The protocol adapter checks the configured [message limit] (/hono/docs/dev/concepts/resource-limits/) before accepting any event messages. An exceeded message limit will cause an error.</p>
 <p>Any kind of error when processing an incoming event message will be reported back to the client if the client has subscribed on a dedicated error topic. See <a href="#error-reporting-via-error-topic">Error Reporting via Error Topic</a> for details.</p>
-
 <p>If such an error subscription by the client exists, the error will by default be ignored after it got published on the error topic, otherwise the connection to the client will be closed. The handling of errors can further be controlled by means of an <em>on-error</em> property bag parameter set on the event message topic. Refer to <a href="#error-handling">Error Handling</a> for details.</p>
-
 <p>The devices can optionally indicate a <em>time-to-live</em> duration for event messages and the content type of the payload by setting the <em>hono-ttl</em> and <em>content-type</em> properties explicitly in the <code>property-bag</code>. The <code>property-bag</code> is an optional collection of properties intended for the receiver of the message. A property bag is only allowed at the very end of a topic. It always starts with a <code>/?</code> character, followed by pairs of URL encoded property names and values that are separated by <code>&amp;</code>. For example, a property bag containing two properties <em>seqNo</em> and <em>importance</em> looks like this: <code>/topic/name/?seqNo=10034&amp;importance=high</code>.</p>
-
 <p>The MQTT adapter currently does not use any properties except <em>hono-ttl</em>.</p>
-
 <h2 id="publish-an-event-authenticated-device">Publish an Event (authenticated Device)</h2>
-
 <ul>
 <li>Topic: <code>event</code> or <code>e</code></li>
 <li>Authentication: required</li>
 <li>Payload:
-
 <ul>
 <li>(required) Arbitrary payload</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This is the preferred way for devices to publish events. It is available only if the protocol adapter has been configured to require devices to authenticate (which is the default).</p>
-
 <p><strong>Example</strong></p>
-
 <p>Upload a JSON string for device <code>4711</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'sensor1@DEFAULT_TENANT' -P hono-secret -t event -q 1 -m '{&quot;alarm&quot;: 1}'
-</code></pre>
-
-<p>Upload a JSON string for device <code>4711</code> with <code>time-to-live</code> as 10 seconds:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'sensor1@DEFAULT_TENANT' -P hono-secret -t event/?hono-ttl=10 -q 1 -m '{&quot;alarm&quot;: 1}'
-</code></pre>
-
-<h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;sensor1@DEFAULT_TENANT&#39;</span> -P hono-secret -t event -q <span style="color:#ae81ff">1</span> -m <span style="color:#e6db74">&#39;{&#34;alarm&#34;: 1}&#39;</span>
+</code></pre></div><p>Upload a JSON string for device <code>4711</code> with <code>time-to-live</code> as 10 seconds:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;sensor1@DEFAULT_TENANT&#39;</span> -P hono-secret -t event/?hono-ttl<span style="color:#f92672">=</span><span style="color:#ae81ff">10</span> -q <span style="color:#ae81ff">1</span> -m <span style="color:#e6db74">&#39;{&#34;alarm&#34;: 1}&#39;</span>
+</code></pre></div><h2 id="publish-an-event-unauthenticated-device">Publish an Event (unauthenticated Device)</h2>
 <ul>
 <li>Topic: <code>event/${tenant-id}/${device-id}</code> or <code>e/${tenant-id}/${device-id}</code></li>
 <li>Authentication: none</li>
 <li>Payload:
-
 <ul>
 <li>(required) Arbitrary payload</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This topic can be used by devices that have not authenticated to the protocol adapter. Note that this requires the
 <code>HONO_MQTT_AUTHENTICATION_REQUIRED</code> configuration property to be explicitly set to <code>false</code>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4711</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -t event/DEFAULT_TENANT/4711 -q 1 -m '{&quot;alarm&quot;: 1}'
-</code></pre>
-
-<p>Publish some JSON data for device <code>4711</code> with <code>time-to-live</code> as 15 seconds:</p>
-
-<pre><code class="language-sh">mosquitto_pub -t event/DEFAULT_TENANT/4711/?hono-ttl=15 -q 1 -m '{&quot;alarm&quot;: 1}'
-</code></pre>
-
-<h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -t event/DEFAULT_TENANT/4711 -q <span style="color:#ae81ff">1</span> -m <span style="color:#e6db74">&#39;{&#34;alarm&#34;: 1}&#39;</span>
+</code></pre></div><p>Publish some JSON data for device <code>4711</code> with <code>time-to-live</code> as 15 seconds:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -t event/DEFAULT_TENANT/4711/?hono-ttl<span style="color:#f92672">=</span><span style="color:#ae81ff">15</span> -q <span style="color:#ae81ff">1</span> -m <span style="color:#e6db74">&#39;{&#34;alarm&#34;: 1}&#39;</span>
+</code></pre></div><h2 id="publish-an-event-authenticated-gateway">Publish an Event (authenticated Gateway)</h2>
 <ul>
 <li>Topic: <code>event/${tenant-id}/${device-id}</code> or <code>e/${tenant-id}/${device-id}</code></li>
 <li>Authentication: required</li>
 <li>Payload:
-
 <ul>
 <li>(required) Arbitrary payload</li>
-</ul></li>
 </ul>
-
+</li>
+</ul>
 <p>This topic can be used by <em>gateway</em> components to publish data <em>on behalf of</em> other devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. In this case the credentials provided by the gateway during connection establishment with the protocol adapter are used to authenticate the gateway whereas the parameters from the topic name are used to identify the device that the gateway publishes data for.</p>
-
 <p>The protocol adapter checks the gateway&rsquo;s authority to publish data on behalf of the device implicitly by means of retrieving a <em>registration assertion</em> for the device from the <a href="/hono/docs/dev/admin-guide/common-config/#device-registration-service-connection-configuration">configured Device Registration service</a>.</p>
-
 <p><strong>Examples</strong></p>
-
 <p>Publish some JSON data for device <code>4712</code> via gateway <code>gw-1</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'gw@DEFAULT_TENANT' -P gw-secret -t event/DEFAULT_TENANT/4712 -q 1 -m '{&quot;temp&quot;: 5}'
-</code></pre>
-
-<p><strong>NB</strong> The example above assumes that a gateway device with ID <code>gw-1</code> has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code>.</p>
-
-<h2 id="command-control">Command &amp; Control</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;gw@DEFAULT_TENANT&#39;</span> -P gw-secret -t event/DEFAULT_TENANT/4712 -q <span style="color:#ae81ff">1</span> -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span>
+</code></pre></div><p><strong>NB</strong> The example above assumes that a gateway device with ID <code>gw-1</code> has been registered with <code>hashed-password</code> credentials with <em>auth-id</em> <code>gw</code> and password <code>gw-secret</code>.</p>
+<h2 id="command--control">Command &amp; Control</h2>
 <p>The MQTT adapter enables devices to receive commands that have been sent by business applications by means of sending an MQTT <em>SUBSCRIBE</em> packet containing a device specific <em>topic filter</em> as described below. Devices can subscribe with QoS 1 or QoS 0. The adapter indicates the outcome of the subscription request by sending back a corresponding <em>SUBACK</em> packet. The SUBACK packet will contain <em>Success - QoS 0</em> (<code>0x00</code>) or <em>Success - QoS 1</em> (<code>0x01</code>) for a valid command topic filter indicating QoS 0 or 1 and will contain the <em>Failure</em> (<code>0x80</code>) value for an invalid or unsupported filter. When a device no longer wants to receive commands anymore, it can send an MQTT <em>UNSUBSCRIBE</em> packet to the adapter, including the same topic filter that has been used to subscribe.</p>
-
 <p>When a device has successfully subscribed, the adapter sends an <a href="/hono/docs/dev/api/event/#empty-notification">empty notification</a> on behalf of the device to the downstream AMQP 1.0 Messaging Network with the <em>ttd</em> header set to <code>-1</code>, indicating that the device will be ready to receive commands until further notice. Analogously, the adapter sends an empty notification with the <em>ttd</em> header set to <code>0</code> when a device unsubscribes from commands.</p>
-
 <p>Commands can be sent following a <em>request/response</em> pattern or being <em>one-way</em>.</p>
-
 <p>For <em>Request/Response</em> commands, devices send their responses to commands by means of sending an MQTT <em>PUBLISH</em> message to a topic that is specific to the command that has been executed. The MQTT adapter accepts responses being published using either QoS 0 or QoS 1.</p>
-
-<p>The MQTT adapter checks the configured <a href="/hono/docs/dev/concepts/resource-limits/">message limit</a> before accepting any command requests and responses. In case of incoming command requests from business applications, if the message limit is exceeded, the Adapter rejects the message with the reason <code>amqp:resource-limit-exceeded</code>. And for the incoming command responses from devices, the Adapter rejects the message and closes the connection to the client.</p>
-
+<p>The MQTT adapter checks the configured [message limit] (/hono/docs/dev/concepts/resource-limits/) before accepting any command requests and responses. In case of incoming command requests from business applications, if the message limit is exceeded, the Adapter rejects the message with the reason <code>amqp:resource-limit-exceeded</code>. And for the incoming command responses from devices, the Adapter rejects the message and closes the connection to the client.</p>
 <p>The following sections define the topic filters/names to use for subscribing to and responding to commands. The following <em>shorthand</em> versions of topic path segments are supported:</p>
-
 <ul>
 <li><code>c</code> instead of <code>command</code></li>
 <li><code>q</code> instead of <code>req</code></li>
 <li><code>s</code> instead of <code>res</code></li>
 </ul>
-
 <p>The following variables are used:</p>
-
 <ul>
 <li><code>${command}</code> : An arbitrary string that indicates the command to execute, e.g. <code>setBrightness</code>. The command is provided by the application that sends the command.</li>
 <li><code>${req-id}</code> (only for <em>Request/Response</em> commands) : The unique identifier of the command execution request. The identifier is passed to the device as part of the name of the topic that the command is published to. The device needs to publish its response to the command to a topic which includes this identifier, thus allowing the adapter to correlate the response with the request.</li>
 <li><code>${status}</code> : The HTTP status code indicating the outcome of executing the command. This status code is passed on to the application in the AMQP message&rsquo;s <em>status</em> application property.</li>
 </ul>
-
 <h3 id="receiving-commands-authenticated-device">Receiving Commands (authenticated Device)</h3>
-
 <p>An authenticated device MUST use the following topic filter for subscribing to commands:</p>
-
 <p><code>command/[${tenant-id}]/[${device-id}]/req/#</code></p>
-
 <p>Both the tenant and the device ID are optional. If specified, they MUST match the authenticated device&rsquo;s tenant and/or device ID.
 Note that the <em>authentication identifier</em> used in the device&rsquo;s credentials is <em>not</em> necessarily the same as the device ID.</p>
-
 <p>The protocol adapter will publish commands for the device to the following topic names</p>
-
 <ul>
 <li><strong>one-way</strong> <code>command/${tenant-id}/${device-id}/req//${command}</code></li>
 <li><strong>request-response</strong> <code>command/${tenant-id}/${device-id}/req/${req-id}/${command}</code></li>
 </ul>
-
 <p>The <em>tenant-id</em> and/or <em>device-id</em> will be included in the topic name if the tenant and/or device ID had been included
 in the topic filter used for subscribing to commands.</p>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Deprecation</h4>
     <div>Previous versions of Hono required authenticated devices to use <code>command/+/+/req/#</code> for subscribing to commands.
 This old topic filter is deprecated. Devices MAY still use it until support for it will be removed in a future Hono version.</div>
 </div>
-
 <p><strong>Examples</strong></p>
-
 <p>The following command can be used to subscribe to commands resulting in command messages being published to a
 topic that does not include tenant nor device ID:</p>
-
-<pre><code class="language-sh">mosquitto_sub -v -u 'sensor1@DEFAULT_TENANT' -P hono-secret -t command///req/#
-</code></pre>
-
-<p>A request/response command with name <code>setBrightness</code> from an application might look like this:</p>
-
-<pre><code class="language-plaintext">command///req/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_sub -v -u <span style="color:#e6db74">&#39;sensor1@DEFAULT_TENANT&#39;</span> -P hono-secret -t command///req/#
+</code></pre></div><p>A request/response command with name <code>setBrightness</code> from an application might look like this:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">command///req/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>A corresponding <em>one-way</em> command might look like this:</p>
-
-<pre><code class="language-plaintext">command///req//setBrightness
+</code></pre></div><p>A corresponding <em>one-way</em> command might look like this:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">command///req//setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>Note that the topic in the latter case doesn&rsquo;t contain a request identifier.</p>
-
+</code></pre></div><p>Note that the topic in the latter case doesn&rsquo;t contain a request identifier.</p>
 <p>The following command can be used to subscribe to commands resulting in command messages being published to a
 topic that includes the tenant ID:</p>
-
-<pre><code class="language-sh">mosquitto_sub -v -u 'sensor1@DEFAULT_TENANT' -P hono-secret -t c/DEFAULT_TENANT//q/#
-</code></pre>
-
-<p>Note the usage of the abbreviated names (<code>c</code> and <code>q</code> instead of <code>command</code> and <code>req</code>) and the inclusion of the tenant ID
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_sub -v -u <span style="color:#e6db74">&#39;sensor1@DEFAULT_TENANT&#39;</span> -P hono-secret -t c/DEFAULT_TENANT//q/#
+</code></pre></div><p>Note the usage of the abbreviated names (<code>c</code> and <code>q</code> instead of <code>command</code> and <code>req</code>) and the inclusion of the tenant ID
 in the topic filter.</p>
-
 <p>A corresponding request/response command with name <code>setBrightness</code> from an application might look like this:</p>
-
-<pre><code class="language-plaintext">c/DEFAULT_TENANT//q/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">c/DEFAULT_TENANT//q/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>A corresponding <em>one-way</em> command might look like this:</p>
-
-<pre><code class="language-plaintext">c/DEFAULT_TENANT//q//setBrightness
+</code></pre></div><p>A corresponding <em>one-way</em> command might look like this:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">c/DEFAULT_TENANT//q//setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>Note that the topic also includes the abbreviated names and the tenant identifier because the
+</code></pre></div><p>Note that the topic also includes the abbreviated names and the tenant identifier because the
 topic filter used for subscribing did contain the tenant ID as well.</p>
-
 <h3 id="receiving-commands-unauthenticated-device">Receiving Commands (unauthenticated Device)</h3>
-
 <p>An unauthenticated device MUST use the topic filter <code>command/${tenant-id}/${device-id}/req/#</code> to subscribe to commands.</p>
-
 <p><strong>Example</strong></p>
-
-<pre><code class="language-sh">mosquitto_sub -v -t command/DEFAULT_TENANT/4711/req/#
-</code></pre>
-
-<p>The adapter will then publish <em>Request/Response</em> commands for the device to topic <code>command/${tenant-id}/${device-id}/req/${req-id}/${command}</code>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_sub -v -t command/DEFAULT_TENANT/4711/req/#
+</code></pre></div><p>The adapter will then publish <em>Request/Response</em> commands for the device to topic <code>command/${tenant-id}/${device-id}/req/${req-id}/${command}</code>
 and <em>one-way</em> commands to topic <code>command/${tenant-id}/${device-id}/req//${command}</code>.</p>
-
 <p>For example, a request/response command with name <code>setBrightness</code> from an application might look like this:</p>
-
-<pre><code class="language-plaintext">command/DEFAULT_TENANT/4711/req/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">command/DEFAULT_TENANT/4711/req/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>A corresponding <em>one-way</em> command might look like this:</p>
-
-<pre><code class="language-plaintext">command/DEFAULT_TENANT/4711/req//setBrightness
+</code></pre></div><p>A corresponding <em>one-way</em> command might look like this:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">command/DEFAULT_TENANT/4711/req//setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>Note that the topic in the latter case doesn&rsquo;t contain a request identifier.</p>
-
+</code></pre></div><p>Note that the topic in the latter case doesn&rsquo;t contain a request identifier.</p>
 <h3 id="receiving-commands-authenticated-gateway">Receiving Commands (authenticated Gateway)</h3>
-
-<p><em>Gateway</em> components can receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/#configuring-gateway-devices">Configuring Gateway Devices</a> for details.</p>
-
+<p><em>Gateway</em> components can receive commands for devices which do not connect to a protocol adapter directly but instead are connected to the gateway, e.g. using some low-bandwidth radio based technology like <a href="https://www.sigfox.com">SigFox</a> or <a href="https://lora-alliance.org/">LoRa</a>. Corresponding devices have to be configured so that they can be used with a gateway. See <a href="/hono/docs/dev/admin-guide/file-based-device-registry-config/">Configuring Gateway Devices</a> for details.</p>
 <p>An authenticated gateway MUST use one of the following topic filters for subscribing to commands:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Topic Filter</th>
-<th align="left">Description</th>
+<th style="text-align:left">Topic Filter</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><code>command//+/req/#</code></td>
-<td align="left">Subscribe to commands for all devices that the gateway is authorized to act on behalf of.</td>
+<td style="text-align:left"><code>command//+/req/#</code></td>
+<td style="text-align:left">Subscribe to commands for all devices that the gateway is authorized to act on behalf of.</td>
 </tr>
-
 <tr>
-<td align="left"><code>command/${tenant-id}/+/req/#</code></td>
-<td align="left">Subscribe to commands for all devices that the gateway is authorized to act on behalf of.</td>
+<td style="text-align:left"><code>command/${tenant-id}/+/req/#</code></td>
+<td style="text-align:left">Subscribe to commands for all devices that the gateway is authorized to act on behalf of.</td>
 </tr>
-
 <tr>
-<td align="left"><code>command//${device-id}/req/#</code></td>
-<td align="left">Subscribe to commands for a specific device that the gateway is authorized to act on behalf of.</td>
+<td style="text-align:left"><code>command//${device-id}/req/#</code></td>
+<td style="text-align:left">Subscribe to commands for a specific device that the gateway is authorized to act on behalf of.</td>
 </tr>
-
 <tr>
-<td align="left"><code>command/${tenant-id}/${device-id}/req/#</code></td>
-<td align="left">Subscribe to commands for a specific device that the gateway is authorized to act on behalf of.</td>
+<td style="text-align:left"><code>command/${tenant-id}/${device-id}/req/#</code></td>
+<td style="text-align:left">Subscribe to commands for a specific device that the gateway is authorized to act on behalf of.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The protocol adapter will publish commands for devices to the following topic names</p>
-
 <ul>
 <li><strong>one-way</strong> <code>command//${device-id}/req//${command}</code> or <code>command/${tenant-id}/${device-id}/req//${command}</code></li>
 <li><strong>request-response</strong> <code>command//${device-id}/req/${req-id}/${command}</code> or <code>command/${tenant-id}/${device-id}/req/${req-id}/${command}</code></li>
 </ul>
-
 <p>The <code>${tenant-id}</code> will be included in the topic name if the tenant ID had been included in the topic filter used for subscribing to commands.</p>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Deprecation</h4>
     <div>Previous versions of Hono required authenticated gateways to use <code>command/+/+/req/#</code> for subscribing to commands.
 This old topic filter is deprecated. Gateways MAY still use it until support for it will be removed in a future Hono version.</div>
 </div>
-
 <p>When processing an incoming command message, the protocol adapter will give precedence to a device-specific command subscription matching the command target device, whether the subscription comes from a gateway or the device itself. If there are multiple such subscriptions from multiple gateways and/or from the device itself, the subscription initiated last will get the command messages.</p>
-
 <p>If no device-specific command subscription exists for a command target device, but <em>one</em> gateway, that may act on behalf of the device, has subscribed to commands for all its devices, then the command message is sent to that gateway.</p>
-
 <p>If <em>multiple</em> gateways have initiated such generic subscriptions, the protocol adapter may have to decide to which gateway a particular command message will be sent to.
 In case the command target device has already sent a telemetry, event or command response message via a gateway and if that gateway has created such a command subscription, that gateway will be chosen. Otherwise one gateway that may act on behalf of the command target device and that has an open subscription will be chosen randomly to receive the command message.</p>
-
 <p><strong>Subscribe to all Devices</strong></p>
-
 <p>A subscription to commands for all devices that a gateway acts on behalf of looks like this:</p>
-
-<pre><code class="language-sh">mosquitto_sub -v -u 'gw@DEFAULT_TENANT' -P gw-secret -t command/DEFAULT_TENANT/+/req/#
-</code></pre>
-
-<p>A request/response command for device <code>4711</code> with name <code>setBrightness</code> from an application might then look like this:</p>
-
-<pre><code class="language-plaintext">command/DEFAULT_TENANT/4711/req/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_sub -v -u <span style="color:#e6db74">&#39;gw@DEFAULT_TENANT&#39;</span> -P gw-secret -t command/DEFAULT_TENANT/+/req/#
+</code></pre></div><p>A request/response command for device <code>4711</code> with name <code>setBrightness</code> from an application might then look like this:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">command/DEFAULT_TENANT/4711/req/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>Note that the tenant identifier is included in the topic name that the command has been published to because it had been
+</code></pre></div><p>Note that the tenant identifier is included in the topic name that the command has been published to because it had been
 included in the topic filter used for subscribing to the commands.</p>
-
 <p><strong>Subscribe to a specific Device</strong></p>
-
 <p>A subscription to commands for a specific device can be done like this:</p>
-
-<pre><code class="language-sh">mosquitto_sub -v -u 'gw@DEFAULT_TENANT' -P gw-secret -t c//4711/q/#
-</code></pre>
-
-<p>Note the usage of the abbreviated names (<code>c</code> and <code>q</code> instead of <code>command</code> and <code>req</code>) in the topic filter.</p>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_sub -v -u <span style="color:#e6db74">&#39;gw@DEFAULT_TENANT&#39;</span> -P gw-secret -t c//4711/q/#
+</code></pre></div><p>Note the usage of the abbreviated names (<code>c</code> and <code>q</code> instead of <code>command</code> and <code>req</code>) in the topic filter.</p>
 <p>A corresponding <em>one-way</em> command might look like this:</p>
-
-<pre><code class="language-plaintext">c//4711/q//setBrightness
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-plaintext" data-lang="plaintext">c//4711/q//setBrightness
 {
-  &quot;brightness&quot;: 79
+  &#34;brightness&#34;: 79
 }
-</code></pre>
-
-<p>Note that the topic also includes the abbreviated names and does not include the tenant identifier because the
+</code></pre></div><p>Note that the topic also includes the abbreviated names and does not include the tenant identifier because the
 topic filter used for subscribing did not contain the tenant ID either.</p>
-
 <h3 id="sending-a-response-to-a-command-authenticated-device">Sending a Response to a Command (authenticated Device)</h3>
-
 <p>An authenticated device MUST send the response to a previously received command to the topic <code>command///res/${req-id}/${status}</code>.</p>
-
 <p><strong>Example</strong></p>
-
 <p>After a command has arrived as in the above example, you send a response using the arrived <code>${req-id}</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'sensor1@DEFAULT_TENANT' -P hono-secret -t command///res/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/200 -m '{&quot;lumen&quot;: 200}'
-</code></pre>
-
-<h3 id="sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</h3>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;sensor1@DEFAULT_TENANT&#39;</span> -P hono-secret -t command///res/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/200 -m <span style="color:#e6db74">&#39;{&#34;lumen&#34;: 200}&#39;</span>
+</code></pre></div><h3 id="sending-a-response-to-a-command-unauthenticated-device">Sending a Response to a Command (unauthenticated Device)</h3>
 <p>An unauthenticated device MUST send the response to a previously received command to the topic <code>command/${tenant-id}/${device-id}/res/${req-id}/${status}</code>.</p>
-
 <p><strong>Example</strong></p>
-
 <p>After a command has arrived as in the above example, you send a response using the arrived <code>${req-id}</code>:</p>
-
-<pre><code class="language-sh">mosquitto_pub -t command/DEFAULT_TENANT/4711/res/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/200 -m '{&quot;lumen&quot;: 200}'
-</code></pre>
-
-<h3 id="sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</h3>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -t command/DEFAULT_TENANT/4711/res/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/200 -m <span style="color:#e6db74">&#39;{&#34;lumen&#34;: 200}&#39;</span>
+</code></pre></div><h3 id="sending-a-response-to-a-command-authenticated-gateway">Sending a Response to a Command (authenticated Gateway)</h3>
 <p>An authenticated gateway MUST send a device&rsquo;s response to a command it has received on behalf of the device to the topic <code>command//${device-id}/res/${req-id}/${status}</code>.</p>
-
 <p><strong>Example</strong></p>
-
 <p>After a command has arrived as in the above example, the response is sent using the <code>${req-id}</code> from the topic that the command had been published to:</p>
-
-<pre><code class="language-sh">mosquitto_pub -u 'gw@DEFAULT_TENANT' -P gw-secret -t command//4711/res/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/200 -m '{&quot;lumen&quot;: 200}'
-</code></pre>
-
-<h2 id="error-reporting-via-error-topic">Error Reporting via Error Topic</h2>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mosquitto_pub -u <span style="color:#e6db74">&#39;gw@DEFAULT_TENANT&#39;</span> -P gw-secret -t command//4711/res/1010f8ab0b53-bd96-4d99-9d9c-56b868474a6a/200 -m <span style="color:#e6db74">&#39;{&#34;lumen&#34;: 200}&#39;</span>
+</code></pre></div><h2 id="error-reporting-via-error-topic">Error Reporting via Error Topic</h2>
 <p>The default behaviour when an error occurs while publishing telemetry, event or command response messages is for the MQTT adapter to close the network connection to the device, as mandated by the MQTT 3.1.1 spec.</p>
-
 <p>An alternative way of dealing with errors involves keeping the connection intact and letting the MQTT adapter publish a corresponding error message on a specific error topic to the device. To enable that behaviour, the device sends an MQTT <em>SUBSCRIBE</em> packet with a topic filter as described below on <em>the same MQTT connection</em> that is also used for publishing the telemetry, event or command response messages. Devices can subscribe with QoS 0 only. The adapter indicates the outcome of the subscription request by sending back a corresponding <em>SUBACK</em> packet. The SUBACK packet will contain <em>Success - QoS 0</em> (<code>0x00</code>) for a valid error topic filter and will contain the <em>Failure</em> (<code>0x80</code>) value for an invalid or unsupported filter. In order to again activate the default error handling behaviour, the device can send an MQTT <em>UNSUBSCRIBE</em> packet to the adapter, including the same topic filter that has been used to subscribe.</p>
-
 <p>The following sections define the topic filters to use for subscribing to error messages and the resulting error message topic. Instead of the <code>error</code> topic path segment, the shorthand version <code>e</code> is also supported.</p>
-
 <p>The following variables are used:</p>
-
 <ul>
 <li><code>${endpoint-type}</code>: The endpoint type of the device message that caused the error. Its value is either <code>telemetry</code>, <code>event</code> or the respective shorthand version. In case of a command response device message <code>command-response</code> or <code>c-s</code> is used.</li>
 <li><code>${correlation-id}</code>: The identifier that may be used to correlate the error message with the device message that caused the error. The identifier is either the value of a <em>correlation-id</em> property bag value contained in the device message topic, or the identifier is the <em>packet-id</em> of the device message if it was sent with QoS 1. Otherwise, a value of <code>-1</code> is used.</li>
 <li><code>${error-status}</code>: The HTTP status code of the error that was caused by the device message.</li>
 </ul>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Examples</h4>
     <div>Since the subscription on the error topic needs to be done on the same MQTT connection that is also used for publishing the telemetry, event or command response messages, the Mosquitto MQTT Command Line Client cannot be used. The <a href="https://hivemq.github.io/mqtt-cli/">MQTT CLI</a> tool with its <a href="https://hivemq.github.io/mqtt-cli/docs/shell.html">shell mode</a> is an alternative that supports using one MQTT connection for both subscribing and publishing.</div>
 </div>
-
 <h3 id="receiving-error-messages-authenticated-device">Receiving Error Messages (authenticated Device)</h3>
-
 <p>An authenticated device MUST use the following topic filter for subscribing to error messages:</p>
-
 <p><code>error/[${tenant-id}]/[${device-id}]/#</code></p>
-
 <p>Both the tenant and the device ID are optional. If specified, they MUST match the authenticated device&rsquo;s tenant and/or device ID.
 Note that the <em>authentication identifier</em> used in the device&rsquo;s credentials is <em>not</em> necessarily the same as the device ID.</p>
-
 <p>The protocol adapter will publish error messages for the device to the following topic name</p>
-
 <p><code>error/[${tenant-id}]/[${device-id}]/${endpoint-type}/${correlation-id}/${error-status}</code></p>
-
 <p>The <em>tenant-id</em> and/or <em>device-id</em> will be included in the topic name if the tenant and/or device ID had been included
 in the topic filter used for subscribing to error messages.</p>
-
 <p><strong>Example</strong></p>
-
 <p>An example using the <a href="https://hivemq.github.io/mqtt-cli/">MQTT CLI</a> that will produce an error output provided there is no downstream consumer for the device messages.</p>
-
-<pre><code class="language-sh">mqtt shell
-con -V 3 -h [MQTT_ADAPTER_IP] -u [DEVICE]@[TENANT] -pw [PWD]
-sub -t error///# --qos 0 --outputToConsole
-pub -t telemetry -m '{&quot;temp&quot;: 5}' --qos 1
-</code></pre>
-
-<p>Using an explicit correlation id:</p>
-
-<pre><code class="language-sh">pub -t telemetry/?correlation-id=123 -m '{&quot;temp&quot;: 5}' --qos 1
-</code></pre>
-
-<h3 id="receiving-error-messages-unauthenticated-device">Receiving Error Messages (unauthenticated Device)</h3>
-
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">mqtt shell
+con -V <span style="color:#ae81ff">3</span> -h <span style="color:#f92672">[</span>MQTT_ADAPTER_IP<span style="color:#f92672">]</span> -u <span style="color:#f92672">[</span>DEVICE<span style="color:#f92672">]</span>@<span style="color:#f92672">[</span>TENANT<span style="color:#f92672">]</span> -pw <span style="color:#f92672">[</span>PWD<span style="color:#f92672">]</span>
+sub -t error///# --qos <span style="color:#ae81ff">0</span> --outputToConsole
+pub -t telemetry -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> --qos <span style="color:#ae81ff">1</span>
+</code></pre></div><p>Using an explicit correlation id:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">pub -t telemetry/?correlation-id<span style="color:#f92672">=</span><span style="color:#ae81ff">123</span> -m <span style="color:#e6db74">&#39;{&#34;temp&#34;: 5}&#39;</span> --qos <span style="color:#ae81ff">1</span>
+</code></pre></div><h3 id="receiving-error-messages-unauthenticated-device">Receiving Error Messages (unauthenticated Device)</h3>
 <p>An unauthenticated device MUST use the following topic filter for subscribing to error messages:</p>
-
 <p><code>error/${tenant-id}/${device-id}/#</code></p>
-
 <p>The protocol adapter will publish error messages for the device to the following topic name</p>
-
 <p><code>error/${tenant-id}/${device-id}/${endpoint-type}/${correlation-id}/${error-status}</code></p>
-
 <h3 id="receiving-error-messages-authenticated-gateway">Receiving Error Messages (authenticated Gateway)</h3>
-
 <p>An authenticated gateway MUST use one of the following topic filters for subscribing to error messages:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Topic Filter</th>
-<th align="left">Description</th>
+<th style="text-align:left">Topic Filter</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><code>error//+/#</code><br/><code>error/${tenant-id}/+/#</code></td>
-<td align="left">Subscribe to error messages for all devices that the gateway is authorized to act on behalf of.</td>
+<td style="text-align:left"><code>error//+/#</code><br/><code>error/${tenant-id}/+/#</code></td>
+<td style="text-align:left">Subscribe to error messages for all devices that the gateway is authorized to act on behalf of.</td>
 </tr>
-
 <tr>
-<td align="left"><code>error//${device-id}/#</code><br/><code>error/${tenant-id}/${device-id}/#</code></td>
-<td align="left">Subscribe to error messages for a specific device that the gateway is authorized to act on behalf of.</td>
+<td style="text-align:left"><code>error//${device-id}/#</code><br/><code>error/${tenant-id}/${device-id}/#</code></td>
+<td style="text-align:left">Subscribe to error messages for a specific device that the gateway is authorized to act on behalf of.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The protocol adapter will publish error messages for the device to the following topic name</p>
-
 <p><code>error/[${tenant-id}]/[${device-id}]/${endpoint-type}/${correlation-id}/${error-status}</code></p>
-
 <p>The <em>tenant-id</em> and/or <em>device-id</em> will be included in the topic name if the tenant and/or device ID had been included
 in the topic filter used for subscribing to error messages.</p>
-
 <h3 id="error-message-payload">Error Message Payload</h3>
-
 <p>The MQTT adapter publishes error messages with a UTF-8 encoded JSON payload containing the following fields:</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>
+<th style="text-align:left">Name</th>
+<th style="text-align:center">Mandatory</th>
+<th style="text-align:left">JSON Type</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>code</em></td>
-<td align="center"><em>yes</em></td>
-<td align="left"><em>number</em></td>
-<td align="left">The HTTP error status code. See the table below for possible values.</td>
+<td style="text-align:left"><em>code</em></td>
+<td style="text-align:center"><em>yes</em></td>
+<td style="text-align:left"><em>number</em></td>
+<td style="text-align:left">The HTTP error status code. See the table below for possible values.</td>
 </tr>
-
 <tr>
-<td align="left"><em>message</em></td>
-<td align="center"><em>yes</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The error detail message.</td>
+<td style="text-align:left"><em>message</em></td>
+<td style="text-align:center"><em>yes</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The error detail message.</td>
 </tr>
-
 <tr>
-<td align="left"><em>timestamp</em></td>
-<td align="center"><em>yes</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The date and time the error message was published by the MQTT adapter. The value is 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>
+<td style="text-align:left"><em>timestamp</em></td>
+<td style="text-align:center"><em>yes</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The date and time the error message was published by the MQTT adapter. The value is 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>correlation-id</em></td>
-<td align="center"><em>yes</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The identifier that may be used to correlate the error message with the device message that caused the error. The identifier is either the value of a <em>correlation-id</em> property bag value contained in the device message topic, or the identifier is the <em>packet-id</em> of the device message if it was sent with QoS 1. Otherwise a value of <code>-1</code> is used.</td>
+<td style="text-align:left"><em>correlation-id</em></td>
+<td style="text-align:center"><em>yes</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The identifier that may be used to correlate the error message with the device message that caused the error. The identifier is either the value of a <em>correlation-id</em> property bag value contained in the device message topic, or the identifier is the <em>packet-id</em> of the device message if it was sent with QoS 1. Otherwise a value of <code>-1</code> is used.</td>
 </tr>
 </tbody>
 </table>
-
 <p>The error message&rsquo;s <em>code</em> field may contain the following HTTP status codes:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Code</th>
-<th align="left">Description</th>
+<th style="text-align:left">Code</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>400</em></td>
-<td align="left">Bad Request, the request cannot be processed. A possible reason for this is an invalid <em>PUBLISH</em> topic.</td>
+<td style="text-align:left"><em>400</em></td>
+<td style="text-align:left">Bad Request, the request cannot be processed. A possible reason for this is an invalid <em>PUBLISH</em> topic.</td>
 </tr>
-
 <tr>
-<td align="left"><em>403</em></td>
-<td align="left">Forbidden, the device&rsquo;s registration status cannot be asserted.</td>
+<td style="text-align:left"><em>403</em></td>
+<td style="text-align:left">Forbidden, the device&rsquo;s registration status cannot be asserted.</td>
 </tr>
-
 <tr>
-<td align="left"><em>404</em></td>
-<td align="left">Not Found, the device is disabled or does not exist.</td>
+<td style="text-align:left"><em>404</em></td>
+<td style="text-align:left">Not Found, the device is disabled or does not exist.</td>
 </tr>
-
 <tr>
-<td align="left"><em>413</em></td>
-<td align="left">Request Entity Too Large, the request body exceeds the maximum supported size.</td>
+<td style="text-align:left"><em>413</em></td>
+<td style="text-align:left">Request Entity Too Large, the request body exceeds the maximum supported size.</td>
 </tr>
-
 <tr>
-<td align="left"><em>429</em></td>
-<td align="left">Too Many Requests, the tenant&rsquo;s message limit for the current period is exceeded.</td>
+<td style="text-align:left"><em>429</em></td>
+<td style="text-align:left">Too Many Requests, the tenant&rsquo;s message limit for the current period is exceeded.</td>
 </tr>
-
 <tr>
-<td align="left"><em>503</em></td>
-<td align="left">Service Unavailable, the request cannot be processed. Possible reasons for this include:<ul><li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits). </li><li>If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be: <ul><li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li> <li>The consumer failed to indicate in time whether it has processed the telemetry data.</li></ul></li></ul></td>
+<td style="text-align:left"><em>503</em></td>
+<td style="text-align:left">Service Unavailable, the request cannot be processed. Possible reasons for this include:<ul><li>There is no consumer of telemetry data for the given tenant connected to Hono, or the consumer has not indicated that it may receive further messages (not giving credits). </li><li>If the QoS level header is set to <code>1</code> (<em>at least once</em> semantics), the reason may be: <ul><li>The consumer has indicated that it didn&rsquo;t process the telemetry data.</li> <li>The consumer failed to indicate in time whether it has processed the telemetry data.</li></ul></li></ul></td>
 </tr>
 </tbody>
 </table>
-
 <p>Example payload:</p>
-
-<pre><code class="language-json">{
-&quot;code&quot;: 400,
-&quot;message&quot;: &quot;malformed topic name&quot;,
-&quot;timestamp&quot;: &quot;2020-12-24T19:00:00+0100&quot;,
-&quot;correlation-id&quot;: &quot;5&quot;
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-json" data-lang="json">{
+<span style="color:#f92672">&#34;code&#34;</span>: <span style="color:#ae81ff">400</span>,
+<span style="color:#f92672">&#34;message&#34;</span>: <span style="color:#e6db74">&#34;malformed topic name&#34;</span>,
+<span style="color:#f92672">&#34;timestamp&#34;</span>: <span style="color:#e6db74">&#34;2020-12-24T19:00:00+0100&#34;</span>,
+<span style="color:#f92672">&#34;correlation-id&#34;</span>: <span style="color:#e6db74">&#34;5&#34;</span>
 }
-</code></pre>
-
-<h2 id="error-handling">Error Handling</h2>
-
+</code></pre></div><h2 id="error-handling">Error Handling</h2>
 <p>When a device publishes a telemetry, event or command response message and there is an error processing the message, the handling of the error depends on whether there is a <a href="#error-reporting-via-error-topic">error topic subscription</a> for the device and whether a <em>on-error</em> property bag parameter was set on the topic used for sending the message.</p>
-
 <p>If no error subscription is in place and no <em>on-error</em> parameter was set, the default error handling behaviour is to close the MQTT connection to the device.
 If the device has a subscription on the error topic (on the same MQTT connection the device uses for sending messages), the default behaviour is to keep the
 MQTT connection open unless a terminal error happens. The errors that are classified as terminal are listed below.</p>
-
 <ul>
 <li>The adapter is disabled for the tenant that the client belongs to.</li>
 <li>The authenticated device or gateway is disabled or not registered.</li>
 <li>The tenant is disabled or does not exist.</li>
 </ul>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Note</h4>
     <div>When a terminal error occurs, the connection will always be closed irrespective of any <em>on-error</em> parameter or error subscription.</div>
 </div>
-
 <p>The following table lists the different behaviours based on the value of the <em>on-error</em> property bag parameter and the existence of an error subscription:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left"><em>on-error</em> topic parameter</th>
-<th align="left">Error subscription exists</th>
-<th align="left">Description</th>
+<th style="text-align:left"><em>on-error</em> topic parameter</th>
+<th style="text-align:left">Error subscription exists</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>default</em> or value not set</td>
-<td align="left">no</td>
-<td align="left">The connection to the device will get closed (like with the <em>disconnect</em> option).</td>
+<td style="text-align:left"><em>default</em> or value not set</td>
+<td style="text-align:left">no</td>
+<td style="text-align:left">The connection to the device will get closed (like with the <em>disconnect</em> option).</td>
 </tr>
-
 <tr>
-<td align="left"><em>disconnect</em></td>
-<td align="left">no</td>
-<td align="left">The connection to the device will get closed.</td>
+<td style="text-align:left"><em>disconnect</em></td>
+<td style="text-align:left">no</td>
+<td style="text-align:left">The connection to the device will get closed.</td>
 </tr>
-
 <tr>
-<td align="left"><em>ignore</em></td>
-<td align="left">no</td>
-<td align="left">The error will be ignored and a <em>PUBACK</em> for the message that caused the error will get sent.</td>
+<td style="text-align:left"><em>ignore</em></td>
+<td style="text-align:left">no</td>
+<td style="text-align:left">The error will be ignored and a <em>PUBACK</em> for the message that caused the error will get sent.</td>
 </tr>
-
 <tr>
-<td align="left"><em>skip-ack</em></td>
-<td align="left">no</td>
-<td align="left">The error will be ignored and no <em>PUBACK</em> for the message that caused the error will get sent.</td>
+<td style="text-align:left"><em>skip-ack</em></td>
+<td style="text-align:left">no</td>
+<td style="text-align:left">The error will be ignored and no <em>PUBACK</em> for the message that caused the error will get sent.</td>
 </tr>
-
 <tr>
-<td align="left"><em>default</em> or value not set</td>
-<td align="left">yes</td>
-<td align="left">After having sent an error message on the error topic, the error will be ignored and a <em>PUBACK</em> for the message that caused the error will get sent (like with the <em>ignore</em> option).</td>
+<td style="text-align:left"><em>default</em> or value not set</td>
+<td style="text-align:left">yes</td>
+<td style="text-align:left">After having sent an error message on the error topic, the error will be ignored and a <em>PUBACK</em> for the message that caused the error will get sent (like with the <em>ignore</em> option).</td>
 </tr>
-
 <tr>
-<td align="left"><em>disconnect</em></td>
-<td align="left">yes</td>
-<td align="left">After having sent an error message on the error topic, the connection to the device will get closed.</td>
+<td style="text-align:left"><em>disconnect</em></td>
+<td style="text-align:left">yes</td>
+<td style="text-align:left">After having sent an error message on the error topic, the connection to the device will get closed.</td>
 </tr>
-
 <tr>
-<td align="left"><em>ignore</em></td>
-<td align="left">yes</td>
-<td align="left">After having sent an error message on the error topic, the error will be ignored and a <em>PUBACK</em> for the message that caused the error will get sent.</td>
+<td style="text-align:left"><em>ignore</em></td>
+<td style="text-align:left">yes</td>
+<td style="text-align:left">After having sent an error message on the error topic, the error will be ignored and a <em>PUBACK</em> for the message that caused the error will get sent.</td>
 </tr>
-
 <tr>
-<td align="left"><em>skip-ack</em></td>
-<td align="left">yes</td>
-<td align="left">After having sent an error message on the error topic, the error will be ignored and no <em>PUBACK</em> for the message that caused the error will get sent.</td>
+<td style="text-align:left"><em>skip-ack</em></td>
+<td style="text-align:left">yes</td>
+<td style="text-align:left">After having sent an error message on the error topic, the error will be ignored and no <em>PUBACK</em> for the message that caused the error will get sent.</td>
 </tr>
 </tbody>
 </table>
-
 <p><strong>Example</strong></p>
-
 <p>An authenticated device wanting to have errors always be ignored can for example publish telemetry messages on this topic:</p>
-
 <p><code>telemetry/?on-error=ignore</code></p>
-
 <h2 id="custom-message-mapping">Custom Message Mapping</h2>
-
 <p>This protocol adapter supports transformation of messages that have been uploaded by devices before they get forwarded to downstream consumers.</p>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Experimental</h4>
     <div>This is an experimental feature. The names of the configuration properties, potential values and the overall functionality are therefore
 subject to change without prior notice.</div>
 </div>
-
 <p>This feature is useful in scenarios where devices are connected to the adapter via a gateway but the gateway is not able to include
 the device ID in the topic that the gateway publishes data to. The gateway will use the plain <code>telemetry</code> or <code>event</code> topics in this case.
 The message payload will usually contain the identifier of the device that the data originates from.</p>
-
 <p>The same functionality can also be used to transform the payload of messages uploaded by a device. This can be used for example to
 transform binary encoded data into a JSON document which can be consumed more easily by downstream consumers.</p>
-
 <p>The mechanism works as follows:</p>
-
 <ol>
-<li>A client uploads a message to the MQTT adapter.</li>
-<li>The adapter invokes the Device Registration service&rsquo;s <em>assert Registration</em> operation using either
+<li>
+<p>A client uploads a message to the MQTT adapter.</p>
+</li>
+<li>
+<p>The adapter invokes the Device Registration service&rsquo;s <em>assert Registration</em> operation using either
 the authenticated device&rsquo;s identifier, if the topic does not contain a device ID, or the device ID from the
-topic.</li>
-<li>If the assertion succeeds, the adapter creates the downstream message using the original message&rsquo;s payload and
-the asserted device ID as the origin device.</li>
-
-<li><p>If the <em>assert Registration</em> response payload contains a value for the <em>mapper</em> property, the adapter tries to
+topic.</p>
+</li>
+<li>
+<p>If the assertion succeeds, the adapter creates the downstream message using the original message&rsquo;s payload and
+the asserted device ID as the origin device.</p>
+</li>
+<li>
+<p>If the <em>assert Registration</em> response payload contains a value for the <em>mapper</em> property, the adapter tries to
 find a <em>mapper endpoint</em> configuration for the given value. If a mapper endpoint with a matching name has been
 configured for the adapter,</p>
-
 <ol>
 <li>the adapter sends an HTTP request to the endpoint which contains the original message&rsquo;s payload in the request body.</li>
 <li>If the response body is not empty, it is used as the downstream message&rsquo;s payload, replacing the original payload.</li>
 <li>If the response contains a <em>device_id</em> header and its value is different from the original device ID, then the adapter
 invokes the <em>assert Registration</em> operation again, this time using the mapped device ID instead of the original device ID.
 If the assertion succeeds, the adapter uses the asserted (mapped) device ID for the downstream message.</li>
-</ol></li>
-
-<li><p>The adapter forwards the downstream message.</p></li>
 </ol>
-
+</li>
+<li>
+<p>The adapter forwards the downstream message.</p>
+</li>
+</ol>
 <p>Please refer to the <a href="/hono/docs/dev/api/management/#/devices/createDeviceRegistration">Device Registry Management API</a>
 for how to register a <em>mapper</em> for a device.
 Please refer to the <a href="/hono/docs/dev/admin-guide/mqtt-adapter-config/#custom-message-mapping">MQTT Adapter Admin Guide</a>
 for how to configure custom mapper endpoints.</p>
-
 <h2 id="downstream-meta-data">Downstream Meta Data</h2>
-
 <p>The adapter includes the following meta data in messages being sent downstream:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Location</th>
-<th align="left">Type</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Location</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>device_id</em></td>
-<td align="left"><em>application</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">The identifier of the device that the message originates from.</td>
+<td style="text-align:left"><em>device_id</em></td>
+<td style="text-align:left"><em>application</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">The identifier of the device that the message originates from.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_adapter</em></td>
-<td align="left"><em>application</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The MQTT adapter&rsquo;s type name is <code>hono-mqtt</code>.</td>
+<td style="text-align:left"><em>orig_adapter</em></td>
+<td style="text-align:left"><em>application</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the adapter&rsquo;s <em>type name</em> which can be used by downstream consumers to determine the protocol adapter that the message has been received over. The MQTT adapter&rsquo;s type name is <code>hono-mqtt</code>.</td>
 </tr>
-
 <tr>
-<td align="left"><em>orig_address</em></td>
-<td align="left"><em>application</em></td>
-<td align="left"><em>string</em></td>
-<td align="left">Contains the name of the MQTT topic that the device has originally published the data to.</td>
+<td style="text-align:left"><em>orig_address</em></td>
+<td style="text-align:left"><em>application</em></td>
+<td style="text-align:left"><em>string</em></td>
+<td style="text-align:left">Contains the name of the MQTT topic that the device has originally published the data to.</td>
 </tr>
-
 <tr>
-<td align="left"><em>x-opt-retain</em></td>
-<td align="left"><em>message-annotations</em></td>
-<td align="left"><em>boolean</em></td>
-<td align="left">Contains <code>true</code> if the device has published an event or telemetry message with its <em>retain</em> flag set to <code>1</code></td>
+<td style="text-align:left"><em>x-opt-retain</em></td>
+<td style="text-align:left"><em>message-annotations</em></td>
+<td style="text-align:left"><em>boolean</em></td>
+<td style="text-align:left">Contains <code>true</code> if the device has published an event or telemetry message with its <em>retain</em> flag set to <code>1</code></td>
 </tr>
 </tbody>
 </table>
-
 <p>The adapter also considers <em>defaults</em> registered for the device at either the <a href="/hono/docs/dev/api/tenant/#tenant-information-format">tenant</a>
 or the <a href="/hono/docs/dev/api/device-registration/#assert-device-registration">device level</a>.
 The values of the default properties are determined as follows:</p>
-
 <ol>
 <li>If the message already contains a non-empty property of the same name, the value if unchanged.</li>
 <li>Otherwise, if a default property of the same name is defined in the device&rsquo;s registration information, that value is used.</li>
 <li>Otherwise, if a default property of the same name is defined for the tenant that the device belongs to, that value is used.</li>
 </ol>
-
 <p>Note that of the standard AMQP 1.0 message properties only the <em>content-type</em> and <em>ttl</em> can be set this way to a default value.</p>
-
 <h3 id="event-message-time-to-live">Event Message Time-to-live</h3>
-
 <p>Events published by devices will usually be persisted by the AMQP Messaging Network in order to support deferred delivery to downstream consumers.
 In most cases the AMQP Messaging Network can be configured with a maximum <em>time-to-live</em> to apply to the events so that the events will be removed
 from the persistent store if no consumer has attached to receive the event before the message expires.</p>
-
 <p>In order to support environments where the AMQP Messaging Network cannot be configured accordingly, the MQTT protocol adapter supports setting a
 downstream event message&rsquo;s <em>ttl</em> property based on the <em>hono-ttl</em> property set as <em>property-bag</em> at the end of the event topic.
-Also the default <em>ttl</em> and <em>max-ttl</em> values can be configured for a tenant/device as described in the <a href="/hono/docs/dev/api/tenant/#resource-limits-configuration-format">Tenant API</a>.</p>
-
+Also the default <em>ttl</em> and <em>max-ttl</em> values can be configured for a tenant/device as described in the [Tenant API]
+(/hono/docs/dev/api/tenant/#resource-limits-configuration-format).</p>
 <h2 id="tenant-specific-configuration">Tenant specific Configuration</h2>
-
 <p>The adapter uses the <a href="/hono/docs/dev/api/tenant/#get-tenant-information">Tenant API</a> to retrieve <em>tenant specific configuration</em> for adapter type <code>hono-mqtt</code>.
 The following properties are (currently) supported in the <em>Adapter</em> object:</p>
-
 <table>
 <thead>
 <tr>
-<th align="left">Name</th>
-<th align="left">Type</th>
-<th align="left">Default Value</th>
-<th align="left">Description</th>
+<th style="text-align:left">Name</th>
+<th style="text-align:left">Type</th>
+<th style="text-align:left">Default Value</th>
+<th style="text-align:left">Description</th>
 </tr>
 </thead>
-
 <tbody>
 <tr>
-<td align="left"><em>enabled</em></td>
-<td align="left"><em>boolean</em></td>
-<td align="left"><code>true</code></td>
-<td align="left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
+<td style="text-align:left"><em>enabled</em></td>
+<td style="text-align:left"><em>boolean</em></td>
+<td style="text-align:left"><code>true</code></td>
+<td style="text-align:left">If set to <code>false</code> the adapter will reject all data from devices belonging to the tenant.</td>
 </tr>
 </tbody>
 </table>
@@ -4125,19 +3884,19 @@
     <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?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757973"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757973"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757973"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757973"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757973"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844324"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844324"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844324"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844324"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757973"></script>
-    <script src="/hono/docs/js/learn.js?1617757973"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757973"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844324"></script>
+    <script src="/hono/docs/js/learn.js?1617844324"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844324"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757973" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757973"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844324" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844324"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>
diff --git a/docs/dev/user-guide/sigfox-adapter/index.html b/docs/dev/user-guide/sigfox-adapter/index.html
index 57b7a65..61d2569 100644
--- a/docs/dev/user-guide/sigfox-adapter/index.html
+++ b/docs/dev/user-guide/sigfox-adapter/index.html
@@ -3,7 +3,7 @@
   <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="generator" content="Hugo 0.81.0" />
     <meta name="description" content="A set of micro-services for connecting millions of devices.">
 <meta name="author" content="The Eclipse Hono Project">
 
@@ -21,21 +21,21 @@
     <title>Sigfox Adapter :: Eclipse Hono&trade; Vers.: dev</title>
 
     
-    <link href="/hono/docs/css/nucleus.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/fontawesome-all.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hybrid.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/featherlight.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/auto-complete.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/theme.css?1617757973" rel="stylesheet">
-    <link href="/hono/docs/css/hugo-theme.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/nucleus.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/fontawesome-all.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hybrid.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/featherlight.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/perfect-scrollbar.min.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/auto-complete.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/atom-one-dark-reasonable.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/theme.css?1617844323" rel="stylesheet">
+    <link href="/hono/docs/css/hugo-theme.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/theme-hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/theme-hono.css?1617844323" rel="stylesheet">
     
-    <link href="/hono/docs/css/hono.css?1617757973" rel="stylesheet">
+    <link href="/hono/docs/css/hono.css?1617844323" rel="stylesheet">
 
-    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617757973"></script>
+    <script src="/hono/docs/js/jquery-3.3.1.min.js?1617844323"></script>
 
     <style>
       :root #header + #content > #left > #rlblock_left{
@@ -83,14 +83,14 @@
     <span data-search-clear=""><i class="fas fa-times"></i></span>
 </div>
 
-<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617757973"></script>
-<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/lunr.min.js?1617844323"></script>
+<script type="text/javascript" src="/hono/docs/js/auto-complete.js?1617844323"></script>
 <script type="text/javascript">
     
         var baseurl = "https:\/\/www.eclipse.org\/hono\/docs\/\/dev";
     
 </script>
-<script type="text/javascript" src="/hono/docs/js/search.js?1617757973"></script>
+<script type="text/javascript" src="/hono/docs/js/search.js?1617844323"></script>
 
     
   </div>
@@ -1624,7 +1624,37 @@
                   
                     
                     
-                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/sigfox-adapter/">stable (1.6)</option>
+                      <option id="stable" value="https://www.eclipse.org/hono/docs/user-guide/sigfox-adapter/">stable (1.7)</option>
+                    
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+                  
+              
+          
+              
+              
+                  
+              
+                  
+                    
+                    
+                      <option id="1.7" value="https://www.eclipse.org/hono/docs/1.7/user-guide/sigfox-adapter/">1.7</option>
                     
                   
               
@@ -1650,6 +1680,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.6" value="https://www.eclipse.org/hono/docs/1.6/user-guide/sigfox-adapter/">1.6</option>
@@ -1678,6 +1710,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.5" value="https://www.eclipse.org/hono/docs/1.5/user-guide/sigfox-adapter/">1.5</option>
@@ -1706,6 +1740,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.4" value="https://www.eclipse.org/hono/docs/1.4/user-guide/sigfox-adapter/">1.4</option>
@@ -1734,6 +1770,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.3" value="https://www.eclipse.org/hono/docs/1.3/user-guide/sigfox-adapter/">1.3</option>
@@ -1762,6 +1800,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.2" value="https://www.eclipse.org/hono/docs/1.2/user-guide/sigfox-adapter/">1.2</option>
@@ -1790,6 +1830,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.1" value="https://www.eclipse.org/hono/docs/1.1/user-guide/sigfox-adapter/">1.1</option>
@@ -1818,6 +1860,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="1.0" value="https://www.eclipse.org/hono/docs/1.0/user-guide/sigfox-adapter/">1.0</option>
@@ -1846,6 +1890,8 @@
                   
               
                   
+              
+                  
                     
                     
                       <option id="dev" value="https://www.eclipse.org/hono/docs/dev/user-guide/sigfox-adapter/" selected>dev</option>
@@ -1964,22 +2010,20 @@
                     <div class="progress">
     <div class="wrapper">
 <nav id="TableOfContents">
-<ul>
-<li>
-<ul>
-<li><a href="#pre-requisites">Pre-requisites</a></li>
-<li><a href="#devices-and-credentials">Devices and credentials</a></li>
-<li><a href="#setup-example">Setup example</a>
-<ul>
-<li><a href="#registering-devices">Registering devices</a></li>
-<li><a href="#setting-up-callbacks">Setting up callbacks</a></li>
-<li><a href="#enabling-command-control">Enabling command &amp; control</a></li>
-</ul></li>
-<li><a href="#events">Events</a></li>
-<li><a href="#consuming-data">Consuming data</a></li>
-<li><a href="#known-bugs-and-limitations">Known bugs and limitations</a></li>
-</ul></li>
-</ul>
+  <ul>
+    <li><a href="#pre-requisites">Pre-requisites</a></li>
+    <li><a href="#devices-and-credentials">Devices and credentials</a></li>
+    <li><a href="#setup-example">Setup example</a>
+      <ul>
+        <li><a href="#registering-devices">Registering devices</a></li>
+        <li><a href="#setting-up-callbacks">Setting up callbacks</a></li>
+        <li><a href="#enabling-command--control">Enabling command &amp; control</a></li>
+      </ul>
+    </li>
+    <li><a href="#events">Events</a></li>
+    <li><a href="#consuming-data">Consuming data</a></li>
+    <li><a href="#known-bugs-and-limitations">Known bugs and limitations</a></li>
+  </ul>
 </nav>
     </div>
 </div>
@@ -2005,90 +2049,66 @@
 
 <p>The Sigfox protocol adapter exposes an HTTP endpoint for connecting up with
 the Sigfox backend for publishing telemetry, events and use command &amp; control.</p>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Tech preview</h4>
     <div>This protocol adapter is not considered production ready. Its APIs might still
 be subject to change without warning.</div>
 </div>
-
 <h2 id="pre-requisites">Pre-requisites</h2>
-
 <p>This Sigfox adapter only connects to the Sigfox backend system
 (<code>backend.sigfox.com</code>). It does not allow direct access to Sigfox devices.</p>
-
 <p>So you need to set up your Sigfox devices on <code>backend.sigfox.com</code> and then
 configure the callbacks connect to your installation of Hono.</p>
-
 <h2 id="devices-and-credentials">Devices and credentials</h2>
-
 <p>In a nutshell, the Sigfox adapter requires a single <em>device</em> identity, acting
 as a gateway device. This identity will be used to connect to Hono. All devices
 registered with Sigfox (the actual Sigfox devices), will be registered in Hono
 to allow this first identity as their gateway device.</p>
-
 <h2 id="setup-example">Setup example</h2>
-
 <p>The following sub-sections walk you through an example setup.</p>
-
 <h3 id="registering-devices">Registering devices</h3>
-
 <p>This example assumes that the Sigfox protocol adapter is available as
 <code>https://iot-sigfox-adapter.my.hono</code>.</p>
-
 <p>Create a new <em>gateway device</em> with the following registration:</p>
-
-<pre><code class="language-json">{
-  &quot;device-id&quot;: &quot;sigfox-backend&quot;
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-json" data-lang="json">{
+  <span style="color:#f92672">&#34;device-id&#34;</span>: <span style="color:#e6db74">&#34;sigfox-backend&#34;</span>
 }
-</code></pre>
-
-<p>Create new credentials for the <em>gateway device</em>. For example, using
+</code></pre></div><p>Create new credentials for the <em>gateway device</em>. For example, using
 a username of <code>sigfox</code> and a password of <code>test12</code>:</p>
-
-<pre><code class="language-json">{
-  &quot;auth-id&quot;: &quot;sigfox&quot;,
-  &quot;device-id&quot;: &quot;sigfox-backend&quot;,
-  &quot;enabled&quot;: true,
-  &quot;secrets&quot;: [
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-json" data-lang="json">{
+  <span style="color:#f92672">&#34;auth-id&#34;</span>: <span style="color:#e6db74">&#34;sigfox&#34;</span>,
+  <span style="color:#f92672">&#34;device-id&#34;</span>: <span style="color:#e6db74">&#34;sigfox-backend&#34;</span>,
+  <span style="color:#f92672">&#34;enabled&#34;</span>: <span style="color:#66d9ef">true</span>,
+  <span style="color:#f92672">&#34;secrets&#34;</span>: [
     {
-      &quot;pwd-plain&quot;: &quot;test12&quot;
+      <span style="color:#f92672">&#34;pwd-plain&#34;</span>: <span style="color:#e6db74">&#34;test12&#34;</span>
     }
   ],
-  &quot;type&quot;: &quot;hashed-password&quot;
+  <span style="color:#f92672">&#34;type&#34;</span>: <span style="color:#e6db74">&#34;hashed-password&#34;</span>
 }
-</code></pre>
-
-<p>Create a new <em>device</em>, referencing the previous <em>gateway device</em>. The
+</code></pre></div><p>Create a new <em>device</em>, referencing the previous <em>gateway device</em>. The
 <em>device id</em> must be your Sigfox device ID (e.g. <code>1AB2C3</code>):</p>
-
-<pre><code class="language-json">{
-  &quot;device-id&quot;: &quot;1AB2C3&quot;,
-  &quot;via&quot;: &quot;sigfox-backend&quot;
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-json" data-lang="json">{
+  <span style="color:#f92672">&#34;device-id&#34;</span>: <span style="color:#e6db74">&#34;1AB2C3&#34;</span>,
+  <span style="color:#f92672">&#34;via&#34;</span>: <span style="color:#e6db74">&#34;sigfox-backend&#34;</span>
 }
-</code></pre>
-
-<h3 id="setting-up-callbacks">Setting up callbacks</h3>
-
+</code></pre></div><h3 id="setting-up-callbacks">Setting up callbacks</h3>
 <p>Log in to the Sigfox backend at <a href="https://backend.sigfox.com">https://backend.sigfox.com</a> and then open up
 the view <code>Device Type</code> -&gt; <code>Callbacks</code>.</p>
-
 <p>Create a new &ldquo;Custom&rdquo; callback, with the following settings
 (replacing <code>&lt;TENANT&gt;</code> with the name of the tenant):</p>
-
 <ul>
 <li><strong>Type</strong>: <code>DATA</code> – <code>UPLINK</code></li>
 <li><strong>Channel</strong>: <code>URL</code></li>
 <li><strong>Url pattern</strong>: <code>https://iot-sigfox-adapter.my.hono/data/telemetry/&lt;TENANT&gt;?device={device}&amp;data={data}</code></li>
 <li><strong>Use HTTP Method</strong>: <code>GET</code></li>
 <li><strong>Headers</strong>
-
 <ul>
 <li><code>Authorization</code> – <code>Basic …</code> (see note below)</li>
-</ul></li>
+</ul>
+</li>
 <li><strong>Send SNI</strong>: ☑ (Enabled)</li>
 </ul>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Credentials</h4>
     <div><p>At the moment you need to manually put in the <code>Authorization</code> header,
@@ -2096,46 +2116,30 @@
 Sigfox backend, which cannot be fixed by Hono. The backend does not
 properly escape the <code>@</code> character, and thus sends <code>foo%40tenant</code>
 instead of <code>foo@tenant</code> to the Hono protocol adapter.</p>
-
 <p>As a workaround, you can explicitly set the <code>Authorization</code> header to a
 value of <code>Basic &lt;base64 encoded credentials&gt;</code>. You can encode the
 credentials using:</p>
-
-<pre><code class="language-sh">echo -n &quot;sigfox@tenant:password&quot; | base64
-</code></pre>
-
-<p>To get the full value, including the <code>Basic</code> you may use:</p>
-
-<pre><code class="language-sh">echo &quot;Basic $(echo -n &quot;sigfox@tenant:password&quot; | base64)&quot;
-</code></pre>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">echo -n <span style="color:#e6db74">&#34;sigfox@tenant:password&#34;</span> | base64
+</code></pre></div><p>To get the full value, including the <code>Basic</code> you may use:</p>
+<div class="highlight"><pre style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4"><code class="language-sh" data-lang="sh">echo <span style="color:#e6db74">&#34;Basic </span><span style="color:#66d9ef">$(</span>echo -n <span style="color:#e6db74">&#34;sigfox@tenant:password&#34;</span> | base64<span style="color:#66d9ef">)</span><span style="color:#e6db74">&#34;</span>
+</code></pre></div></div>
 </div>
-</div>
-
-<h3 id="enabling-command-control">Enabling command &amp; control</h3>
-
+<h3 id="enabling-command--control">Enabling command &amp; control</h3>
 <p>It is possible to enable command &amp; control as well. For this you need to:</p>
-
 <ul>
 <li>Switch the <strong>Type</strong> of the <code>DATA</code> callback from <code>UPLINK</code> to <code>BIDIR</code></li>
 <li>Add the <code>ack</code> query parameter to the <strong>Url pattern</strong>, e.g. <code>https://iot-sigfox-adapter.my.hono/data/telemetry/&lt;TENANT&gt;?device={device}&amp;data={data}&amp;ack={ack}</code></li>
 </ul>
-
 <div class="alert alert-notice">
     <h4 class="alert-heading"><i class="fas fa-info-circle"></i> Command requirements</h4>
     <div>Sigfox allows only a very specific payload in command messages. You must send
 exactly 8 bytes of data. It only supports <em>one way commands</em>.</div>
 </div>
-
 <h2 id="events">Events</h2>
-
 <p>You can send events by using the path <code>/data/event</code> on the URL.</p>
-
 <h2 id="consuming-data">Consuming data</h2>
-
 <p>Use the standard way of consuming Hono messages.</p>
-
 <h2 id="known-bugs-and-limitations">Known bugs and limitations</h2>
-
 <ul>
 <li>Only the simple <code>URL</code> and only <em>data</em> (no <em>service</em> or <em>device events</em> are
 currently supported.</li>
@@ -3263,19 +3267,19 @@
     <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?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617757974"></script>
-    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617757974"></script>
-    <script src="/hono/docs/js/jquery.sticky.js?1617757974"></script>
-    <script src="/hono/docs/js/featherlight.min.js?1617757974"></script>
-    <script src="/hono/docs/js/highlight.pack.js?1617757974"></script>
+    <script src="/hono/docs/js/clipboard.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.min.js?1617844324"></script>
+    <script src="/hono/docs/js/perfect-scrollbar.jquery.min.js?1617844324"></script>
+    <script src="/hono/docs/js/jquery.sticky.js?1617844324"></script>
+    <script src="/hono/docs/js/featherlight.min.js?1617844324"></script>
+    <script src="/hono/docs/js/highlight.pack.js?1617844324"></script>
     <script>hljs.initHighlightingOnLoad();</script>
-    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617757974"></script>
-    <script src="/hono/docs/js/learn.js?1617757974"></script>
-    <script src="/hono/docs/js/hugo-learn.js?1617757974"></script>
+    <script src="/hono/docs/js/modernizr.custom-3.6.0.js?1617844324"></script>
+    <script src="/hono/docs/js/learn.js?1617844324"></script>
+    <script src="/hono/docs/js/hugo-learn.js?1617844324"></script>
 
-    <link href="/hono/docs/mermaid/mermaid.css?1617757974" rel="stylesheet" />
-    <script src="/hono/docs/mermaid/mermaid.js?1617757974"></script>
+    <link href="/hono/docs/mermaid/mermaid.css?1617844324" rel="stylesheet" />
+    <script src="/hono/docs/mermaid/mermaid.js?1617844324"></script>
     <script>
         mermaid.initialize({ startOnLoad: true });
     </script>