UNPKG

93.1 kBMarkdownView Raw
1---
2title: FBP Network Protocol
3layout: documentation
4permalink: index.html
5---
6The Flow-Based Programming network protocol (*FBP protocol*) has been designed primarily for flow-based programming interfaces like the [Flowhub](https://flowhub.io) to communicate with various FBP runtimes. However, it can also be utilized for communication between different runtimes, for example server-to-server or server-to-microcontroller.
7
8## Implementations
9
10Clients
11
12* [noflo-ui](https://github.com/noflo/noflo-ui) is an open source visual IDE, which powers [Flowhub](http://flowhub.io)
13* [fbp-spec](https://github.com/flowbased/fbp-spec) is a data-driven testing tool for FBP components/graphs.
14* [fbp-protocol-client](https://github.com/flowbased/fbp-protocol-client) is a low-level JavaScript client library supporting all the common FBP protocol transports
15* [fbp-client](https://github.com/flowbased/fbp-client) is a higher-level JavaScript client library supporting all the common FBP protocol transports
16
17Runtimes
18
19* [noflo-runtime-base](https://github.com/noflo/noflo-runtime-base) is a transport-independent implementation of the protocol for [NoFlo](http://noflojs.org), client-side and server-side JavaScript programming. WebSocket, WebRTC and iFrame implementations exists.
20* [microflo](https://github.com/jonnor/microflo) is a WebSocket implementation of the protocol in JS/C++, for microcontrollers and embedded systems
21* [Elixir FBP](http://www.elixirfbp.org/) is a WebSocket implementation in Elixir, for programming with systems in Elixir runnin on the Erlang VM.
22* [imgflo](https://github.com/jonnor/imgflo) is a WebSocket implementation in C, for image processing
23* [javafbp-runtime](https://github.com/jonnor/javafbp-runtime) is a Websocket implementation in Java for [JavaFBP](https://github.com/jpaulm/javafbp), for JRE and Android development
24* [sndflo](https://github.com/jonnor/sndflo) is a WebSocket implementation for the SuperCollider audio programming environment
25* [MsgFlo](https://github.com/the-grid/msgflo) is a Websocket implementation in Node.js for heterogenous distributed systems communicating via message queues
26* [rill](https://github.com/PermaData/rill) is a Python FBP runtime implementation, with support for the protocol over WebSocket.
27
28Some [examples](https://github.com/flowbased/protocol-examples) have also been created, to help implementors.
29
30## Test suite
31
32The [fbp-protocol](https://github.com/flowbased/fbp-protocol) tool provides a set of tests for FBP protocol implementations.
33
34## Changes
35
36* 2018-03-27:
37 - Added schema for `network:edges` output message
38 - Modified `subgraph` key of `network:data` and other network packet events to be an array as specified in the text
39* 2018-03-26:
40 - Fixed documentation for `component:setsource` to use `component:source` input, and `component:component` output
41 - Added schema for `trace:error` message
42 - Added `:error` output to all capabilities where user can perform actions that may fail
43* 2018-03-23:
44 - Added optional `graph` key to `network:error` payloads
45* 2018-03-22: **Version 0.7**
46 - Added `network:debug` and `network:getstatus` to the `network:control` permission
47* 2018-03-21:
48 - Fixed signature of `runtime:packet.payload`, `runtime:packetsent.payload`, and port definition `default` to accept any payload type
49 - Added `values` and `default` keys for port definitions
50 - Added schema for `component:componentsready` output message
51 - Added schema for `graph:clear` output message
52 - Added `packetsent` response for `runtime:packet` input message
53* 2017-09-17:
54 - Added `schema` support for ports and packets
55 - Documented known metadata keys for various graph entities
56* 2017-04-09: **Version 0.6**
57 - Version 0.6. No breaking changes over 0.5.
58 - Added additional capabilities `graph:readonly`, `network:control`, `network:data`, `network:status`. Especially useful for read-only access.
59 - Deprecated the `protocol:network` capability in favor of the new fine-gained `network:*` capabilities.
60 - Each capability now defines the set of messages contained in it. Available as `inputs` and `outputs` in the schema `/shared/capabilities`.
61* 2017-05-04:
62 - Fixed protocol errors (`graph:error`, `component:error` and `runtime:error`) to have mandatory `message` string payload.
63 - Fixed missing `required` markers in some JSON schemas for `graph` protocol. Affected messages:
64`graph:renamegroup`, `graph:renameinport`, `graph:removeinport`, `graph:addinitial`, `graph:changeedge`
65 - More readable HTML output, including property value types and examples
66* 2017-05-03:
67 - Added more optional metadata to `runtime:runtime` message: `repository`, `repositoryVersion` and `namespace`
68* 2017-02-20:
69 - Fixed payload definition of `network:edges` missing mandatory `graph` key
70* 2016-07-01:
71 - `network:error` payload may now contain an optional `stacktrace`
72* 2016-06-23:
73 - Trace subprotocol also available in machine-readable format
74* 2016-06-17:
75 - Protocol definition available as machine-readable JSON [schemas](https://github.com/flowbased/fbp-protocol/tree/master/schema/yaml).
76 - The human-readable HTML documentation is generated from this defintion.
77 - The npm package `fbp-protocol` contains the schemas as YAML, JSON and .js modules.
78* 2015-11-20:
79 - Initial `trace` subprotocol, for [Flowtrace](https://github.com/flowbased/flowtrace) support
80* 2015-03-27:
81 - Documented `network` `persist` and `component` `componentsready` messages
82* 2015-03-26: **Version 0.5**
83 - All messages sent to runtime should include the `secret` in payload
84 - Runtime description message includes an `allCapabilities` array describing capabilities of the runtime, including ones not available to current user
85* 2014-10-23
86 - added clarifications to network running state in `status`, `started`, and `stopped` messages
87* 2014-09-26
88 - Add `secret` as payload to `getruntime` to support [access levels](https://github.com/noflo/noflo-ui/issues/278)
89* 2014-08-05:
90 - Add get, list, graph, graphsdone commands to the graph protocol
91 - Add list, network commands to the network protocol
92* 2014-07-15:
93 - Add changenode, changeedge, addgroup, removegroup, renamegroup,
94 changegroup commands to the graph protocol
95* 2014-03-13: **Version 0.4**
96 - Capability discovery support
97 - Network exported port messaging for remote subgraphs
98* 2014-02-18: **Version 0.3**
99 - Support for exported graph ports
100* 2014-01-09: **Version 0.2**
101 - Multi-graph support via the `graph` key in payload
102 - Harmonization with [JSON format](http://noflojs.org/documentation/json/) by renaming `from`/`to` in edges to `src`/`tgt`
103 - Network `edges` message
104
105## Basics
106
107The FBP protocol is a message-based protocol that can be handled using various different transport mechanisms. The messages are designed to be independent, and not to form a request-response cycle in order to allow highly asynchronous operations and situations where multiple protocol clients talk with the same runtime.
108
109There are currently three transports utilized commonly:
110
111* [Web Messaging](http://en.wikipedia.org/wiki/Web_Messaging) (`postMessage`) for communication between different web pages or WebWorkers running inside the same browser instance
112* [WebSocket](http://en.wikipedia.org/wiki/WebSocket) for communicating between a browser and a server, or between two server instances
113* [WebRTC](http://en.wikipedia.org/wiki/WebRTC) for peer-to-peer communications between a runtime and a client
114
115Different transports can be utilized as needed. It could be interesting to implement the FBP protocol using [MQTT](http://en.wikipedia.org/wiki/MQ_Telemetry_Transport), for instance.
116
117### Sub-protocols
118
119The FBP protocol is divided into sub-protocols for each of the major resources that can be manipulated:
120
121* [`runtime`](#runtime-protocol): communications about runtime capabilities and its exported ports
122* [`graph`](#graph-protocol): communications about graph changes
123* [`component`](#component-protocol): communications about available components and changes to them
124* [`network`](#network-protocol): communications related to running a FBP graph
125* [`trace`](#trace-protocol): communications related to tracing a FBP network
126
127### Capabilities
128
129Not all runtimes implementation supports all features of the protocol. Also, a runtime may restrict *access* to features, either to all clients based on configuration, or based on the *secret* provided in the messages. To support this a set of **capabilities** are defined, which are reported by the runtime in the [runtime:runtime](#runtime-runtime) message.
130
131When receiving a message, the runtime should check for the associated capability. If the capability is not supported, or the client does not have access to the capability, the runtime should respond with an `error` reply on the relevant `protocol`.
132
133A few commands do not require any capabilities: the runtime info request/response ([runtime:getruntime](#runtime-getruntime) and [runtime:runtime](#runtime-runtime)), and the error responses ([runtime:error](#runtime-error), [graph:error](#graph-error), [network:error](#network-error), [component:error](#component-error)).
134
135<section class='capabilities'>
136<h4 class='capability name'>protocol:network</h4>
137<p>can control and introspect its running networks using the Network protocol. DEPRECATED. Instead the individual network:... capabilities should be used. Implies capabilities network:status, network:data, network:control. Does not imply capability network:persist.</p>
138<h5 class='capability messages header'>input messages</h5>
139<ul class='capability messages'>
140<li><a href='#network-start'>network:start</a></li>
141<li><a href='#network-getstatus'>network:getstatus</a></li>
142<li><a href='#network-stop'>network:stop</a></li>
143<li><a href='#network-debug'>network:debug</a></li>
144<li><a href='#network-edges'>network:edges</a></li>
145</ul>
146<h5 class='capability messages header'>output messages</h5>
147<ul class='capability messages'>
148<li><a href='#network-stopped'>network:stopped</a></li>
149<li><a href='#network-started'>network:started</a></li>
150<li><a href='#network-status'>network:status</a></li>
151<li><a href='#network-output'>network:output</a></li>
152<li><a href='#network-error'>network:error</a></li>
153<li><a href='#network-processerror'>network:processerror</a></li>
154<li><a href='#network-icon'>network:icon</a></li>
155<li><a href='#network-connect'>network:connect</a></li>
156<li><a href='#network-begingroup'>network:begingroup</a></li>
157<li><a href='#network-data'>network:data</a></li>
158<li><a href='#network-endgroup'>network:endgroup</a></li>
159<li><a href='#network-disconnect'>network:disconnect</a></li>
160<li><a href='#network-edges'>network:edges</a></li>
161</ul>
162<h4 class='capability name'>network:persist</h4>
163<p>can *flash* a running graph setup to the runtime, making it persistent across restarts</p>
164<h5 class='capability messages header'>input messages</h5>
165<ul class='capability messages'>
166<li><a href='#network-persist'>network:persist</a></li>
167</ul>
168<h5 class='capability messages header'>output messages</h5>
169<ul class='capability messages'>
170<li><a href='#network-persist'>network:persist</a></li>
171<li><a href='#network-error'>network:error</a></li>
172</ul>
173<h4 class='capability name'>network:status</h4>
174<p>can get and follow changes to network status</p>
175<h5 class='capability messages header'>input messages</h5>
176<ul class='capability messages'>
177<li><a href='#network-getstatus'>network:getstatus</a></li>
178</ul>
179<h5 class='capability messages header'>output messages</h5>
180<ul class='capability messages'>
181<li><a href='#network-status'>network:status</a></li>
182<li><a href='#network-started'>network:started</a></li>
183<li><a href='#network-stopped'>network:stopped</a></li>
184<li><a href='#network-error'>network:error</a></li>
185</ul>
186<h4 class='capability name'>network:data</h4>
187<p>can listen to data flowing through the network and processes</p>
188<h5 class='capability messages header'>input messages</h5>
189<ul class='capability messages'>
190<li><a href='#network-edges'>network:edges</a></li>
191</ul>
192<h5 class='capability messages header'>output messages</h5>
193<ul class='capability messages'>
194<li><a href='#network-edges'>network:edges</a></li>
195<li><a href='#network-output'>network:output</a></li>
196<li><a href='#network-error'>network:error</a></li>
197<li><a href='#network-data'>network:data</a></li>
198<li><a href='#network-begingroup'>network:begingroup</a></li>
199<li><a href='#network-endgroup'>network:endgroup</a></li>
200<li><a href='#network-connect'>network:connect</a></li>
201<li><a href='#network-disconnect'>network:disconnect</a></li>
202<li><a href='#network-icon'>network:icon</a></li>
203<li><a href='#network-processerror'>network:processerror</a></li>
204<li><a href='#network-error'>network:error</a></li>
205</ul>
206<h4 class='capability name'>network:control</h4>
207<p>can start and stop networks</p>
208<h5 class='capability messages header'>input messages</h5>
209<ul class='capability messages'>
210<li><a href='#network-start'>network:start</a></li>
211<li><a href='#network-stop'>network:stop</a></li>
212<li><a href='#network-getstatus'>network:getstatus</a></li>
213<li><a href='#network-debug'>network:debug</a></li>
214</ul>
215<h5 class='capability messages header'>output messages</h5>
216<ul class='capability messages'>
217<li><a href='#network-started'>network:started</a></li>
218<li><a href='#network-stopped'>network:stopped</a></li>
219<li><a href='#network-status'>network:status</a></li>
220<li><a href='#network-error'>network:error</a></li>
221</ul>
222<h4 class='capability name'>protocol:component</h4>
223<p>can list components of the runtime using the component:list message.</p>
224<h5 class='capability messages header'>input messages</h5>
225<ul class='capability messages'>
226<li><a href='#component-list'>component:list</a></li>
227</ul>
228<h5 class='capability messages header'>output messages</h5>
229<ul class='capability messages'>
230<li><a href='#component-component'>component:component</a></li>
231<li><a href='#component-componentsready'>component:componentsready</a></li>
232<li><a href='#component-error'>component:error</a></li>
233</ul>
234<h4 class='capability name'>component:getsource</h4>
235<p>read and send component source code back to client</p>
236<h5 class='capability messages header'>input messages</h5>
237<ul class='capability messages'>
238<li><a href='#component-getsource'>component:getsource</a></li>
239</ul>
240<h5 class='capability messages header'>output messages</h5>
241<ul class='capability messages'>
242<li><a href='#component-source'>component:source</a></li>
243<li><a href='#component-error'>component:error</a></li>
244</ul>
245<h4 class='capability name'>component:setsource</h4>
246<p>runtime is able to compile and run custom components sent as source code strings</p>
247<h5 class='capability messages header'>input messages</h5>
248<ul class='capability messages'>
249<li><a href='#component-source'>component:source</a></li>
250</ul>
251<h5 class='capability messages header'>output messages</h5>
252<ul class='capability messages'>
253<li><a href='#component-component'>component:component</a></li>
254<li><a href='#component-error'>component:error</a></li>
255</ul>
256<h4 class='capability name'>protocol:runtime</h4>
257<p>can expose ports of main graph and transmit packet information to/from them</p>
258<h5 class='capability messages header'>input messages</h5>
259<ul class='capability messages'>
260<li><a href='#runtime-packet'>runtime:packet</a></li>
261</ul>
262<h5 class='capability messages header'>output messages</h5>
263<ul class='capability messages'>
264<li><a href='#runtime-ports'>runtime:ports</a></li>
265<li><a href='#runtime-packetsent'>runtime:packetsent</a></li>
266<li><a href='#runtime-packet'>runtime:packet</a></li>
267<li><a href='#runtime-error'>runtime:error</a></li>
268</ul>
269<h4 class='capability name'>graph:readonly</h4>
270<p>read and follow changes to runtime graphs (but not modify)</p>
271<h5 class='capability messages header'>input messages</h5>
272<ul class='capability messages'>
273</ul>
274<h5 class='capability messages header'>output messages</h5>
275<ul class='capability messages'>
276<li><a href='#graph-clear'>graph:clear</a></li>
277<li><a href='#graph-addnode'>graph:addnode</a></li>
278<li><a href='#graph-removenode'>graph:removenode</a></li>
279<li><a href='#graph-renamenode'>graph:renamenode</a></li>
280<li><a href='#graph-changenode'>graph:changenode</a></li>
281<li><a href='#graph-addedge'>graph:addedge</a></li>
282<li><a href='#graph-removeedge'>graph:removeedge</a></li>
283<li><a href='#graph-changeedge'>graph:changeedge</a></li>
284<li><a href='#graph-addinitial'>graph:addinitial</a></li>
285<li><a href='#graph-removeinitial'>graph:removeinitial</a></li>
286<li><a href='#graph-addinport'>graph:addinport</a></li>
287<li><a href='#graph-removeinport'>graph:removeinport</a></li>
288<li><a href='#graph-renameinport'>graph:renameinport</a></li>
289<li><a href='#graph-addoutport'>graph:addoutport</a></li>
290<li><a href='#graph-removeoutport'>graph:removeoutport</a></li>
291<li><a href='#graph-renameoutport'>graph:renameoutport</a></li>
292<li><a href='#graph-addgroup'>graph:addgroup</a></li>
293<li><a href='#graph-removegroup'>graph:removegroup</a></li>
294<li><a href='#graph-renamegroup'>graph:renamegroup</a></li>
295<li><a href='#graph-changegroup'>graph:changegroup</a></li>
296</ul>
297<h4 class='capability name'>protocol:graph</h4>
298<p>read & modify runtime graphs using the Graph protocol.</p>
299<h5 class='capability messages header'>input messages</h5>
300<ul class='capability messages'>
301<li><a href='#graph-clear'>graph:clear</a></li>
302<li><a href='#graph-addnode'>graph:addnode</a></li>
303<li><a href='#graph-removenode'>graph:removenode</a></li>
304<li><a href='#graph-renamenode'>graph:renamenode</a></li>
305<li><a href='#graph-changenode'>graph:changenode</a></li>
306<li><a href='#graph-addedge'>graph:addedge</a></li>
307<li><a href='#graph-removeedge'>graph:removeedge</a></li>
308<li><a href='#graph-changeedge'>graph:changeedge</a></li>
309<li><a href='#graph-addinitial'>graph:addinitial</a></li>
310<li><a href='#graph-removeinitial'>graph:removeinitial</a></li>
311<li><a href='#graph-addinport'>graph:addinport</a></li>
312<li><a href='#graph-removeinport'>graph:removeinport</a></li>
313<li><a href='#graph-renameinport'>graph:renameinport</a></li>
314<li><a href='#graph-addoutport'>graph:addoutport</a></li>
315<li><a href='#graph-removeoutport'>graph:removeoutport</a></li>
316<li><a href='#graph-renameoutport'>graph:renameoutport</a></li>
317<li><a href='#graph-addgroup'>graph:addgroup</a></li>
318<li><a href='#graph-removegroup'>graph:removegroup</a></li>
319<li><a href='#graph-renamegroup'>graph:renamegroup</a></li>
320<li><a href='#graph-changegroup'>graph:changegroup</a></li>
321</ul>
322<h5 class='capability messages header'>output messages</h5>
323<ul class='capability messages'>
324<li><a href='#graph-clear'>graph:clear</a></li>
325<li><a href='#graph-addnode'>graph:addnode</a></li>
326<li><a href='#graph-removenode'>graph:removenode</a></li>
327<li><a href='#graph-renamenode'>graph:renamenode</a></li>
328<li><a href='#graph-changenode'>graph:changenode</a></li>
329<li><a href='#graph-addedge'>graph:addedge</a></li>
330<li><a href='#graph-removeedge'>graph:removeedge</a></li>
331<li><a href='#graph-changeedge'>graph:changeedge</a></li>
332<li><a href='#graph-addinitial'>graph:addinitial</a></li>
333<li><a href='#graph-removeinitial'>graph:removeinitial</a></li>
334<li><a href='#graph-addinport'>graph:addinport</a></li>
335<li><a href='#graph-removeinport'>graph:removeinport</a></li>
336<li><a href='#graph-renameinport'>graph:renameinport</a></li>
337<li><a href='#graph-addoutport'>graph:addoutport</a></li>
338<li><a href='#graph-removeoutport'>graph:removeoutport</a></li>
339<li><a href='#graph-renameoutport'>graph:renameoutport</a></li>
340<li><a href='#graph-addgroup'>graph:addgroup</a></li>
341<li><a href='#graph-removegroup'>graph:removegroup</a></li>
342<li><a href='#graph-renamegroup'>graph:renamegroup</a></li>
343<li><a href='#graph-changegroup'>graph:changegroup</a></li>
344<li><a href='#graph-error'>graph:error</a></li>
345</ul>
346<h4 class='capability name'>protocol:trace</h4>
347<p>runtime is able to record and send over flowtraces, used for retroactive debugging.</p>
348<h5 class='capability messages header'>input messages</h5>
349<ul class='capability messages'>
350<li><a href='#trace-start'>trace:start</a></li>
351<li><a href='#trace-stop'>trace:stop</a></li>
352<li><a href='#trace-clear'>trace:clear</a></li>
353<li><a href='#trace-dump'>trace:dump</a></li>
354</ul>
355<h5 class='capability messages header'>output messages</h5>
356<ul class='capability messages'>
357<li><a href='#trace-start'>trace:start</a></li>
358<li><a href='#trace-stop'>trace:stop</a></li>
359<li><a href='#trace-clear'>trace:clear</a></li>
360<li><a href='#trace-dump'>trace:dump</a></li>
361<li><a href='#trace-error'>trace:error</a></li>
362</ul>
363</section>
364
365### Message structure
366
367This document describes all messages as the data structures that are passed. The way these are encoded depends on the transport being used. For example, with WebSockets all messages are encoded as stringified JSON.
368
369All messages consist of three parts:
370
371* Sub-protocol identifier (`graph`, `component`, or `network`)
372* Topic (for example, `addnode`)
373* Message payload (typically a data structure specific to the sub-protocol and topic)
374
375The keys listed in specific messages are for the message `payload`.
376
377An example message
378```
379"protocol": "graph",
380"command": "addnode",
381"payload": {
382 "component": "canvas/Draw",
383 "graph": "hello-canvas-example",
384 "id": "draw",
385 "metadata": {
386 "label": "Draw onto canvas element"
387 }
388}
389```
390
391<h2 class='protocol name'>Runtime protocol</h2>
392<p class='protocol description'>When a client connects to a FBP procotol it may choose to discover the capabilities and other information about the runtime.</p>
393<h3 id='runtime-getruntime' class='message name'><a href='#runtime-getruntime'>getruntime</a></h3>
394<p>Request the information about the runtime. When receiving this message the runtime should response with a runtime message. If the runtime is currently running a graph and it is able to speak the full Runtime protocol, it should follow up with a ports message.</p>
395<ul class='message properties'>
396<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
397</ul>
398<h3 id='runtime-packet' class='message name'><a href='#runtime-packet'>packet</a></h3>
399<p>Runtimes that can be used as remote subgraphs (i.e. ones that have reported supporting the protocol:runtime capability) need to be able to receive and transmit information packets at their exposed ports.
400These packets can be send from the client to the runtimes input ports, or from runtimes output ports to the client.</p>
401<ul class='message properties'>
402<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name for the input or output port</label></li>
403<li><label class='property name'>event</label><label class='property type'>string</label><label class='property description'>packet event</label></li>
404<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>The basic datatype sent</label><code class='property example'>"array"</code></li>
405<li><label class='property name'>schema</label><label class='property type'>string</label><label class='property description'>Link to JSON schema describing the format of the data</label><code class='property example'>"https://example.net/schemas/person.json"</code></li>
406<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
407<li><label class='property name'>payload</label><label class='property type'>any</label><label class='property description'>payload for the packet. Used only with begingroup (for group names) and data packets</label></li>
408<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
409</ul>
410<h3 id='runtime-error' class='message name'><a href='#runtime-error'>error</a></h3>
411<p>Error response to a command on runtime protocol</p>
412<ul class='message properties'>
413<li><label class='property name'>message</label><label class='property type'>string</label><label class='property description'>Error message describing what went wrong</label></li>
414</ul>
415<h3 id='runtime-ports' class='message name'><a href='#runtime-ports'>ports</a></h3>
416<p>Message sent by the runtime to signal its available ports. The runtime is responsible for sending the up-to-date list of available ports back to client whenever it changes.</p>
417<ul class='message properties'>
418<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>ID of the currently configured main graph running on the runtime</label></li>
419<li><label class='property name'>inPorts</label><label class='property type'>array</label><label class='property description'>list of input ports of the runtime</label></li>Each item contains:
420<ul class='properties'>
421<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>port name</label></li>
422<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>port datatype</label><code class='property example'>"boolean"</code></li>
423<li><label class='property optional name'>schema</label><label class='property optional type'>string</label><label class='property optional description'>Link to JSON schema for data on this port</label><code class='property optional example'>"https://example.net/schemas/person.json"</code></li>
424<li><label class='property optional name'>required</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port needs to be connected for the component to work</label><code class='property optional example'>true</code></li>
425<li><label class='property optional name'>addressable</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port is an ArrayPort</label><code class='property optional example'>false</code></li>
426<li><label class='property optional name'>description</label><label class='property optional type'>string</label><label class='property optional description'>textual description of the port</label></li>
427<li><label class='property optional name'>values</label><label class='property optional type'>array</label><label class='property optional description'>list of values accepted for the port</label></li>
428<li><label class='property optional name'>default</label><label class='property optional type'>any</label><label class='property optional description'>default value for the port</label></li>
429</ul>
430<li><label class='property name'>outPorts</label><label class='property type'>array</label><label class='property description'>list of output ports of the runtime</label></li>Each item contains:
431<ul class='properties'>
432<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>port name</label></li>
433<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>port datatype</label><code class='property example'>"boolean"</code></li>
434<li><label class='property optional name'>schema</label><label class='property optional type'>string</label><label class='property optional description'>Link to JSON schema for data on this port</label><code class='property optional example'>"https://example.net/schemas/person.json"</code></li>
435<li><label class='property optional name'>required</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port needs to be connected for the component to work</label><code class='property optional example'>true</code></li>
436<li><label class='property optional name'>addressable</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port is an ArrayPort</label><code class='property optional example'>false</code></li>
437<li><label class='property optional name'>description</label><label class='property optional type'>string</label><label class='property optional description'>textual description of the port</label></li>
438<li><label class='property optional name'>values</label><label class='property optional type'>array</label><label class='property optional description'>list of values accepted for the port</label></li>
439<li><label class='property optional name'>default</label><label class='property optional type'>any</label><label class='property optional description'>default value for the port</label></li>
440</ul>
441</ul>
442<h3 id='runtime-runtime' class='message name'><a href='#runtime-runtime'>runtime</a></h3>
443<p>Response from the runtime to the getruntime request.</p>
444<ul class='message properties'>
445<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>unique runtime ID. Must be a UUID, version 4</label><code class='property example'>"f18a4924-9d4f-414d-a37c-cd24b39bba10"</code></li>
446<li><label class='property name'>label</label><label class='property type'>string</label><label class='property description'>Human-readable description of the runtime</label></li>
447<li><label class='property name'>version</label><label class='property type'>string</label><label class='property description'>version of the runtime protocol that the runtime supports</label><code class='property example'>"0.6"</code></li>
448<li><label class='property name'>allCapabilities</label><label class='property type'>array</label><label class='property description'><a href='#capabilities'>capability strings</a> for things the runtime is able to do. May include things not permitted for this client.</label></li>
449<li><label class='property name'>capabilities</label><label class='property type'>array</label><label class='property description'><a href='#capabilities'>capability strings</a> for things the runtime is able to do for this client.</label></li>
450<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>ID of the currently configured main graph running on the runtime, if any</label><code class='property example'>"service-main"</code></li>
451<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>type of the runtime</label><code class='property example'>"microflo"</code></li>
452<li><label class='property name'>namespace</label><label class='property type'>string</label><label class='property description'>Library namespace of the project running on the runtime, if any. Must match that of components belonging to the (top-level) of project.</label><code class='property example'>"my-project-foo"</code></li>
453<li><label class='property name'>repository</label><label class='property type'>string</label><label class='property description'>Source-code repository URL of the project running on the runtime, if any</label><code class='property example'>"https://github.com/flowbased/fbp-protocol.git"</code></li>
454<li><label class='property name'>repositoryVersion</label><label class='property type'>string</label><label class='property description'>Unique version identifier of the source code of the project, if known. The version should be available in @repository.</label><code class='property example'>"0.6.3-8-g90edcfc"</code></li>
455</ul>
456<h3 id='runtime-packetsent' class='message name'><a href='#runtime-packetsent'>packetsent</a></h3>
457<p>Confirmation that a packet has been sent</p>
458<ul class='message properties'>
459<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name for the input port</label></li>
460<li><label class='property name'>event</label><label class='property type'>string</label><label class='property description'>packet event</label></li>
461<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>The basic datatype sent</label><code class='property example'>"array"</code></li>
462<li><label class='property name'>schema</label><label class='property type'>string</label><label class='property description'>Link to JSON schema describing the format of the data</label><code class='property example'>"https://example.net/schemas/person.json"</code></li>
463<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targeted</label></li>
464<li><label class='property name'>payload</label><label class='property type'>any</label><label class='property description'>payload for the packet. Used only with begingroup (for group names) and data packets</label></li>
465</ul>
466<h2 class='protocol name'>Graph protocol</h2>
467<p class='protocol description'>This protocol is utilized for communicating about graph changes in both directions.</p>
468<h3 id='graph-clear' class='message name'><a href='#graph-clear'>clear</a></h3>
469<p>Initialize an empty graph.</p>
470<ul class='message properties'>
471<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>identifier for the graph being created. Used for all subsequent messages related to the graph instance</label></li>
472<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>Human-readable label for the graph</label></li>
473<li><label class='property name'>library</label><label class='property type'>string</label><label class='property description'>Component library identifier</label></li>
474<li><label class='property name'>main</label><label class='property type'>boolean</label><label class='property description'>Identifies the graph as a main graph of a project that should not be registered as a component
475Graphs registered in this way should also be available for use as subgraphs in other graphs. Therefore a graph registration and later changes to it may cause component messages of the Component protocol to be sent back to the client informing of possible changes in the ports of the subgraph component.</label></li>
476<li><label class='property name'>icon</label><label class='property type'>string</label><label class='property description'>Icon to use for the graph when used as a component</label></li>
477<li><label class='property name'>description</label><label class='property type'>string</label><label class='property description'>Description to use for the graph when used as a component</label></li>
478<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
479</ul>
480<h3 id='graph-addnode' class='message name'><a href='#graph-addnode'>addnode</a></h3>
481<p>Add node to a graph.</p>
482<ul class='message properties'>
483<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>identifier for the node</label></li>
484<li><label class='property name'>component</label><label class='property type'>string</label><label class='property description'>component name used for the node</label></li>
485<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph node metadata</label></li>
486<ul class='properties'>
487<li><label class='property name'>x</label><label class='property type'>integer</label><label class='property description'>X coordinate of a graph entity</label></li>
488<li><label class='property name'>y</label><label class='property type'>integer</label><label class='property description'>Y coordinate of a graph entity</label></li>
489</ul>
490<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
491<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
492</ul>
493<h3 id='graph-removenode' class='message name'><a href='#graph-removenode'>removenode</a></h3>
494<p>Remove a node from a graph.</p>
495<ul class='message properties'>
496<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>identifier for the node</label></li>
497<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
498<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
499</ul>
500<h3 id='graph-renamenode' class='message name'><a href='#graph-renamenode'>renamenode</a></h3>
501<p>Change the ID of a node in the graph</p>
502<ul class='message properties'>
503<li><label class='property name'>from</label><label class='property type'>string</label><label class='property description'>original identifier for the node</label></li>
504<li><label class='property name'>to</label><label class='property type'>string</label><label class='property description'>new identifier for the node</label></li>
505<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
506<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
507</ul>
508<h3 id='graph-changenode' class='message name'><a href='#graph-changenode'>changenode</a></h3>
509<p>Change the metadata associated to a node in the graph</p>
510<ul class='message properties'>
511<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>identifier for the node</label></li>
512<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph node metadata</label></li>
513<ul class='properties'>
514<li><label class='property name'>x</label><label class='property type'>integer</label><label class='property description'>X coordinate of a graph entity</label></li>
515<li><label class='property name'>y</label><label class='property type'>integer</label><label class='property description'>Y coordinate of a graph entity</label></li>
516</ul>
517<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
518<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
519</ul>
520<h3 id='graph-addedge' class='message name'><a href='#graph-addedge'>addedge</a></h3>
521<p>Add an edge to the graph</p>
522<ul class='message properties'>
523<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
524<ul class='properties'>
525<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
526<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
527<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
528</ul>
529<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
530<ul class='properties'>
531<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
532<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
533<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
534</ul>
535<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph edge metadata</label></li>
536<ul class='properties'>
537<li><label class='property name'>route</label><label class='property type'>integer</label><label class='property description'>Route identifier of a graph entity</label></li>
538<li><label class='property name'>schema</label><label class='property type'>string</label><label class='property description'>JSON schema associated with a graph entity</label></li>
539<li><label class='property name'>secure</label><label class='property type'>boolean</label><label class='property description'>Whether graph entity data should be treated as secure</label></li>
540</ul>
541<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
542<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
543</ul>
544<h3 id='graph-removeedge' class='message name'><a href='#graph-removeedge'>removeedge</a></h3>
545<p>Remove an edge from the graph</p>
546<ul class='message properties'>
547<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
548<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
549<ul class='properties'>
550<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
551<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
552<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
553</ul>
554<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
555<ul class='properties'>
556<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
557<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
558<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
559</ul>
560<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
561</ul>
562<h3 id='graph-changeedge' class='message name'><a href='#graph-changeedge'>changeedge</a></h3>
563<p>Change an edge's metadata</p>
564<ul class='message properties'>
565<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
566<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph edge metadata</label></li>
567<ul class='properties'>
568<li><label class='property name'>route</label><label class='property type'>integer</label><label class='property description'>Route identifier of a graph entity</label></li>
569<li><label class='property name'>schema</label><label class='property type'>string</label><label class='property description'>JSON schema associated with a graph entity</label></li>
570<li><label class='property name'>secure</label><label class='property type'>boolean</label><label class='property description'>Whether graph entity data should be treated as secure</label></li>
571</ul>
572<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
573<ul class='properties'>
574<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
575<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
576<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
577</ul>
578<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
579<ul class='properties'>
580<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
581<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
582<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
583</ul>
584<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
585</ul>
586<h3 id='graph-addinitial' class='message name'><a href='#graph-addinitial'>addinitial</a></h3>
587<p>Add an IIP to the graph</p>
588<ul class='message properties'>
589<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
590<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph edge metadata</label></li>
591<ul class='properties'>
592<li><label class='property name'>route</label><label class='property type'>integer</label><label class='property description'>Route identifier of a graph entity</label></li>
593<li><label class='property name'>schema</label><label class='property type'>string</label><label class='property description'>JSON schema associated with a graph entity</label></li>
594<li><label class='property name'>secure</label><label class='property type'>boolean</label><label class='property description'>Whether graph entity data should be treated as secure</label></li>
595</ul>
596<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source data for the edge</label></li>
597<ul class='properties'>
598<li><label class='property name'>data</label><label class='property type'>object,array,string,number,integer,boolean,null</label><label class='property description'>IIP value in its actual data type</label></li>
599</ul>
600<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node/port for the edge</label></li>
601<ul class='properties'>
602<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
603<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
604<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
605</ul>
606<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
607</ul>
608<h3 id='graph-removeinitial' class='message name'><a href='#graph-removeinitial'>removeinitial</a></h3>
609<p>Remove an IIP from the graph</p>
610<ul class='message properties'>
611<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>IIP data</label></li>
612<ul class='properties'>
613<li><label class='property name'>data</label><label class='property type'>object,array,string,number,integer,boolean,null</label><label class='property description'>IIP value in its actual data type</label></li>
614</ul>
615<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node/port for the edge</label></li>
616<ul class='properties'>
617<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
618<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
619<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
620</ul>
621<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
622<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
623</ul>
624<h3 id='graph-addinport' class='message name'><a href='#graph-addinport'>addinport</a></h3>
625<p>Add an exported inport to the graph.</p>
626<ul class='message properties'>
627<li><label class='property name'>public</label><label class='property type'>string</label><label class='property description'>the exported name of the port</label></li>
628<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
629<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>internal port name</label></li>
630<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph node metadata</label></li>
631<ul class='properties'>
632<li><label class='property name'>x</label><label class='property type'>integer</label><label class='property description'>X coordinate of a graph entity</label></li>
633<li><label class='property name'>y</label><label class='property type'>integer</label><label class='property description'>Y coordinate of a graph entity</label></li>
634</ul>
635<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
636<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
637</ul>
638<h3 id='graph-removeinport' class='message name'><a href='#graph-removeinport'>removeinport</a></h3>
639<p>Remove an exported port from the graph</p>
640<ul class='message properties'>
641<li><label class='property name'>public</label><label class='property type'>string</label><label class='property description'>the exported name of the port to remove</label></li>
642<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
643<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
644</ul>
645<h3 id='graph-renameinport' class='message name'><a href='#graph-renameinport'>renameinport</a></h3>
646<p>Rename an exported port in the graph</p>
647<ul class='message properties'>
648<li><label class='property name'>from</label><label class='property type'>string</label><label class='property description'>original exported port name</label></li>
649<li><label class='property name'>to</label><label class='property type'>string</label><label class='property description'>new exported port name</label></li>
650<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
651<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
652</ul>
653<h3 id='graph-addoutport' class='message name'><a href='#graph-addoutport'>addoutport</a></h3>
654<p>Add an exported outport to the graph.</p>
655<ul class='message properties'>
656<li><label class='property name'>public</label><label class='property type'>string</label><label class='property description'>the exported name of the port</label></li>
657<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
658<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>internal port name</label></li>
659<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph node metadata</label></li>
660<ul class='properties'>
661<li><label class='property name'>x</label><label class='property type'>integer</label><label class='property description'>X coordinate of a graph entity</label></li>
662<li><label class='property name'>y</label><label class='property type'>integer</label><label class='property description'>Y coordinate of a graph entity</label></li>
663</ul>
664<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
665<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
666</ul>
667<h3 id='graph-removeoutport' class='message name'><a href='#graph-removeoutport'>removeoutport</a></h3>
668<p>Remove an exported port from the graph</p>
669<ul class='message properties'>
670<li><label class='property name'>public</label><label class='property type'>string</label><label class='property description'>the exported name of the port to remove</label></li>
671<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
672<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
673</ul>
674<h3 id='graph-renameoutport' class='message name'><a href='#graph-renameoutport'>renameoutport</a></h3>
675<p>Rename an exported port in the graph</p>
676<ul class='message properties'>
677<li><label class='property name'>from</label><label class='property type'>string</label><label class='property description'>original exported port name</label></li>
678<li><label class='property name'>to</label><label class='property type'>string</label><label class='property description'>new exported port name</label></li>
679<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
680<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
681</ul>
682<h3 id='graph-addgroup' class='message name'><a href='#graph-addgroup'>addgroup</a></h3>
683<p>Add a group to the graph</p>
684<ul class='message properties'>
685<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>the group name</label></li>
686<li><label class='property name'>nodes</label><label class='property type'>array</label><label class='property description'>an array of node ids part of the group</label></li>
687<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph group metadata</label></li>
688<ul class='properties'>
689<li><label class='property name'>description</label><label class='property type'>string</label><label class='property description'>Longer textual description of the group</label></li>
690</ul>
691<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
692<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
693</ul>
694<h3 id='graph-removegroup' class='message name'><a href='#graph-removegroup'>removegroup</a></h3>
695<p>Remove a group from the graph</p>
696<ul class='message properties'>
697<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>the group name</label></li>
698<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
699<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
700</ul>
701<h3 id='graph-renamegroup' class='message name'><a href='#graph-renamegroup'>renamegroup</a></h3>
702<p>Rename a group in the graph.</p>
703<ul class='message properties'>
704<li><label class='property name'>from</label><label class='property type'>string</label><label class='property description'>original group name</label></li>
705<li><label class='property name'>to</label><label class='property type'>string</label><label class='property description'>new group name</label></li>
706<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
707<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
708</ul>
709<h3 id='graph-changegroup' class='message name'><a href='#graph-changegroup'>changegroup</a></h3>
710<p>Change a group's metadata</p>
711<ul class='message properties'>
712<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>the group name</label></li>
713<li><label class='property name'>metadata</label><label class='property type'>object</label><label class='property description'>structure of key-value pairs for graph group metadata</label></li>
714<ul class='properties'>
715<li><label class='property name'>description</label><label class='property type'>string</label><label class='property description'>Longer textual description of the group</label></li>
716</ul>
717<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
718<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
719</ul>
720<h2 class='protocol name'>Component protocol</h2>
721<p class='protocol description'>Protocol for handling the component registry.</p>
722<h3 id='component-list' class='message name'><a href='#component-list'>list</a></h3>
723<p>Request a list of currently available components. Will be responded with a set of `component` messages.</p>
724<ul class='message properties'>
725<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
726</ul>
727<h3 id='component-getsource' class='message name'><a href='#component-getsource'>getsource</a></h3>
728<p>Request for the source code of a given component. Will be responded with a `source` message.</p>
729<ul class='message properties'>
730<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>Name of the component to for which to get source code. Should contain the library prefix</label><code class='property example'>"my-project/SomeComponent"</code></li>
731<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
732</ul>
733<h3 id='component-source' class='message name'><a href='#component-source'>source</a></h3>
734<p>Source code for a component. In cases where a runtime receives a `source` message, it should do whatever operations are needed for making that component available for graphs, including possible compilation.</p>
735<ul class='message properties'>
736<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>Name of the component. Must not contain library prefix</label><code class='property example'>"MyComponent"</code></li>
737<li><label class='property name'>language</label><label class='property type'>string</label><label class='property description'>The programming language used for the component code</label><code class='property example'>"c++"</code></li>
738<li><label class='property name'>library</label><label class='property type'>string</label><label class='property description'>Component library identifier</label><code class='property example'>"components-common"</code></li>
739<li><label class='property name'>code</label><label class='property type'>string</label><label class='property description'>Component source code</label></li>
740<li><label class='property name'>tests</label><label class='property type'>string</label><label class='property description'>unit tests for the component</label></li>
741</ul>
742<h3 id='component-error' class='message name'><a href='#component-error'>error</a></h3>
743<p>Error response to a command on component protocol</p>
744<ul class='message properties'>
745<li><label class='property name'>message</label><label class='property type'>string</label><label class='property description'>Error message describing what went wrong</label></li>
746</ul>
747<h3 id='component-component' class='message name'><a href='#component-component'>component</a></h3>
748<p>Transmit the metadata about a component instance.</p>
749<ul class='message properties'>
750<li><label class='property name'>name</label><label class='property type'>string</label><label class='property description'>component name in format that can be used in graphs. Should contain the component library prefix.</label><code class='property example'>"my-project/MyComponent"</code></li>
751<li><label class='property name'>description</label><label class='property type'>string</label><label class='property description'>textual description on what the component does</label></li>
752<li><label class='property name'>icon</label><label class='property type'>string</label><label class='property description'>Visual icon for the component, matching icon names in <a href="http://fortawesome.github.io/Font-Awesome/icons/">Font Awesome</a></label></li>
753<li><label class='property name'>subgraph</label><label class='property type'>boolean</label><label class='property description'>boolean telling whether the component is a subgraph</label></li>
754<li><label class='property name'>inPorts</label><label class='property type'>array</label><label class='property description'>list of input ports of the component</label></li>Each item contains:
755<ul class='properties'>
756<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>port name</label></li>
757<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>port datatype</label><code class='property example'>"boolean"</code></li>
758<li><label class='property optional name'>schema</label><label class='property optional type'>string</label><label class='property optional description'>Link to JSON schema for data on this port</label><code class='property optional example'>"https://example.net/schemas/person.json"</code></li>
759<li><label class='property optional name'>required</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port needs to be connected for the component to work</label><code class='property optional example'>true</code></li>
760<li><label class='property optional name'>addressable</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port is an ArrayPort</label><code class='property optional example'>false</code></li>
761<li><label class='property optional name'>description</label><label class='property optional type'>string</label><label class='property optional description'>textual description of the port</label></li>
762<li><label class='property optional name'>values</label><label class='property optional type'>array</label><label class='property optional description'>list of values accepted for the port</label></li>
763<li><label class='property optional name'>default</label><label class='property optional type'>any</label><label class='property optional description'>default value for the port</label></li>
764</ul>
765<li><label class='property name'>outPorts</label><label class='property type'>array</label><label class='property description'>list of output ports of the component</label></li>Each item contains:
766<ul class='properties'>
767<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>port name</label></li>
768<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>port datatype</label><code class='property example'>"boolean"</code></li>
769<li><label class='property optional name'>schema</label><label class='property optional type'>string</label><label class='property optional description'>Link to JSON schema for data on this port</label><code class='property optional example'>"https://example.net/schemas/person.json"</code></li>
770<li><label class='property optional name'>required</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port needs to be connected for the component to work</label><code class='property optional example'>true</code></li>
771<li><label class='property optional name'>addressable</label><label class='property optional type'>boolean</label><label class='property optional description'>whether the port is an ArrayPort</label><code class='property optional example'>false</code></li>
772<li><label class='property optional name'>description</label><label class='property optional type'>string</label><label class='property optional description'>textual description of the port</label></li>
773<li><label class='property optional name'>values</label><label class='property optional type'>array</label><label class='property optional description'>list of values accepted for the port</label></li>
774<li><label class='property optional name'>default</label><label class='property optional type'>any</label><label class='property optional description'>default value for the port</label></li>
775</ul>
776</ul>
777<h3 id='component-componentsready' class='message name'><a href='#component-componentsready'>componentsready</a></h3>
778<p>Indication that a component listing has finished</p>
779<ul class='message properties'>
780</ul>
781<h2 class='protocol name'>Network protocol</h2>
782<p class='protocol description'>Protocol for starting and stopping FBP networks, and finding out about their state.</p>
783<h3 id='network-start' class='message name'><a href='#network-start'>start</a></h3>
784<p>Start execution of a FBP network based on a given graph.</p>
785<ul class='message properties'>
786<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
787<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
788</ul>
789<h3 id='network-getstatus' class='message name'><a href='#network-getstatus'>getstatus</a></h3>
790<p>Get the current status of the runtime. The runtime should respond with a status message.</p>
791<ul class='message properties'>
792<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
793<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
794</ul>
795<h3 id='network-stop' class='message name'><a href='#network-stop'>stop</a></h3>
796<p>Stop execution of a FBP network based on a given graph.</p>
797<ul class='message properties'>
798<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
799<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
800</ul>
801<h3 id='network-persist' class='message name'><a href='#network-persist'>persist</a></h3>
802<p>Tells the runtime to persist the current state of graphs and components so that they are available between restarts. Requires the network:persist capability.</p>
803<ul class='message properties'>
804<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
805</ul>
806<h3 id='network-debug' class='message name'><a href='#network-debug'>debug</a></h3>
807<p>Set a network into debug mode</p>
808<ul class='message properties'>
809<li><label class='property name'>enable</label><label class='property type'>boolean</label><label class='property description'>tells whether to put the network in debug mode</label></li>
810<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
811<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize the user</label></li>
812</ul>
813<h3 id='network-edges' class='message name'><a href='#network-edges'>edges</a></h3>
814<p>List of edges user has selected for inspection in a user interface or debugger, sent from UI to a runtime.</p>
815<ul class='message properties'>
816<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
817<li><label class='property name'>edges</label><label class='property type'>array</label><label class='property description'>list of selected edges</label></li>Each item contains:
818<ul class='properties'>
819<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
820<ul class='properties'>
821<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
822<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
823<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
824</ul>
825<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
826<ul class='properties'>
827<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
828<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
829<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
830</ul>
831</ul>
832<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize user</label></li>
833</ul>
834<h3 id='network-stopped' class='message name'><a href='#network-stopped'>stopped</a></h3>
835<p>Inform that a given network has stopped.</p>
836<ul class='message properties'>
837<li><label class='property name'>time</label><label class='property type'>string</label><label class='property description'>time when the network was stopped</label></li>
838<li><label class='property name'>uptime</label><label class='property type'>number</label><label class='property description'>time the network was running, in seconds</label></li>
839<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
840<li><label class='property name'>running</label><label class='property type'>boolean</label><label class='property description'>whether or not network is currently running</label></li>
841<li><label class='property name'>started</label><label class='property type'>boolean</label><label class='property description'>whether or not network has been started</label></li>
842<li><label class='property name'>debug</label><label class='property type'>boolean</label><label class='property description'>whether or not network is in debug mode</label></li>
843</ul>
844<h3 id='network-started' class='message name'><a href='#network-started'>started</a></h3>
845<p>Inform that a given network has been started.</p>
846<ul class='message properties'>
847<li><label class='property name'>time</label><label class='property type'>string</label><label class='property description'>time when the network was started</label></li>
848<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
849<li><label class='property name'>started</label><label class='property type'>boolean</label><label class='property description'>whether or not network has started running</label></li>
850<li><label class='property name'>running</label><label class='property type'>boolean</label><label class='property description'>whether or not network is currently running</label></li>
851<li><label class='property name'>debug</label><label class='property type'>boolean</label><label class='property description'>whether or not network is in debug mode</label></li>
852</ul>
853<h3 id='network-status' class='message name'><a href='#network-status'>status</a></h3>
854<p>Response to a getstatus message.</p>
855<ul class='message properties'>
856<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
857<li><label class='property name'>uptime</label><label class='property type'>number</label><label class='property description'>time the network has been running, in seconds</label></li>
858<li><label class='property name'>started</label><label class='property type'>boolean</label><label class='property description'>whether or not network has started running</label></li>
859<li><label class='property name'>running</label><label class='property type'>boolean</label><label class='property description'>boolean tells whether the network is running or not</label></li>
860<li><label class='property name'>debug</label><label class='property type'>boolean</label><label class='property description'>whether or not network is in debug mode</label></li>
861</ul>
862<h3 id='network-output' class='message name'><a href='#network-output'>output</a></h3>
863<p>An output message from a running network, roughly similar to STDOUT output of a Unix process, or a line of console.log in JavaScript. Output can also be used for passing images from the runtime to the UI.'</p>
864<ul class='message properties'>
865<li><label class='property name'>message</label><label class='property type'>string</label><label class='property description'>contents of the output line</label></li>
866<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>type of output, either message or previewurl</label></li>
867<li><label class='property name'>url</label><label class='property type'>string</label><label class='property description'>URL for an image generated by the runtime</label></li>
868</ul>
869<h3 id='network-error' class='message name'><a href='#network-error'>error</a></h3>
870<p>An error from a running network, roughly similar to STDERR output of a Unix process, or a line of console.error in JavaScript.'</p>
871<ul class='message properties'>
872<li><label class='property name'>message</label><label class='property type'>string</label><label class='property description'>contents of the error message</label></li>
873<li><label class='property name'>stack</label><label class='property type'>string</label><label class='property description'>stack trace</label></li>
874<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
875</ul>
876<h3 id='network-processerror' class='message name'><a href='#network-processerror'>processerror</a></h3>
877<p>When in debug mode, a network can signal an error happening inside a process.</p>
878<ul class='message properties'>
879<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>identifier of the node</label></li>
880<li><label class='property name'>error</label><label class='property type'>string</label><label class='property description'>error from the component</label></li>
881<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
882</ul>
883<h3 id='network-icon' class='message name'><a href='#network-icon'>icon</a></h3>
884<p>Icon of a component instance has changed.</p>
885<ul class='message properties'>
886<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>identifier of the node</label></li>
887<li><label class='property name'>icon</label><label class='property type'>string</label><label class='property description'>new icon for the component instance</label></li>
888<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
889</ul>
890<h3 id='network-connect' class='message name'><a href='#network-connect'>connect</a></h3>
891<p>Beginning of transmission on an edge.</p>
892<ul class='message properties'>
893<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>textual edge identifier, usually in form of a FBP language line</label></li>
894<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
895<ul class='properties'>
896<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
897<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
898<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
899</ul>
900<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
901<ul class='properties'>
902<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
903<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
904<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
905</ul>
906<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
907<li><label class='property name'>subgraph</label><label class='property type'>array</label><label class='property description'>Subgraph identifier for the event. An array of node IDs.</label></li>
908</ul>
909<h3 id='network-begingroup' class='message name'><a href='#network-begingroup'>begingroup</a></h3>
910<p>Beginning of a group (bracket IP) on an edge.</p>
911<ul class='message properties'>
912<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>textual edge identifier, usually in form of a FBP language line</label></li>
913<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
914<ul class='properties'>
915<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
916<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
917<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
918</ul>
919<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
920<ul class='properties'>
921<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
922<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
923<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
924</ul>
925<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
926<li><label class='property name'>subgraph</label><label class='property type'>array</label><label class='property description'>Subgraph identifier for the event. An array of node IDs.</label></li>
927</ul>
928<h3 id='network-data' class='message name'><a href='#network-data'>data</a></h3>
929<p>Data transmission on an edge.</p>
930<ul class='message properties'>
931<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>textual edge identifier, usually in form of a FBP language line</label></li>
932<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
933<ul class='properties'>
934<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
935<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
936<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
937</ul>
938<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
939<ul class='properties'>
940<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
941<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
942<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
943</ul>
944<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
945<li><label class='property name'>subgraph</label><label class='property type'>array</label><label class='property description'>Subgraph identifier for the event. An array of node IDs.</label></li>
946</ul>
947<h3 id='network-endgroup' class='message name'><a href='#network-endgroup'>endgroup</a></h3>
948<p>Ending of a group (bracket IP) on an edge.</p>
949<ul class='message properties'>
950<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>textual edge identifier, usually in form of a FBP language line</label></li>
951<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
952<ul class='properties'>
953<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
954<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
955<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
956</ul>
957<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
958<ul class='properties'>
959<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
960<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
961<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
962</ul>
963<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
964<li><label class='property name'>subgraph</label><label class='property type'>array</label><label class='property description'>Subgraph identifier for the event. An array of node IDs.</label></li>
965</ul>
966<h3 id='network-disconnect' class='message name'><a href='#network-disconnect'>disconnect</a></h3>
967<p>End of transmission on an edge.</p>
968<ul class='message properties'>
969<li><label class='property name'>id</label><label class='property type'>string</label><label class='property description'>textual edge identifier, usually in form of a FBP language line</label></li>
970<li><label class='property name'>src</label><label class='property type'>object</label><label class='property description'>source node for the edge</label></li>
971<ul class='properties'>
972<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
973<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
974<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
975</ul>
976<li><label class='property name'>tgt</label><label class='property type'>object</label><label class='property description'>target node for the edge</label></li>
977<ul class='properties'>
978<li><label class='property name'>node</label><label class='property type'>string</label><label class='property description'>node identifier</label></li>
979<li><label class='property name'>port</label><label class='property type'>string</label><label class='property description'>port name</label></li>
980<li><label class='property name'>index</label><label class='property type'>string,number</label><label class='property description'>connection index, for addressable ports</label></li>
981</ul>
982<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>graph the action targets</label></li>
983<li><label class='property name'>subgraph</label><label class='property type'>array</label><label class='property description'>Subgraph identifier for the event. An array of node IDs.</label></li>
984</ul>
985<h2 class='protocol name'>Trace protocol</h2>
986<p class='protocol description'>This protocol is utilized for triggering and transmitting [Flowtrace](https://github.com/flowbased/flowtrace)s</p>
987<h3 id='trace-start' class='message name'><a href='#trace-start'>start</a></h3>
988<p>Enable/start tracing of a network.</p>
989<ul class='message properties'>
990<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize the client</label></li>
991<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>Graph identifier the message targets</label></li>
992<li><label class='property name'>buffersize</label><label class='property type'>integer</label><label class='property description'>Size of tracing buffer to keep. In bytes</label></li>
993</ul>
994<h3 id='trace-stop' class='message name'><a href='#trace-stop'>stop</a></h3>
995<p>Stop/disable tracing of a network.</p>
996<ul class='message properties'>
997<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize the client</label></li>
998<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>Graph identifier the message targets</label></li>
999</ul>
1000<h3 id='trace-dump' class='message name'><a href='#trace-dump'>dump</a></h3>
1001<p>undefined</p>
1002<ul class='message properties'>
1003<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>Graph identifier the message targets</label></li>
1004<li><label class='property name'>type</label><label class='property type'>string</label><label class='property description'>String describing type of trace.</label></li>
1005<li><label class='property name'>flowtrace</label><label class='property type'>string</label><label class='property description'>A Flowtrace file of `type`</label></li>
1006</ul>
1007<h3 id='trace-clear' class='message name'><a href='#trace-clear'>clear</a></h3>
1008<p>Clear current tracing buffer.</p>
1009<ul class='message properties'>
1010<li><label class='property name'>secret</label><label class='property type'>string</label><label class='property description'>access token to authorize the client</label></li>
1011<li><label class='property name'>graph</label><label class='property type'>string</label><label class='property description'>Graph identifier the message targets</label></li>
1012</ul>
1013<h3 id='trace-error' class='message name'><a href='#trace-error'>error</a></h3>
1014<p>Error response to a command on trace protocol</p>
1015<ul class='message properties'>
1016<li><label class='property name'>message</label><label class='property type'>string</label><label class='property description'>Error message describing what went wrong</label></li>
1017</ul>