fix additionProperties in JSONSchema and add IDs to everything

This commit is contained in:
Joel Wetzell
2026-03-30 20:58:39 -05:00
parent 979addeff8
commit f57f9d8ce5
55 changed files with 77 additions and 58 deletions

View File

@@ -35,7 +35,8 @@ func init() {
MinLength: jsonschema.Ptr(1),
},
},
Required: []string{"dsn"},
Required: []string{"dsn"},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -69,7 +69,7 @@ func init() {
},
},
Required: []string{"port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -38,7 +38,7 @@ func init() {
},
},
Required: []string{"port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -38,7 +38,7 @@ func init() {
},
},
Required: []string{"port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -45,7 +45,7 @@ func init() {
},
},
Required: []string{"broker", "topic", "clientId"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -40,7 +40,7 @@ func init() {
},
},
Required: []string{"url", "subject"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -46,9 +46,8 @@ func init() {
Default: json.RawMessage(`4222`),
},
},
Required: []string{},
AdditionalProperties: nil,
Required: []string{},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ModuleConfig) (common.Module, error) {
params := moduleConfig.Params

View File

@@ -27,7 +27,6 @@ func init() {
Type: "psn.client",
Title: "PosiStageNet Client",
New: func(config config.ModuleConfig) (common.Module, error) {
return &PSNClient{config: config, decoder: psn.NewDecoder(), logger: CreateLogger(config)}, nil
},
})

View File

