UNPKG

signalk-server

Version:

An implementation of a [Signal K](http://signalk.org) server for boats.

71 lines (67 loc) 46.3 kB
<!DOCTYPE html><html class="default" lang="en" data-base="../../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Plugin | Signal K</title><meta name="description" content="Documentation for Signal K"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../../assets/style.css?cache=1750891486567"/><link rel="stylesheet" href="../../assets/highlight.css?cache=1750891486567"/><script defer src="../../assets/main.js?cache=1750891486567"></script><script async src="../../assets/icons.js?cache=1750891486567" id="tsd-icons-script"></script><script async src="../../assets/search.js?cache=1750891486567" id="tsd-search-script"></script><script async src="../../assets/navigation.js?cache=1750891486567" id="tsd-nav-script"></script><script async src="../../assets/hierarchy.js?cache=1750891486567" id="tsd-hierarchy-script"></script><link rel="stylesheet" href="../../assets/theme.css"/></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../../index.html" class="title"><img src="../../assets/logo.svg" alt="Signal K"/></a><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-search"></use></svg><span class="visible@s">Search</span></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><div id="tsd-toolbar-links"><a href="https://discord.gg/uuZrwz4dCS" target="_blank" rel="noopener" class="toolbar-icon visible@s" aria-label="Discord"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M524.5 69.8a1.5 1.5 0 0 0 -.8-.7A485.1 485.1 0 0 0 404.1 32a1.8 1.8 0 0 0 -1.9 .9 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.1-30.6 1.9 1.9 0 0 0 -1.9-.9A483.7 483.7 0 0 0 116.1 69.1a1.7 1.7 0 0 0 -.8 .7C39.1 183.7 18.2 294.7 28.4 404.4a2 2 0 0 0 .8 1.4A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.1-.7A348.2 348.2 0 0 0 208.1 430.4a1.9 1.9 0 0 0 -1-2.6 321.2 321.2 0 0 1 -45.9-21.9 1.9 1.9 0 0 1 -.2-3.1c3.1-2.3 6.2-4.7 9.1-7.1a1.8 1.8 0 0 1 1.9-.3c96.2 43.9 200.4 43.9 295.5 0a1.8 1.8 0 0 1 1.9 .2c2.9 2.4 6 4.9 9.1 7.2a1.9 1.9 0 0 1 -.2 3.1 301.4 301.4 0 0 1 -45.9 21.8 1.9 1.9 0 0 0 -1 2.6 391.1 391.1 0 0 0 30 48.8 1.9 1.9 0 0 0 2.1 .7A486 486 0 0 0 610.7 405.7a1.9 1.9 0 0 0 .8-1.4C623.7 277.6 590.9 167.5 524.5 69.8zM222.5 337.6c-29 0-52.8-26.6-52.8-59.2S193.1 219.1 222.5 219.1c29.7 0 53.3 26.8 52.8 59.2C275.3 311 251.9 337.6 222.5 337.6zm195.4 0c-29 0-52.8-26.6-52.8-59.2S388.4 219.1 417.9 219.1c29.7 0 53.3 26.8 52.8 59.2C470.7 311 447.5 337.6 417.9 337.6z"></path></svg></a><a href="https://github.com/SignalK/signalk-server" target="_blank" rel="noopener" class="toolbar-icon visible@s" aria-label="Discord"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../server-api.html">@signalk/server-api</a></li><li><a href="" aria-current="page">Plugin</a></li></ul><h1>Interface Plugin</h1></div><section class="tsd-panel tsd-comment"><div class="tsd-comment tsd-typography"><p>Plugins are components that extend functionality of the server and can be installed via the Signal K AppStore.</p> <p>A plugin can:</p> <ul> <li>Interact with the <a href="ServerAPI.html" class="tsd-kind-interface">ServerAPI</a>, including the full data model.</li> <li>Provide a <a href="../../Developing/Plugins/WebApps.html">webapp interface</a>.</li> <li>Provide access to resources such as <code>route,</code> <code>waypoint</code>,<code>POI</code>, or <code>charts</code> via the <em><a href="../../Developing/REST_APIs/Resources_API.html">Resources API</a></em> by operating as a <em><a href="../../Developing/Plugins/Resource_Providers.html">Resources Provider Plugin</a></em>.</li> <li>Perform common autopilot operations by acting as an <a href="../../Developing/Plugins/Autopilot_Providers.html">Autopilot Provider Plugin</a></li> <li>Perform course calculations by integrating with the <a href="../../Developing/REST_APIs/Course_API.html">Course API</a>.</li> <li>process requests</li> </ul> <div class="tsd-alert tsd-alert-warning"><div class="tsd-alert-title"><svg width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><use href="../../assets/icons.svg#icon-alertWarning"></use></svg><span>Warning</span></div><p> Typing is incomplete. If you find a missing or inaccurate type, please <a href="https://github.com/SignalK/signalk-server/issues/1917">report it</a>.</p> </div> </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example">Example<a href="#example" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Signal K server plugins are NodeJs <code>javascript</code> or <code>typescript</code> projects that return an object that implements this interface.</p> <pre><code class="typescript"><span class="hl-5">import</span><span class="hl-1"> { Plugin, ServerAPI } </span><span class="hl-5">from</span><span class="hl-1"> </span><span class="hl-2">&#39;@signalk/server-api&#39;</span><span class="hl-1">;</span><br/><br/><span class="hl-3">module</span><span class="hl-1">.</span><span class="hl-3">exports</span><span class="hl-1"> </span><span class="hl-5">=</span><span class="hl-1"> (</span><span class="hl-0">app</span><span class="hl-5">:</span><span class="hl-1"> </span><span class="hl-0">ServerAPI</span><span class="hl-1">)</span><span class="hl-5">:</span><span class="hl-1"> </span><span class="hl-0">Plugin</span><span class="hl-1"> </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-5">const</span><span class="hl-1"> </span><span class="hl-3">plugin</span><span class="hl-5">:</span><span class="hl-1"> </span><span class="hl-0">Plugin</span><span class="hl-1"> </span><span class="hl-5">=</span><span class="hl-1"> {</span><br/><span class="hl-1"> id: </span><span class="hl-2">&#39;my-signalk-plugin&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> name: </span><span class="hl-2">&#39;My Great Plugin&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> </span><span class="hl-8">start</span><span class="hl-1">: (</span><span class="hl-0">settings</span><span class="hl-1">, </span><span class="hl-0">restartPlugin</span><span class="hl-1">) </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// start up code goes here.</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-8">stop</span><span class="hl-1">: () </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-4">// shutdown code goes here.</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> </span><span class="hl-8">schema</span><span class="hl-1">: () </span><span class="hl-5">=&gt;</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-0">properties</span><span class="hl-1">: {</span><br/><span class="hl-1"> </span><span class="hl-4">// plugin configuration goes here</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> };</span><br/><br/><span class="hl-1"> </span><span class="hl-5">return</span><span class="hl-1"> plugin;</span><br/><span class="hl-1">}</span> </code><button type="button">Copy</button></pre> </div><div class="tsd-tag-see"><h4 class="tsd-anchor-link" id="see">See<a href="#see" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h4><p><a href="../../Developing/Plugins.html">Developing Server Plugins</a></p> </div></div></section><div class="tsd-signature"><span class="tsd-signature-keyword">interface</span> <span class="tsd-kind-interface">Plugin</span> <span class="tsd-signature-symbol">{</span><br/>    <a class="tsd-kind-property" href="#id">id</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#name">name</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#schema">schema</a><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> (<span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">object</span>)<span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#description">description</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#enabledbydefault">enabledByDefault</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#getopenapi">getOpenApi</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#statusmessage">statusMessage</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-property" href="#uischema">uiSchema</a><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> (<span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">object</span>)<span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-call-signature" href="#start-1">start</a><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">config</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">restart</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">newConfiguration</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-call-signature" href="#stop-1">stop</a><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span> <span class="tsd-signature-symbol">|</span> <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-call-signature" href="#registerwithrouter-1">registerWithRouter</a><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">router</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IRouter</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">;</span><br/>    <a class="tsd-kind-call-signature" href="#signalkapiroutes-1">signalKApiRoutes</a><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">router</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IRouter</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IRouter</span><span class="tsd-signature-symbol">;</span><br/><span class="tsd-signature-symbol">}</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L53">plugin.ts:53</a></li></ul></aside><section class="tsd-panel-group tsd-index-group"><section class="tsd-panel tsd-index-panel"><details class="tsd-index-content tsd-accordion" open><summary class="tsd-accordion-summary tsd-index-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h5 class="tsd-index-heading uppercase">Index</h5></summary><div class="tsd-accordion-details"><section class="tsd-index-section"><h3 class="tsd-index-heading">Configuration</h3><div class="tsd-index-list"><a href="#schema" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>schema</span></a> <a href="#enabledbydefault" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>enabled<wbr/>By<wbr/>Default?</span></a> <a href="#uischema" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>ui<wbr/>Schema?</span></a> </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Identification</h3><div class="tsd-index-list"><a href="#id" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>id</span></a> <a href="#name" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>name</span></a> </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Lifecycle</h3><div class="tsd-index-list"><a href="#start" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>start</span></a> <a href="#stop" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>stop</span></a> </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Other</h3><div class="tsd-index-list"><a href="#description" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>description?</span></a> <a href="#getopenapi" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>get<wbr/>Open<wbr/>Api?</span></a> <a href="#statusmessage" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>status<wbr/>Message?</span></a> <a href="#signalkapiroutes" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>signal<wbr/>K<wbr/>Api<wbr/>Routes?</span></a> </div></section><section class="tsd-index-section"><h3 class="tsd-index-heading">Rest API</h3><div class="tsd-index-list"><a href="#registerwithrouter" class="tsd-index-link"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>register<wbr/>With<wbr/>Router?</span></a> </div></section></div></details></section></section><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Configuration"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h2>Configuration</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="schema"><span>schema</span><a href="#schema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">schema</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> (<span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">object</span>)</div><div class="tsd-comment tsd-typography"><p>A <a href="http://json-schema.org/">JSON Schema</a> object describing the structure of the configuration data.</p> <p>This is used by the server to render the plugin's configuration screen in the Admin UI. The configuration data is stored by the server in <code>$SIGNALK_NODE_CONFIG_DIR/plugin-config-data/&lt;plugin-name&gt;.json</code>. <em>(Default value of <code>SIGNALK_NODE_CONFIG_DIR</code> is <code>$HOME/.signalk</code>.)</em></p> </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-1">Example<a href="#example-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h4><pre><code class="javascript"><span class="hl-1"> plugin.schema </span><span class="hl-5">=</span><span class="hl-1"> {</span><br/><span class="hl-1"> type: </span><span class="hl-2">&#39;object&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> required: [</span><span class="hl-2">&#39;some_string&#39;</span><span class="hl-1">, </span><span class="hl-2">&#39;some_other_number&#39;</span><span class="hl-1">],</span><br/><span class="hl-1"> properties: {</span><br/><span class="hl-1"> some_string: {</span><br/><span class="hl-1"> type: </span><span class="hl-2">&#39;string&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> title: </span><span class="hl-2">&#39;Some string that the plugin needs&#39;</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> some_number: {</span><br/><span class="hl-1"> type: </span><span class="hl-2">&#39;number&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> title: </span><span class="hl-2">&#39;Some number that the plugin needs&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> default: </span><span class="hl-3">60</span><br/><span class="hl-1"> },</span><br/><span class="hl-1"> some_other_number: {</span><br/><span class="hl-1"> type: </span><span class="hl-2">&#39;number&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> title: </span><span class="hl-2">&#39;Some other number that the plugin needs&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> default: </span><span class="hl-3">5</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> }</span><br/><span class="hl-1"> };</span> </code><button type="button">Copy</button></pre> </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L132">plugin.ts:132</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="enabledbydefault"><code class="tsd-tag">Optional</code><span>enabled<wbr/>By<wbr/>Default</span><a href="#enabledbydefault" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">enabledByDefault</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">boolean</span></div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L98">plugin.ts:98</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="uischema"><code class="tsd-tag">Optional</code><span>ui<wbr/>Schema</span><a href="#uischema" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">uiSchema</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">object</span> <span class="tsd-signature-symbol">|</span> (<span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">object</span>)</div><div class="tsd-comment tsd-typography"><p>A <a href="https://github.com/mozilla-services/react-jsonschema-form#the-uischema-object">uiSchema object</a> which is used to control how the user interface is rendered in the Admin UI.</p> <p>For more information, see <a href="https://github.com/RxNT/react-jsonschema-form-extras#collapsible-fields-collapsible">react-jsonschema-form-extras</a></p> </div><div class="tsd-comment tsd-typography"><div class="tsd-tag-example"><h4 class="tsd-anchor-link" id="example-2">Example<a href="#example-2" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>Make all data in an object called 'myObject' collapsible:</p> <pre><code class="javascript"><span class="hl-1">uiSchema[</span><span class="hl-2">&#39;myObject&#39;</span><span class="hl-1">] </span><span class="hl-5">=</span><span class="hl-1"> {</span><br/><span class="hl-1"> </span><span class="hl-2">&#39;ui:field&#39;</span><span class="hl-1">: </span><span class="hl-2">&#39;collapsible&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> collapse: {</span><br/><span class="hl-1"> field: </span><span class="hl-2">&#39;ObjectField&#39;</span><span class="hl-1">,</span><br/><span class="hl-1"> wrapClassName: </span><span class="hl-2">&#39;panel-group&#39;</span><br/><span class="hl-1"> }</span><br/><span class="hl-1">}</span> </code><button type="button">Copy</button></pre> </div></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L153">plugin.ts:153</a></li></ul></aside></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Identification"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h2>Identification</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="id"><span>id</span><a href="#id" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">id</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Used to identify the plugin in the server, for example when storing the plugin's configuration and in http endpoints.</p> </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L60">plugin.ts:60</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="name"><span>name</span><a href="#name" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">name</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span></div><div class="tsd-comment tsd-typography"><p>Human oriented name for the plugin. This is used in the server's plugin configuration UI.</p> </div><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L66">plugin.ts:66</a></li></ul></aside></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Lifecycle"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h2>Lifecycle</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="start"><span>start</span><a href="#start" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="start-1"><span class="tsd-kind-call-signature">start</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">config</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">,</span> <span class="tsd-kind-parameter">restart</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">newConfiguration</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#start-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>This function is called to start the plugin.</p> <p>It is called:</p> <ul> <li>during server startup for enabled plugins (by configuration or by default)</li> <li>when a plugin is enabled in the admin UI</li> <li>after <a href="#stop" class="tsd-kind-method">stop</a> when the configuration of an enabled plugin has been updated in the admin UI</li> </ul> </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">config</span>: <span class="tsd-signature-type">object</span></span><div class="tsd-comment tsd-typography"><p>the configuration data entered via the Plugin Config screen</p> </div><div class="tsd-comment tsd-typography"></div></li><li><span><span class="tsd-kind-parameter">restart</span>: <span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">newConfiguration</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">object</span><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">void</span></span><div class="tsd-comment tsd-typography"><p>a function that can be called by the plugin to restart itself</p> </div><div class="tsd-comment tsd-typography"></div></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L83">plugin.ts:83</a></li></ul></aside></div></li></ul></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="stop"><span>stop</span><a href="#stop" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="stop-1"><span class="tsd-kind-call-signature">stop</span><span class="tsd-signature-symbol">()</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span> <span class="tsd-signature-symbol">|</span> <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span><a href="#stop-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>This function is called when the plugin is disabled or after configuration changes. Use this function to &quot;clean up&quot; the resources consumed by the plugin i.e. unsubscribe from streams, stop timers / loops and close devices. If there are asynchronous operations in your plugin's stop implementation you should return a Promise that resolves when stopping is complete.</p> </div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span> <span class="tsd-signature-symbol">|</span> <a href="https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise" class="tsd-signature-type external" target="_blank">Promise</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L93">plugin.ts:93</a></li></ul></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Other"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h2>Other</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="description"><code class="tsd-tag">Optional</code><span>description</span><a href="#description" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">description</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">string</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L68">plugin.ts:68</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="getopenapi"><code class="tsd-tag">Optional</code><span>get<wbr/>Open<wbr/>Api</span><a href="#getopenapi" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">getOpenApi</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">object</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L178">plugin.ts:178</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="statusmessage"><code class="tsd-tag">Optional</code><span>status<wbr/>Message</span><a href="#statusmessage" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><div class="tsd-signature"><span class="tsd-kind-property">statusMessage</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-symbol">()</span> <span class="tsd-signature-symbol">=&gt;</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">void</span></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L180">plugin.ts:180</a></li></ul></aside></section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="signalkapiroutes"><code class="tsd-tag">Optional</code><span>signal<wbr/>K<wbr/>Api<wbr/>Routes</span><a href="#signalkapiroutes" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="signalkapiroutes-1"><span class="tsd-kind-call-signature">signalKApiRoutes</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">router</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IRouter</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IRouter</span><a href="#signalkapiroutes-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">router</span>: <span class="tsd-signature-type">IRouter</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">IRouter</span></h4><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L182">plugin.ts:182</a></li></ul></aside></div></li></ul></section></section></details><details class="tsd-panel-group tsd-member-group tsd-accordion" open><summary class="tsd-accordion-summary" data-key="section-Rest API"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h2>Rest API</h2></summary><section><section class="tsd-panel tsd-member"><h3 class="tsd-anchor-link" id="registerwithrouter"><code class="tsd-tag">Optional</code><span>register<wbr/>With<wbr/>Router</span><a href="#registerwithrouter" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><ul class="tsd-signatures"><li class=""><div class="tsd-signature tsd-anchor-link" id="registerwithrouter-1"><span class="tsd-kind-call-signature">registerWithRouter</span><span class="tsd-signature-symbol">(</span><span class="tsd-kind-parameter">router</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">IRouter</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">void</span><a href="#registerwithrouter-1" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></div><div class="tsd-description"><div class="tsd-comment tsd-typography"><p>Plugins can implement this method to provide an API. Like <a href="#start" class="tsd-kind-method">start</a> and <a href="#stop" class="tsd-kind-method">stop</a>, this function will be called during plugin startup with an <a href="https://expressjs.com/">Express</a> router as the parameter.</p> <p>The router will be mounted at <code>/plugins/&lt;pluginId&gt;</code> and you can use standard <em>Express</em> <em>(<code>.get()</code> <code>.post()</code> <code>.use()</code>, etc)</em> methods to add HTTP path handlers.</p> <div class="tsd-alert tsd-alert-note"><div class="tsd-alert-title"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16" aria-hidden="true"><use href="../../assets/icons.svg#icon-alertNote"></use></svg><span>Note</span></div><p> <code>GET /plugins/&lt;pluginid&gt;</code> and <code>POST /plugins/&lt;pluginid&gt;/configure</code> are reserved by server (see below).</p> </div> <p>It should be noted that <em>Express</em> does not have a public API for deregistering subrouters, so <a href="#stop" class="tsd-kind-method">stop</a> does not do anything to the router.</p> <p>If a plugin does provide an API, it is strongly recommended that it implement <a href="#getopenapi" class="tsd-kind-property">getOpenApi</a> to document its operation. Doing so promotes interoperability with other plugins / webapps by making it easy to find and use the functionality built into plugins. It is also a means to avoid duplication, promote reuse and the possibility of including them in the Signal K specification.</p> </div><div class="tsd-parameters"><h4 class="tsd-parameters-title">Parameters</h4><ul class="tsd-parameter-list"><li><span><span class="tsd-kind-parameter">router</span>: <span class="tsd-signature-type">IRouter</span></span></li></ul></div><h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span></h4><div class="tsd-comment tsd-typography"></div><aside class="tsd-sources"><ul><li>Defined in <a href="https://github.com/SignalK/signalk-server/blob/41bd3684f484c0e782078bc972d68c16ee0c81c2/packages/server-api/src/plugin.ts#L176">plugin.ts:176</a></li></ul></aside></div></li></ul></section></section></details></div><div class="col-sidebar"><div class="page-menu"><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Configuration"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg>Configuration</summary><div><a href="#schema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>schema</span></a><a href="#enabledbydefault"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>enabled<wbr/>By<wbr/>Default</span></a><a href="#uischema"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>ui<wbr/>Schema</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Identification"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg>Identification</summary><div><a href="#id"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>id</span></a><a href="#name"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>name</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Lifecycle"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg>Lifecycle</summary><div><a href="#start"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>start</span></a><a href="#stop"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>stop</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Other"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg>Other</summary><div><a href="#description"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>description</span></a><a href="#getopenapi"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>get<wbr/>Open<wbr/>Api</span></a><a href="#statusmessage"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Property"><use href="../../assets/icons.svg#icon-1024"></use></svg><span>status<wbr/>Message</span></a><a href="#signalkapiroutes"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>signal<wbr/>K<wbr/>Api<wbr/>Routes</span></a></div></details><details open class="tsd-accordion tsd-page-navigation-section"><summary class="tsd-accordion-summary" data-key="section-Rest API"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg>Rest API</summary><div><a href="#registerwithrouter"><svg class="tsd-kind-icon" viewBox="0 0 24 24" aria-label="Method"><use href="../../assets/icons.svg#icon-2048"></use></svg><span>register<wbr/>With<wbr/>Router</span></a></div></details></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../../modules.html">Signal K</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>