remove SIP documentation and update schemas

This commit is contained in:
Joel Wetzell
2026-08-30 19:06:09 -05:00
parent 8c8bffeb68
commit 966ff8240e
9 changed files with 1630 additions and 1198 deletions
-50
View File
@@ -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,
-41
View File
@@ -1,41 +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:
- id: sip-to-osc
input: sip
processors:
- id: create-osc-message
type: osc.message.create
params:
address: "/cue/{{.Payload.To}}/go"
- id: encode-osc-message
type: osc.message.encode
- id: send-osc
type: module.output
params:
module: udp
`;
<Code code={example} title="config.yaml" lang="yaml" />
@@ -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: "#"
```
@@ -1,24 +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
- id: create-audio-response
type: sip.response.audio.create
params:
preWait: 1000
audioFile: "response.wav"
postWait: 1000
```
@@ -1,24 +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
- id: create-dtmf-response
type: sip.response.dtmf.create
params:
preWait: 1000
digits: "1234"
postWait: 1000
```
-3
View File
@@ -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
View File
@@ -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
} }
] ]
File diff suppressed because it is too large Load Diff