@@ -40,7 +40,7 @@ func init() {
},
},
Required: []string{"host", "port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -45,7 +45,7 @@ func init() {
},
},
Required: []string{"port", "baudRate"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -77,7 +77,7 @@ func init() {
},
},
Required: []string{},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ModuleConfig) (common.Module, error) {
params := moduleConfig.Params

View File

@@ -83,7 +83,7 @@ func init() {
},
},
Required: []string{"separator"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ModuleConfig) (common.Module, error) {
params := moduleConfig.Params

View File

@@ -49,7 +49,7 @@ func init() {
},
},
Required: []string{"host", "port", "framing"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -57,7 +57,7 @@ func init() {
},
},
Required: []string{"port", "framing"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ModuleConfig) (common.Module, error) {
params := moduleConfig.Params

View File

@@ -36,7 +36,7 @@ func init() {
},
},
Required: []string{"duration"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -36,7 +36,7 @@ func init() {
},
},
Required: []string{"duration"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -42,7 +42,7 @@ func init() {
},
},
Required: []string{"host", "port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ModuleConfig) (common.Module, error) {
params := config.Params

View File

@@ -42,7 +42,7 @@ func init() {
},
},
Required: []string{"ip", "port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ModuleConfig) (common.Module, error) {
params := moduleConfig.Params

View File

@@ -51,7 +51,7 @@ func init() {
},
},
Required: []string{"port"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ModuleConfig) (common.Module, error) {
params := moduleConfig.Params

View File

@@ -59,7 +59,7 @@ func init() {
},
},
Required: []string{"expression"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -51,7 +51,7 @@ func init() {
},
},
Required: []string{"pattern"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -53,7 +53,7 @@ func init() {
Default: json.RawMessage("64"),
},
},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ProcessorConfig) (Processor, error) {
params := moduleConfig.Params

View File

@@ -61,7 +61,7 @@ func init() {
},
},
Required: []string{"min", "max"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(processorConfig config.ProcessorConfig) (Processor, error) {
params := processorConfig.Params

View File

@@ -259,7 +259,7 @@ func init() {
"zoom",
"focus",
},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {

View File

@@ -87,7 +87,7 @@ func init() {
},
},
Required: []string{"method", "url"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -60,7 +60,7 @@ func init() {
},
},
Required: []string{"status", "body"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -60,7 +60,7 @@ func init() {
Default: json.RawMessage("64"),
},
},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(moduleConfig config.ProcessorConfig) (Processor, error) {
params := moduleConfig.Params

View File

@@ -44,7 +44,7 @@ func init() {
},
},
Required: []string{"min", "max"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -60,7 +60,7 @@ func init() {
},
},
Required: []string{"inMin", "inMax", "outMin", "outMax"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -67,7 +67,7 @@ func init() {
},
},
Required: []string{"module", "key"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {

View File

@@ -82,7 +82,7 @@ func init() {
},
},
Required: []string{"module", "key", "value"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {

View File

@@ -85,7 +85,7 @@ func init() {
},
},
Required: []string{"channel", "control", "value"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {

View File

@@ -84,7 +84,7 @@ func init() {
},
},
Required: []string{"channel", "note", "velocity"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -84,7 +84,7 @@ func init() {
},
},
Required: []string{"channel", "note", "velocity"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -70,7 +70,7 @@ func init() {
},
},
Required: []string{"type", "channel", "program"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -104,7 +104,7 @@ func init() {
},
},
Required: []string{"topic", "qos", "retained", "payload"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(processorConfig config.ProcessorConfig) (Processor, error) {
params := processorConfig.Params

View File

@@ -75,7 +75,7 @@ func init() {
},
},
Required: []string{"subject", "payload"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -109,7 +109,7 @@ func init() {
},
},
Required: []string{"address"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(processorConfig config.ProcessorConfig) (Processor, error) {
params := processorConfig.Params

View File

@@ -57,7 +57,7 @@ func init() {
},
},
Required: []string{"source"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {

View File

@@ -53,7 +53,7 @@ func init() {
},
},
Required: []string{"module"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {

View File

@@ -48,7 +48,7 @@ func init() {
},
},
Required: []string{"expression"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -105,7 +105,7 @@ func init() {
},
},
Required: []string{"program"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -73,7 +73,7 @@ func init() {
},
},
Required: []string{"path"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(processorConfig config.ProcessorConfig) (Processor, error) {
params := processorConfig.Params

View File

@@ -70,7 +70,7 @@ func init() {
},
},
Required: []string{"preWait", "postWait", "audioFile"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -78,7 +78,7 @@ func init() {
},
},
Required: []string{"preWait", "postWait", "digits"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -49,7 +49,7 @@ func init() {
},
},
Required: []string{"template"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -47,7 +47,7 @@ func init() {
},
},
Required: []string{"separator"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -55,7 +55,8 @@ func init() {
Type: "string",
},
},
Required: []string{"name"},
Required: []string{"name"},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -74,7 +74,8 @@ func init() {
Type: "string",
},
},
Required: []string{"name"},
Required: []string{"name"},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -37,7 +37,8 @@ func init() {
Description: "Duration to sleep in milliseconds",
},
},
Required: []string{"duration"},
Required: []string{"duration"},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
New: func(config config.ProcessorConfig) (Processor, error) {
params := config.Params

View File

@@ -7,6 +7,7 @@ import (
)
var ApiConfigSchema = jsonschema.Schema{
ID: "https://showbridge.io/api.schema.json",
Type: "object",
Properties: map[string]*jsonschema.Schema{
"enabled": {
@@ -22,6 +23,7 @@ var ApiConfigSchema = jsonschema.Schema{
Default: json.RawMessage(`8080`),
},
},
Required: []string{"port"},
Default: json.RawMessage(`{"enabled": false, "port": 8080}`),
Required: []string{"port"},
Default: json.RawMessage(`{"enabled": false, "port": 8080}`),
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
}

View File

@@ -19,6 +19,7 @@ var ConfigSchema = jsonschema.Schema{
Ref: "https://showbridge.io/routes.schema.json",
},
},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
}
func ApplyDefaults(cfg *map[string]any) error {

View File

@@ -1,6 +1,8 @@
package schema
import (
"encoding/json"
"github.com/google/jsonschema-go/jsonschema"
"github.com/jwetzell/showbridge-go/internal/module"
)
@@ -13,11 +15,13 @@ func GetModulesSchema() *jsonschema.Schema {
Title: "Modules",
Description: "module configurations",
Type: "array",
Default: json.RawMessage(`[]`),
}
moduleDefinitionSchemas := []*jsonschema.Schema{}
for _, mod := range module.ModuleRegistry {
moduleSchema := &jsonschema.Schema{
ID: mod.Type,
Type: "object",
Properties: map[string]*jsonschema.Schema{
"id": {
@@ -29,7 +33,7 @@ func GetModulesSchema() *jsonschema.Schema {
},
},
Required: []string{"id", "type"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
}
if mod.Title != "" {
moduleSchema.Title = mod.Title

View File

@@ -1,6 +1,8 @@
package schema
import (
"encoding/json"
"github.com/google/jsonschema-go/jsonschema"
"github.com/jwetzell/showbridge-go/internal/processor"
)
@@ -13,11 +15,13 @@ func GetProcessorsSchema() *jsonschema.Schema {
Title: "Processors",
Description: "processor configurations",
Type: "array",
Default: json.RawMessage(`[]`),
}
processorDefinitionSchemas := []*jsonschema.Schema{}
for _, proc := range processor.ProcessorRegistry {
processorSchema := &jsonschema.Schema{
ID: proc.Type,
Type: "object",
Properties: map[string]*jsonschema.Schema{
"type": {
@@ -25,7 +29,7 @@ func GetProcessorsSchema() *jsonschema.Schema {
},
},
Required: []string{"type"},
AdditionalProperties: nil,
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
}
if proc.Title != "" {
processorSchema.Title = proc.Title

View File

@@ -1,6 +1,10 @@
package schema
import "github.com/google/jsonschema-go/jsonschema"
import (
"encoding/json"
"github.com/google/jsonschema-go/jsonschema"
)
var RoutesConfigSchema = jsonschema.Schema{
Schema: "https://json-schema.org/draft/2020-12/schema",
@@ -19,6 +23,8 @@ var RoutesConfigSchema = jsonschema.Schema{
Ref: "https://showbridge.io/processors.schema.json",
},
},
Required: []string{"input"},
Required: []string{"input"},
AdditionalProperties: &jsonschema.Schema{Not: &jsonschema.Schema{}},
},
Default: json.RawMessage(`[]`),
}