mirror of
https://github.com/jwetzell/showbridge-docs.git
synced 2026-09-01 18:28:59 +00:00
Compare commits
47 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 814816696c | |||
| 966ff8240e | |||
| 8c8bffeb68 | |||
| ddc722ed16 | |||
| a9bf28b7c6 | |||
| f678b0d376 | |||
| b2f6fc02a3 | |||
| 57a51c9fff | |||
| ec6f774f3d | |||
| 4d9c6b2af2 | |||
| 102e88824c | |||
| d49991c265 | |||
| d883b1dd3b | |||
| bc3a7edb79 | |||
| 0da86ce668 | |||
| a61d843952 | |||
| b38fbdaab4 | |||
| 8d680aa922 | |||
| eba857b324 | |||
| a33c05373f | |||
| a90a74650c | |||
| 212259fc4d | |||
| 3a35b7241d | |||
| c08561a58f | |||
| 402f14ca27 | |||
| 88b455d86b | |||
| 181b3c75d8 | |||
| 0146750efa | |||
| f1ed9c0600 | |||
| d6d8353709 | |||
| 1e02bfc4da | |||
| 477862e73c | |||
| c98ed11bae | |||
| 6a9a418bf5 | |||
| 69cf0949d2 | |||
| dc7bbc6c93 | |||
| ea0b05bbdc | |||
| 5bd3c68fc2 | |||
| b17e00bdb3 | |||
| ea6370644f | |||
| d6d8e7b532 | |||
| bb1517ca73 | |||
| 6935a7d969 | |||
| 98f36a9a46 | |||
| 6d191eaa1d | |||
| e614f31478 | |||
| 7371ac9f8f |
@@ -1,10 +0,0 @@
|
|||||||
version: 2
|
|
||||||
updates:
|
|
||||||
- package-ecosystem: "npm"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
- package-ecosystem: "github-actions"
|
|
||||||
directory: "/"
|
|
||||||
schedule:
|
|
||||||
interval: "weekly"
|
|
||||||
@@ -8,10 +8,10 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Check out repository
|
- name: Check out repository
|
||||||
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: "npm"
|
cache: "npm"
|
||||||
|
|||||||
@@ -8,10 +8,10 @@ jobs:
|
|||||||
build-docs:
|
build-docs:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
|
|
||||||
- name: Set up Node.js
|
- name: Set up Node.js
|
||||||
uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0
|
uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
|
||||||
with:
|
with:
|
||||||
node-version-file: ".nvmrc"
|
node-version-file: ".nvmrc"
|
||||||
cache: "npm"
|
cache: "npm"
|
||||||
|
|||||||
@@ -96,22 +96,6 @@ export default defineConfig({
|
|||||||
collapsed: true,
|
collapsed: true,
|
||||||
items: [{ autogenerate: { directory: "modules/serial" } }],
|
items: [{ autogenerate: { directory: "modules/serial" } }],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: "SIP",
|
|
||||||
collapsed: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
label: "Call",
|
|
||||||
collapsed: true,
|
|
||||||
items: [{ autogenerate: { directory: "modules/sip/call" } }],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "DTMF",
|
|
||||||
collapsed: true,
|
|
||||||
items: [{ autogenerate: { directory: "modules/sip/dtmf" } }],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "WebSocket",
|
label: "WebSocket",
|
||||||
collapsed: true,
|
collapsed: true,
|
||||||
@@ -264,40 +248,6 @@ export default defineConfig({
|
|||||||
collapsed: true,
|
collapsed: true,
|
||||||
items: [{ autogenerate: { directory: "processors/script" } }],
|
items: [{ autogenerate: { directory: "processors/script" } }],
|
||||||
},
|
},
|
||||||
{
|
|
||||||
label: "SIP",
|
|
||||||
collapsed: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
label: "Response",
|
|
||||||
collapsed: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
label: "Audio",
|
|
||||||
collapsed: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
autogenerate: {
|
|
||||||
directory: "processors/sip/response/audio",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
|
||||||
label: "DTMF",
|
|
||||||
collapsed: true,
|
|
||||||
items: [
|
|
||||||
{
|
|
||||||
autogenerate: {
|
|
||||||
directory: "processors/sip/response/dtmf",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
{
|
{
|
||||||
label: "String",
|
label: "String",
|
||||||
collapsed: true,
|
collapsed: true,
|
||||||
|
|||||||
Generated
+1925
-972
File diff suppressed because it is too large
Load Diff
+5
-5
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "@showbridge/docs",
|
"name": "@showbridge/docs",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "0.4.0",
|
"version": "0.6.0",
|
||||||
"files": [
|
"files": [
|
||||||
"dist"
|
"dist"
|
||||||
],
|
],
|
||||||
@@ -14,10 +14,10 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@astrojs/check": "0.9.9",
|
"@astrojs/check": "0.9.10",
|
||||||
"@astrojs/starlight": "^0.39.2",
|
"@astrojs/starlight": "0.41.10",
|
||||||
"astro": "^6.3.8",
|
"astro": "7.2.9",
|
||||||
"sharp": "0.34.5",
|
"sharp": "0.35.4",
|
||||||
"typescript": "6.0.3"
|
"typescript": "6.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{
|
||||||
|
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
|
"extends": [
|
||||||
|
"config:recommended"
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -10,5 +10,6 @@ Processors are anything that create or manipulate messages. They are configured
|
|||||||
|
|
||||||
A processor YAML block has the following properties
|
A processor YAML block has the following properties
|
||||||
|
|
||||||
|
- **id**: a unique identifier for the processor (auto generated when using the web interface)
|
||||||
- **type**: the processor type
|
- **type**: the processor type
|
||||||
- **params**: optional map for processor configuration values. The valid values will depend on the processor type
|
- **params**: optional map for processor configuration values. The valid values will depend on the processor type
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ Routes take the messages coming from a module and push them through a list of [p
|
|||||||
|
|
||||||
## YAML Definition
|
## YAML Definition
|
||||||
|
|
||||||
|
- **id**: a unique identifier for the route (auto generated when using the web interface)
|
||||||
- **input**: the id of the [module](/concepts/modules) that will provide messages to this route
|
- **input**: the id of the [module](/concepts/modules) that will provide messages to this route
|
||||||
- **processors**: (optional) array of [processors](/concepts/processors) that will be called in order and the result of the previous will be fed to the next processor.
|
- **processors**: (optional) array of [processors](/concepts/processors) that will be called in order and the result of the previous will be fed to the next processor.
|
||||||
- an error in a processor step will result in the individual route being terminated
|
- an error in a processor step will result in the individual route being terminated
|
||||||
|
|||||||
@@ -1,37 +0,0 @@
|
|||||||
---
|
|
||||||
title: SIP > OSC
|
|
||||||
sidebar:
|
|
||||||
order: 2
|
|
||||||
---
|
|
||||||
|
|
||||||
import { Code } from "@astrojs/starlight/components";
|
|
||||||
|
|
||||||
This config starts an SIP server listening on port `5060`. Any incoming call will result in a OSC message being sent to `127.0.0.1:53000` with the address set to [fire a QLab cue](https://qlab.app/docs/v5/scripting/osc-dictionary-v5/#/cue/{cue_number}/go) with the dialed number as the cue number. This was tested with a cheap SIP gateway like [this one](https://www.grandstream.com/products/gateways-and-atas/analog-telephone-adaptors/product/ht802).
|
|
||||||
|
|
||||||
export const example = `
|
|
||||||
api:
|
|
||||||
enabled: true
|
|
||||||
port: 8080
|
|
||||||
modules:
|
|
||||||
- id: sip
|
|
||||||
type: sip.call.server
|
|
||||||
params:
|
|
||||||
port: 5060
|
|
||||||
- id: udp
|
|
||||||
type: net.udp.client
|
|
||||||
params:
|
|
||||||
host: 127.0.0.1
|
|
||||||
port: 53000
|
|
||||||
routes:
|
|
||||||
- input: sip
|
|
||||||
processors:
|
|
||||||
- type: osc.message.create
|
|
||||||
params:
|
|
||||||
address: "/cue/{{.Payload.To}}/go"
|
|
||||||
- type: osc.message.encode
|
|
||||||
- type: module.output
|
|
||||||
params:
|
|
||||||
module: udp
|
|
||||||
`;
|
|
||||||
|
|
||||||
<Code code={example} title="config.yaml" lang="yaml" />
|
|
||||||
@@ -23,13 +23,17 @@ modules:
|
|||||||
host: 127.0.0.1
|
host: 127.0.0.1
|
||||||
port: 8000
|
port: 8000
|
||||||
routes:
|
routes:
|
||||||
- input: http
|
- id: http-to-osc
|
||||||
|
input: http
|
||||||
processors:
|
processors:
|
||||||
- type: osc.message.create # create OSC message
|
- id: create-osc-message
|
||||||
|
type: osc.message.create # create OSC message
|
||||||
params:
|
params:
|
||||||
address: "{{.Payload.URL.Path}}" # template the address from the incoming message
|
address: "{{.Payload.URL.Path}}" # template the address from the incoming message
|
||||||
- type: osc.message.encode # turn OSC message into bytes
|
- id: encode-osc-message
|
||||||
- type: module.output # output to the udp module
|
type: osc.message.encode # turn OSC message into bytes
|
||||||
|
- id: send-osc
|
||||||
|
type: module.output # output to the udp module
|
||||||
params:
|
params:
|
||||||
module: udp
|
module: udp
|
||||||
`;
|
`;
|
||||||
|
|||||||
@@ -1,24 +0,0 @@
|
|||||||
---
|
|
||||||
title: SIP Call Server
|
|
||||||
sidebar:
|
|
||||||
label: Server
|
|
||||||
order: 1
|
|
||||||
---
|
|
||||||
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
|
|
||||||
|
|
||||||
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections and emits call events when a new call is received. This can be used with cheap SIP gateway devices to connect an analog phone line and do interesting things like [firing QLab cues with phone calls](/examples/dial-a-cue).
|
|
||||||
|
|
||||||
<SchemaInfo type="module" id="sip.call.server"></SchemaInfo>
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
Start a UDP SIP server listening on port 5060
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- id: sipCallServer
|
|
||||||
type: sip.call.server
|
|
||||||
params:
|
|
||||||
ip: 127.0.0.1
|
|
||||||
port: 5060
|
|
||||||
transport: udp
|
|
||||||
```
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
---
|
|
||||||
title: SIP DTMF Server
|
|
||||||
sidebar:
|
|
||||||
label: Server
|
|
||||||
order: 1
|
|
||||||
---
|
|
||||||
import SchemaInfo from '../../../../../components/SchemaInfo.astro';
|
|
||||||
|
|
||||||
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections. When a call is received this module will emit events based on the touch tones (DTMF) received during the call. The event is sent out whenever the use presses the separator key defined in the params.
|
|
||||||
|
|
||||||
<SchemaInfo type="module" id="sip.dtmf.server"></SchemaInfo>
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
Start a UDP SIP server listening on port 5060 that will emit events whenever the user presses the `#` key on their phone during a call
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- id: sipDTMFServer
|
|
||||||
type: sip.dtmf.server
|
|
||||||
params:
|
|
||||||
ip: 127.0.0.1
|
|
||||||
port: 5060
|
|
||||||
transport: udp
|
|
||||||
separator: "#"
|
|
||||||
```
|
|
||||||
@@ -14,5 +14,6 @@ This processor will decode incoming bytes into an ArtNet packet. This processor
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: artnet.packet.decode
|
- id: decode
|
||||||
|
type: artnet.packet.decode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -14,5 +14,6 @@ This processor will encode an ArtNet packet into an array of bytes. This process
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: artnet.packet.encode
|
- id: encode
|
||||||
|
type: artnet.packet.encode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ This processor will return an error if any of the required parameters are missin
|
|||||||
Issue a `SELECT` statement to a module with id `sqlite`.
|
Issue a `SELECT` statement to a module with id `sqlite`.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: db.query
|
- id: query
|
||||||
|
type: db.query
|
||||||
params:
|
params:
|
||||||
module: sqlite
|
module: sqlite
|
||||||
query: "SELECT * from users;"
|
query: "SELECT * from users;"
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will log information about the message being processed to the con
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: debug.log
|
- id: log
|
||||||
|
type: debug.log
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will only pass messages through if the value of the message has c
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: filter.change
|
- id: filter
|
||||||
|
type: filter.change
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `filter.expr` processor evaluates an [Expr expression](https://expr-lang.org
|
|||||||
Match a payload great than or equal to 0
|
Match a payload great than or equal to 0
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: filter.expr
|
- id: filter
|
||||||
|
type: filter.expr
|
||||||
params:
|
params:
|
||||||
expression: "Payload >= 0"
|
expression: "Payload >= 0"
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `filter.regex` processor matches incoming string payload against a regular e
|
|||||||
Match strings starting with `hello`
|
Match strings starting with `hello`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: filter.regex
|
- id: filter
|
||||||
|
type: filter.regex
|
||||||
params:
|
params:
|
||||||
pattern: "^hello.*"
|
pattern: "^hello.*"
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `float.parse` processor takes a string and parses it as a float with the spe
|
|||||||
This would parse the string payload as a 32 bit float and set the payload to that value.
|
This would parse the string payload as a 32 bit float and set the payload to that value.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: float.parse
|
- id: parse
|
||||||
|
type: float.parse
|
||||||
params:
|
params:
|
||||||
bitSize: 32
|
bitSize: 32
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `float.random` processor will set the payload to a random float between the
|
|||||||
This would generate a random 64-bit float between 1.1 and 1.5 and set the payload to that value.
|
This would generate a random 64-bit float between 1.1 and 1.5 and set the payload to that value.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: float.random
|
- id: random
|
||||||
|
type: float.random
|
||||||
params:
|
params:
|
||||||
bitSize: 64
|
bitSize: 64
|
||||||
min: 1.0
|
min: 1.0
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ This processor will create a new FreeD message with the specified parameters.
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: freed.create
|
- id: freed-message
|
||||||
|
type: freed.create
|
||||||
params:
|
params:
|
||||||
id: "1"
|
id: "1"
|
||||||
pan: "45"
|
pan: "45"
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will decode incoming bytes into a FreeD message. This processor w
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: freed.decode
|
- id: decode
|
||||||
|
type: freed.decode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will encode a FreeD message into an array of bytes. This processo
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: freed.encode
|
- id: encode
|
||||||
|
type: freed.encode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ This process will make an HTTP request to the specified URL using the specified
|
|||||||
Make a GET request to `https://example.com`
|
Make a GET request to `https://example.com`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: http.request.do
|
- id: make-request
|
||||||
|
type: http.request.do
|
||||||
params:
|
params:
|
||||||
method: GET
|
method: GET
|
||||||
url: https://example.com
|
url: https://example.com
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ This processor will create a new HTTP response with the specified status code an
|
|||||||
This would create an HTTP response with a status code of `200` and a body of `OK`
|
This would create an HTTP response with a status code of `200` and a body of `OK`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: http.response.create
|
- id: create-response
|
||||||
|
type: http.response.create
|
||||||
params:
|
params:
|
||||||
status: 200
|
status: 200
|
||||||
bodyTemplate: "OK"
|
bodyTemplate: "OK"
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `int.parse` processor takes a string and parses it as an integer with the sp
|
|||||||
This would parse the string payload as a 32 bit, base 10 integer and set the payload to that value.
|
This would parse the string payload as a 32 bit, base 10 integer and set the payload to that value.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: int.parse
|
- id: parse
|
||||||
|
type: int.parse
|
||||||
params:
|
params:
|
||||||
bitSize: 32
|
bitSize: 32
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -14,7 +14,8 @@ The `int.random` processor will set the payload to a random integer between the
|
|||||||
This would generate a random integer between -127 and 127 and set the payload to that value.
|
This would generate a random integer between -127 and 127 and set the payload to that value.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: int.random
|
- id: random
|
||||||
|
type: int.random
|
||||||
params:
|
params:
|
||||||
min: -127
|
min: -127
|
||||||
max: 127
|
max: 127
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ This processor will scale an integer value from one range to another. This proce
|
|||||||
Scale an integer value from the range 0-255 to the range 0-100
|
Scale an integer value from the range 0-255 to the range 0-100
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: int.scale
|
- id: scale
|
||||||
|
type: int.scale
|
||||||
params:
|
params:
|
||||||
inMin: 0
|
inMin: 0
|
||||||
inMax: 255
|
inMax: 255
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ Convert an incoming byte array or raw string into a JSON object. This processor
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: json.decode
|
- id: decode
|
||||||
|
type: json.decode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will encode an incoming object into a JSON byte array. This proce
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: json.encode
|
- id: encode
|
||||||
|
type: json.encode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -16,7 +16,8 @@ The output payload is the value if the key is found.
|
|||||||
This will attempt to get the value for the `counter` key from the module with an id of `redis`
|
This will attempt to get the value for the `counter` key from the module with an id of `redis`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: kv.get
|
- id: get
|
||||||
|
type: kv.get
|
||||||
params:
|
params:
|
||||||
module: redis
|
module: redis
|
||||||
key: counter
|
key: counter
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `kv.set` processor sets the value of the configured key to the incoming payl
|
|||||||
This will attempt to set the key `hello` using the module with an id of `redis`
|
This will attempt to set the key `hello` using the module with an id of `redis`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: kv.set
|
- id: set
|
||||||
|
type: kv.set
|
||||||
params:
|
params:
|
||||||
module: redis
|
module: redis
|
||||||
key: hello
|
key: hello
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ This processor will create a MIDI Control Change message with the specified chan
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.control_change.create
|
- id: create
|
||||||
|
type: midi.control_change.create
|
||||||
params:
|
params:
|
||||||
channel: "1"
|
channel: "1"
|
||||||
control: "64"
|
control: "64"
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will decode incoming bytes into a MIDI message. This processor wi
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.message.decode
|
- id: decode
|
||||||
|
type: midi.message.decode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will encode a MIDI message into an array of bytes. This processor
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.message.encode
|
- id: encode
|
||||||
|
type: midi.message.encode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ This processor will unpack a MIDI message into its individual components. This p
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.message.unpack
|
- id: unpack
|
||||||
|
type: midi.message.unpack
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ This processor will create a MIDI Note Off message with the specified channel, n
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.note_off.create
|
- id: create
|
||||||
|
type: midi.note_off.create
|
||||||
params:
|
params:
|
||||||
channel: "1"
|
channel: "1"
|
||||||
note: "60"
|
note: "60"
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ This processor will create a MIDI Note On message with the specified channel, no
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.note_on.create
|
- id: create
|
||||||
|
type: midi.note_on.create
|
||||||
params:
|
params:
|
||||||
channel: "1"
|
channel: "1"
|
||||||
note: "60"
|
note: "60"
|
||||||
|
|||||||
@@ -13,7 +13,8 @@ This processor will create a MIDI Program Change message with the specified chan
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: midi.program_change.create
|
- id: create
|
||||||
|
type: midi.program_change.create
|
||||||
params:
|
params:
|
||||||
channel: "1"
|
channel: "1"
|
||||||
program: "10"
|
program: "10"
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `module.output` processor takes any payload and outputs to the specified mod
|
|||||||
Output whatever payload comes through this processor to the `osc-out` module.
|
Output whatever payload comes through this processor to the `osc-out` module.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: module.output
|
- id: output
|
||||||
|
type: module.output
|
||||||
params:
|
params:
|
||||||
module: osc-out
|
module: osc-out
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ This processor will create an OSC message from the provided parameters. This pro
|
|||||||
Create an OSC message with the address `/test/message` and two integer arguments from the payload of the message being processed.
|
Create an OSC message with the address `/test/message` and two integer arguments from the payload of the message being processed.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: osc.message.create
|
- id: create
|
||||||
|
type: osc.message.create
|
||||||
params:
|
params:
|
||||||
address: "/test/message"
|
address: "/test/message"
|
||||||
args: ["{{.Payload[0]}}", "{{.Payload[1]}}"]
|
args: ["{{.Payload[0]}}", "{{.Payload[1]}}"]
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ The `osc.message.decode` processor takes a array of bytes and turn it into OSC m
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: osc.message.encode
|
- id: decode
|
||||||
|
type: osc.message.decode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ The `osc.message.encode` processor takes an OSC message and turns it into an arr
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: osc.message.encode
|
- id: encode
|
||||||
|
type: osc.message.encode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The payload is unchanged so whatever is received by this payload is output unles
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: pubsub.publish
|
- id: publish
|
||||||
|
type: pubsub.publish
|
||||||
params:
|
params:
|
||||||
module: mqtt-out
|
module: mqtt-out
|
||||||
topic: "test"
|
topic: "test"
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The processor will execute the provided Expr expression and return the result as
|
|||||||
This example will add 1 to the wrapped payload.
|
This example will add 1 to the wrapped payload.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: script.expr
|
- id: expr
|
||||||
|
type: script.expr
|
||||||
params:
|
params:
|
||||||
expression: "Payload + 1"
|
expression: "Payload + 1"
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -19,7 +19,8 @@ This run your JavaScript program in a [sandboxed environment](https://gitlab.com
|
|||||||
Replace all occurrences of `|` with `,` in the payload
|
Replace all occurrences of `|` with `,` in the payload
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: script.js
|
- id: javascript
|
||||||
|
type: script.js
|
||||||
params:
|
params:
|
||||||
program: |
|
program: |
|
||||||
payload = payload.replaceAll('|',',');
|
payload = payload.replaceAll('|',',');
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ This processor will load and execute a WASM plugin using the [Extism](https://ex
|
|||||||
This example will load the plugin at `./test.wasm` and execute the `test` function
|
This example will load the plugin at `./test.wasm` and execute the `test` function
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: script.wasm
|
- id: wasm
|
||||||
|
type: script.wasm
|
||||||
params:
|
params:
|
||||||
path: "./test.wasm"
|
path: "./test.wasm"
|
||||||
function: "test"
|
function: "test"
|
||||||
|
|||||||
@@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
title: Create SIP Audio Response
|
|
||||||
sidebar:
|
|
||||||
label: Create
|
|
||||||
order: 1
|
|
||||||
---
|
|
||||||
import SchemaInfo from '../../../../../../components/SchemaInfo.astro';
|
|
||||||
|
|
||||||
This processor will create a SIP response message with an audio file as the payload. If this message is output to a SIP module using the [module.output](/processors/module/output) processor, then the SIP module will send the response to the caller and play the audio file included in the response.
|
|
||||||
|
|
||||||
<SchemaInfo type="processor" id="sip.response.audio.create"/>
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
This example will create a SIP response that will wait 1 second then play `response.wav` then wait another second before completing the response.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- type: sip.response.audio.create
|
|
||||||
params:
|
|
||||||
preWait: 1000
|
|
||||||
audioFile: "response.wav"
|
|
||||||
postWait: 1000
|
|
||||||
```
|
|
||||||
@@ -1,23 +0,0 @@
|
|||||||
---
|
|
||||||
title: Create SIP DTMF Response
|
|
||||||
sidebar:
|
|
||||||
label: Create
|
|
||||||
order: 1
|
|
||||||
---
|
|
||||||
import SchemaInfo from '../../../../../../components/SchemaInfo.astro';
|
|
||||||
|
|
||||||
This processor will create a SIP DTMF response from the provided parameters. If this message is output to a SIP module using the [module.output](/processors/module/output) processor, then the SIP module will send the response to the caller and play the DTMF tones specified.
|
|
||||||
|
|
||||||
<SchemaInfo type="processor" id="sip.response.dtmf.create"/>
|
|
||||||
|
|
||||||
### Example
|
|
||||||
|
|
||||||
This example will create a SIP response that will wait 1 second then play the DTMF digits "1234" then wait another second before completing the response.
|
|
||||||
|
|
||||||
```yaml
|
|
||||||
- type: sip.response.dtmf.create
|
|
||||||
params:
|
|
||||||
preWait: 1000
|
|
||||||
digits: "1234"
|
|
||||||
postWait: 1000
|
|
||||||
```
|
|
||||||
@@ -15,7 +15,8 @@ The `string.create` processor creates a string based on the provided template. T
|
|||||||
This would create a string using the `Address` property of the incoming message like and OSC message
|
This would create a string using the `Address` property of the incoming message like and OSC message
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: string.create
|
- id: create
|
||||||
|
type: string.create
|
||||||
params:
|
params:
|
||||||
template: "{{.Address}}
|
template: "{{.Address}}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ The `string.decode` processor takes a array of bytes and turn it into string. Th
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: string.decode
|
- id: decode
|
||||||
|
type: string.decode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -13,5 +13,6 @@ The `string.encode` processor takes a string and turns it into an array of bytes
|
|||||||
### Example
|
### Example
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: string.encode
|
- id: encode
|
||||||
|
type: string.encode
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `string.split` processor takes a string and turns it into an array of string
|
|||||||
Split incoming string on `,` i.e `"one,two,three"` -> `["one","two","three"]`
|
Split incoming string on `,` i.e `"one,two,three"` -> `["one","two","three"]`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: string.split
|
- id: split
|
||||||
|
type: string.split
|
||||||
params:
|
params:
|
||||||
separator: ","
|
separator: ","
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -15,7 +15,8 @@ The `time.sleep` processor will sleep for the specified `duration` in millisecon
|
|||||||
This would sleep for 5 seconds before passing the message to the next processor.
|
This would sleep for 5 seconds before passing the message to the next processor.
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
- type: time.sleep
|
- id: sleep
|
||||||
|
type: time.sleep
|
||||||
params:
|
params:
|
||||||
duration: 5000
|
duration: 5000
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -25,9 +25,6 @@ showbridge is a kind of re-imagining of [OSCulator](https://osculator.net/) take
|
|||||||
- server
|
- server
|
||||||
- [PosiStageNet](https://posistage.net/)
|
- [PosiStageNet](https://posistage.net/)
|
||||||
- client
|
- client
|
||||||
- [SIP](https://datatracker.ietf.org/doc/html/rfc3261)
|
|
||||||
- call server
|
|
||||||
- [DTMF](https://en.wikipedia.org/wiki/DTMF_signaling) server
|
|
||||||
- MIDI
|
- MIDI
|
||||||
- input (not included in pre-built binaries yet)
|
- input (not included in pre-built binaries yet)
|
||||||
- output (not included in pre-built binaries yet)
|
- output (not included in pre-built binaries yet)
|
||||||
|
|||||||
+476
-351
@@ -5,30 +5,147 @@
|
|||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"duration": {
|
||||||
|
"type": "integer",
|
||||||
|
"title": "Duration",
|
||||||
|
"description": "time in milliseconds between emitted events"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"duration"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "time.interval"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "time.interval",
|
||||||
|
"title": "Interval",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "URL",
|
||||||
|
"description": "the URL of the WebSocket server to connect"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"url"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "websocket.client"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "websocket.client",
|
||||||
|
"title": "WebSocket Client",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"dsn": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "Data Source Name",
|
||||||
|
"description": "the data source name (DSN) for the SQLite database",
|
||||||
|
"minLength": 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"dsn"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "db.sqlite"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "db.sqlite",
|
||||||
|
"title": "SQLite Database",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"port": {
|
"port": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "Port",
|
"title": "Port",
|
||||||
"description": "the name of the MIDI port to send messages to"
|
"description": "the name of the MIDI port to listen to"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["port"],
|
"required": [
|
||||||
|
"port"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "midi.output" }
|
"type": {
|
||||||
|
"const": "midi.input"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "midi.output",
|
"$id": "midi.input",
|
||||||
"title": "MIDI Output",
|
"title": "MIDI Input",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -62,20 +179,73 @@
|
|||||||
"description": "an MQTT topic to subscribe to"
|
"description": "an MQTT topic to subscribe to"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["broker", "topic", "clientId"],
|
"required": [
|
||||||
|
"broker",
|
||||||
|
"topic",
|
||||||
|
"clientId"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "mqtt.client" }
|
"type": {
|
||||||
|
"const": "mqtt.client"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "mqtt.client",
|
"$id": "mqtt.client",
|
||||||
"title": "MQTT Client",
|
"title": "MQTT Client",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"subject": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "Subject",
|
||||||
|
"description": "the subject to subscribe to"
|
||||||
|
},
|
||||||
|
"url": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "NATS Server URL",
|
||||||
|
"description": "the URL of the NATS server to connect to"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"url",
|
||||||
|
"subject"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "nats.client"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "nats.client",
|
||||||
|
"title": "NATS Client",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -96,17 +266,25 @@
|
|||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "nats.server" }
|
"type": {
|
||||||
|
"const": "nats.server"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "nats.server",
|
"$id": "nats.server",
|
||||||
"title": "NATS Server",
|
"title": "NATS Server",
|
||||||
"required": ["id", "type"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -114,58 +292,54 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "Framing Method",
|
"title": "Framing Method",
|
||||||
"description": "the method used to frame messages over the TCP connection",
|
"description": "the method used to frame messages over the TCP connection",
|
||||||
"enum": ["LF", "CR", "CRLF", "SLIP", "RAW"]
|
"enum": [
|
||||||
|
"LF",
|
||||||
|
"CR",
|
||||||
|
"CRLF",
|
||||||
|
"SLIP",
|
||||||
|
"RAW"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"host": {
|
"ip": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "Host",
|
"title": "IP",
|
||||||
"description": "the hostname or IP address of the TCP server to connect to"
|
"description": "the IP address to bind the TCP server to",
|
||||||
|
"default": "0.0.0.0"
|
||||||
},
|
},
|
||||||
"port": {
|
"port": {
|
||||||
"type": "integer",
|
"type": "integer",
|
||||||
"title": "Port",
|
"title": "Port",
|
||||||
"description": "the port of the TCP server to connect to",
|
"description": "the port for the TCP server to listen on",
|
||||||
"minimum": 1,
|
"minimum": 1024,
|
||||||
"maximum": 65535
|
"maximum": 65535
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["host", "port", "framing"],
|
"required": [
|
||||||
|
"port",
|
||||||
|
"framing"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "net.tcp.client" }
|
"type": {
|
||||||
},
|
"const": "net.tcp.server"
|
||||||
"$id": "net.tcp.client",
|
|
||||||
"title": "TCP Client",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"duration": {
|
|
||||||
"type": "integer",
|
|
||||||
"title": "Duration",
|
|
||||||
"description": "time in milliseconds between emitted events"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["duration"],
|
"$id": "net.tcp.server",
|
||||||
"additionalProperties": false
|
"title": "TCP Server",
|
||||||
},
|
"required": [
|
||||||
"type": { "const": "time.interval" }
|
"id",
|
||||||
},
|
"type",
|
||||||
"$id": "time.interval",
|
"params"
|
||||||
"title": "Interval",
|
],
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -182,20 +356,182 @@
|
|||||||
"maximum": 65535
|
"maximum": 65535
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["host", "port"],
|
"required": [
|
||||||
|
"host",
|
||||||
|
"port"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "net.udp.client" }
|
"type": {
|
||||||
|
"const": "net.udp.client"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "net.udp.client",
|
"$id": "net.udp.client",
|
||||||
"title": "UDP Client",
|
"title": "UDP Client",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"port": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "Port",
|
||||||
|
"description": "the name of the MIDI port to send messages to"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"port"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "midi.output"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "midi.output",
|
||||||
|
"title": "MIDI Output",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "psn.client"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "psn.client",
|
||||||
|
"title": "PosiStageNet Client",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"framing": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "Framing Method",
|
||||||
|
"description": "the method used to frame messages over the TCP connection",
|
||||||
|
"enum": [
|
||||||
|
"LF",
|
||||||
|
"CR",
|
||||||
|
"CRLF",
|
||||||
|
"SLIP",
|
||||||
|
"RAW"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"host": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "Host",
|
||||||
|
"description": "the hostname or IP address of the TCP server to connect to"
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"type": "integer",
|
||||||
|
"title": "Port",
|
||||||
|
"description": "the port of the TCP server to connect to",
|
||||||
|
"minimum": 1,
|
||||||
|
"maximum": 65535
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"host",
|
||||||
|
"port",
|
||||||
|
"framing"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "net.tcp.client"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "net.tcp.client",
|
||||||
|
"title": "TCP Client",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
|
"params": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"ip": {
|
||||||
|
"type": "string",
|
||||||
|
"title": "IP",
|
||||||
|
"description": "the multicast address to listen on"
|
||||||
|
},
|
||||||
|
"port": {
|
||||||
|
"type": "integer",
|
||||||
|
"title": "Port",
|
||||||
|
"description": "the port to listen on",
|
||||||
|
"minimum": 1024,
|
||||||
|
"maximum": 65535
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"required": [
|
||||||
|
"ip",
|
||||||
|
"port"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
"type": {
|
||||||
|
"const": "net.udp.multicast"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"$id": "net.udp.multicast",
|
||||||
|
"title": "UDP Multicast",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
|
"additionalProperties": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -221,48 +557,67 @@
|
|||||||
"maximum": 65535
|
"maximum": 65535
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["port"],
|
"required": [
|
||||||
|
"port"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "net.udp.server" }
|
"type": {
|
||||||
|
"const": "net.udp.server"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "net.udp.server",
|
"$id": "net.udp.server",
|
||||||
"title": "UDP Server",
|
"title": "UDP Server",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"subject": {
|
"port": {
|
||||||
"type": "string",
|
"type": "integer",
|
||||||
"title": "Subject",
|
"title": "Port",
|
||||||
"description": "the subject to subscribe to"
|
"description": "the port for the HTTP server to listen on",
|
||||||
},
|
"minimum": 1024,
|
||||||
"url": {
|
"maximum": 65535
|
||||||
"type": "string",
|
|
||||||
"title": "NATS Server URL",
|
|
||||||
"description": "the URL of the NATS server to connect to"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["url", "subject"],
|
"required": [
|
||||||
|
"port"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "nats.client" }
|
"type": {
|
||||||
|
"const": "http.server"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "nats.client",
|
"$id": "http.server",
|
||||||
"title": "NATS Client",
|
"title": "HTTP Server",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -279,158 +634,32 @@
|
|||||||
"maximum": 65535
|
"maximum": 65535
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["host", "port"],
|
"required": [
|
||||||
|
"host",
|
||||||
|
"port"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "redis.client" }
|
"type": {
|
||||||
|
"const": "redis.client"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "redis.client",
|
"$id": "redis.client",
|
||||||
"title": "Redis Client",
|
"title": "Redis Client",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"ip": {
|
|
||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "IP",
|
"minLength": 1
|
||||||
"description": "the IP address to bind the SIP server to",
|
|
||||||
"default": "0.0.0.0"
|
|
||||||
},
|
},
|
||||||
"port": {
|
|
||||||
"type": "integer",
|
|
||||||
"title": "Port",
|
|
||||||
"description": "the port for the SIP server to listen on",
|
|
||||||
"default": 5060,
|
|
||||||
"minimum": 1024,
|
|
||||||
"maximum": 65535
|
|
||||||
},
|
|
||||||
"transport": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "Transport",
|
|
||||||
"description": "the transport protocol to use for the SIP server",
|
|
||||||
"default": "udp",
|
|
||||||
"enum": ["udp", "tcp", "ws", "udp4", "tcp4"]
|
|
||||||
},
|
|
||||||
"userAgent": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "User Agent",
|
|
||||||
"description": "the user agent string to use",
|
|
||||||
"default": "showbridge"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "sip.call.server" }
|
|
||||||
},
|
|
||||||
"$id": "sip.call.server",
|
|
||||||
"title": "SIP Call Server",
|
|
||||||
"required": ["id", "type"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"framing": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "Framing Method",
|
|
||||||
"description": "the method used to frame messages over the TCP connection",
|
|
||||||
"enum": ["LF", "CR", "CRLF", "SLIP", "RAW"]
|
|
||||||
},
|
|
||||||
"ip": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "IP",
|
|
||||||
"description": "the IP address to bind the TCP server to",
|
|
||||||
"default": "0.0.0.0"
|
|
||||||
},
|
|
||||||
"port": {
|
|
||||||
"type": "integer",
|
|
||||||
"title": "Port",
|
|
||||||
"description": "the port for the TCP server to listen on",
|
|
||||||
"minimum": 1024,
|
|
||||||
"maximum": 65535
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["port", "framing"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "net.tcp.server" }
|
|
||||||
},
|
|
||||||
"$id": "net.tcp.server",
|
|
||||||
"title": "TCP Server",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"url": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "URL",
|
|
||||||
"description": "the URL of the WebSocket server to connect"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["url"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "websocket.client" }
|
|
||||||
},
|
|
||||||
"$id": "websocket.client",
|
|
||||||
"title": "WebSocket Client",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"port": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "Port",
|
|
||||||
"description": "the name of the MIDI port to listen to"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["port"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "midi.input" }
|
|
||||||
},
|
|
||||||
"$id": "midi.input",
|
|
||||||
"title": "MIDI Input",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"type": { "const": "psn.client" }
|
|
||||||
},
|
|
||||||
"$id": "psn.client",
|
|
||||||
"title": "PosiStageNet Client",
|
|
||||||
"required": ["id", "type"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -443,7 +672,13 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"title": "Framing Method",
|
"title": "Framing Method",
|
||||||
"description": "the method to use for framing messages on the serial port",
|
"description": "the method to use for framing messages on the serial port",
|
||||||
"enum": ["LF", "CR", "CRLF", "SLIP", "RAW"]
|
"enum": [
|
||||||
|
"LF",
|
||||||
|
"CR",
|
||||||
|
"CRLF",
|
||||||
|
"SLIP",
|
||||||
|
"RAW"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"port": {
|
"port": {
|
||||||
"type": "string",
|
"type": "string",
|
||||||
@@ -451,20 +686,33 @@
|
|||||||
"description": "the name of the serial port to connect to"
|
"description": "the name of the serial port to connect to"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["port", "baudRate", "framing"],
|
"required": [
|
||||||
|
"port",
|
||||||
|
"baudRate",
|
||||||
|
"framing"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "serial.client" }
|
"type": {
|
||||||
|
"const": "serial.client"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "serial.client",
|
"$id": "serial.client",
|
||||||
"title": "Serial Client",
|
"title": "Serial Client",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
|
"id",
|
||||||
|
"type",
|
||||||
|
"params"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
"id": { "type": "string", "minLength": 1 },
|
"id": {
|
||||||
|
"type": "string",
|
||||||
|
"minLength": 1
|
||||||
|
},
|
||||||
"params": {
|
"params": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
@@ -474,145 +722,22 @@
|
|||||||
"description": "time in milliseconds before the timer fires"
|
"description": "time in milliseconds before the timer fires"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"required": ["duration"],
|
"required": [
|
||||||
|
"duration"
|
||||||
|
],
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
},
|
},
|
||||||
"type": { "const": "time.timer" }
|
"type": {
|
||||||
|
"const": "time.timer"
|
||||||
|
}
|
||||||
},
|
},
|
||||||
"$id": "time.timer",
|
"$id": "time.timer",
|
||||||
"title": "Timer",
|
"title": "Timer",
|
||||||
"required": ["id", "type", "params"],
|
"required": [
|
||||||
"additionalProperties": false
|
"id",
|
||||||
},
|
"type",
|
||||||
{
|
"params"
|
||||||
"type": "object",
|
],
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"port": {
|
|
||||||
"type": "integer",
|
|
||||||
"title": "Port",
|
|
||||||
"description": "the port for the HTTP server to listen on",
|
|
||||||
"minimum": 1024,
|
|
||||||
"maximum": 65535
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["port"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "http.server" }
|
|
||||||
},
|
|
||||||
"$id": "http.server",
|
|
||||||
"title": "HTTP Server",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"ip": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "IP",
|
|
||||||
"description": "the IP address to bind the SIP server to",
|
|
||||||
"default": "0.0.0.0"
|
|
||||||
},
|
|
||||||
"port": {
|
|
||||||
"type": "integer",
|
|
||||||
"title": "Port",
|
|
||||||
"description": "the port for the SIP server to listen on",
|
|
||||||
"default": 5060,
|
|
||||||
"minimum": 1024,
|
|
||||||
"maximum": 65535
|
|
||||||
},
|
|
||||||
"separator": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "DTMF Separator",
|
|
||||||
"description": "the DTMF character to use as a separator between DTMF digit groups",
|
|
||||||
"minLength": 1,
|
|
||||||
"maxLength": 1
|
|
||||||
},
|
|
||||||
"transport": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "Transport",
|
|
||||||
"description": "the transport protocol to use for the SIP server",
|
|
||||||
"default": "udp",
|
|
||||||
"enum": ["udp", "tcp", "ws", "udp4", "tcp4"]
|
|
||||||
},
|
|
||||||
"userAgent": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "User Agent",
|
|
||||||
"description": "the user agent string to use",
|
|
||||||
"default": "showbridge"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["separator"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "sip.dtmf.server" }
|
|
||||||
},
|
|
||||||
"$id": "sip.dtmf.server",
|
|
||||||
"title": "SIP DTMF Server",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"ip": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "IP",
|
|
||||||
"description": "the multicast address to listen on"
|
|
||||||
},
|
|
||||||
"port": {
|
|
||||||
"type": "integer",
|
|
||||||
"title": "Port",
|
|
||||||
"description": "the port to listen on",
|
|
||||||
"minimum": 1024,
|
|
||||||
"maximum": 65535
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["ip", "port"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "net.udp.multicast" }
|
|
||||||
},
|
|
||||||
"$id": "net.udp.multicast",
|
|
||||||
"title": "UDP Multicast",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"id": { "type": "string", "minLength": 1 },
|
|
||||||
"params": {
|
|
||||||
"type": "object",
|
|
||||||
"properties": {
|
|
||||||
"dsn": {
|
|
||||||
"type": "string",
|
|
||||||
"title": "Data Source Name",
|
|
||||||
"description": "the data source name (DSN) for the SQLite database",
|
|
||||||
"minLength": 1
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"required": ["dsn"],
|
|
||||||
"additionalProperties": false
|
|
||||||
},
|
|
||||||
"type": { "const": "db.sqlite" }
|
|
||||||
},
|
|
||||||
"$id": "db.sqlite",
|
|
||||||
"title": "SQLite Database",
|
|
||||||
"required": ["id", "type", "params"],
|
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
+1162
-664
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user