signalk-server
Version:
An implementation of a [Signal K](http://signalk.org) server for boats.
71 lines (67 loc) • 46.3 kB
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">'@signalk/server-api'</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">=></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">'my-signalk-plugin'</span><span class="hl-1">,</span><br/><span class="hl-1"> name: </span><span class="hl-2">'My Great Plugin'</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">=></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">=></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">=></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">=></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">=></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">=></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">=></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">=></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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></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">=></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/<plugin-name>.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">'object'</span><span class="hl-1">,</span><br/><span class="hl-1"> required: [</span><span class="hl-2">'some_string'</span><span class="hl-1">, </span><span class="hl-2">'some_other_number'</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">'string'</span><span class="hl-1">,</span><br/><span class="hl-1"> title: </span><span class="hl-2">'Some string that the plugin needs'</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">'number'</span><span class="hl-1">,</span><br/><span class="hl-1"> title: </span><span class="hl-2">'Some number that the plugin needs'</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">'number'</span><span class="hl-1">,</span><br/><span class="hl-1"> title: </span><span class="hl-2">'Some other number that the plugin needs'</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">=></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">'myObject'</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">'ui:field'</span><span class="hl-1">: </span><span class="hl-2">'collapsible'</span><span class="hl-1">,</span><br/><span class="hl-1"> collapse: {</span><br/><span class="hl-1"> field: </span><span class="hl-2">'ObjectField'</span><span class="hl-1">,</span><br/><span class="hl-1"> wrapClassName: </span><span class="hl-2">'panel-group'</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">=></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">=></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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></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 "clean up"
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"><</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">></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">=></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">=></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/<pluginId></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/<pluginid></code> and <code>POST /plugins/<pluginid>/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>