{ "$schema": "https://json-schema.org/draft/2019-09/schema", "title": "Namespace", "type": "object", "properties": { "name": { "title": "Name", "type": "string", "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" }, "vaults": { "title": "Vaults", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "$ref": "#/$defs/vault" } }, "additionalProperties": false }, "guards": { "title": "Guards", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "$ref": "#/$defs/guard" } }, "additionalProperties": false }, "telemetry": { "title": "Telemetry", "type": "object", "properties": { "attributes": { "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "string" } } }, "metrics": { "$ref": "#/$defs/telemetry/metrics" }, "exporters": { "title": "Exporters", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "$ref": "#/$defs/telemetry/exporter" } }, "additionalProperties": false } }, "additionalProperties": false }, "stores": { "title": "Stores", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "$ref": "#/$defs/store" } }, "additionalProperties": false }, "catalogs": { "title": "Catalogs", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "$ref": "#/$defs/catalog" } }, "additionalProperties": false }, "bindings": { "title": "Bindings", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "$ref": "#/$defs/binding" } }, "additionalProperties": false } }, "additionalProperties": false, "required": [ "name" ], "$defs": { "expression":{ "type": "string", "pattern": "\\$\\{\\{\\s*([^\\s\\}]*)\\.([^\\s\\}]*)\\s*\\}\\}" }, "vault": { "type": "object", "properties": { "type": { "title": "Type", "type": "string", "enum": [] }, "options": { "title": "Options", "type": "object" } }, "additionalProperties": false, "required": [ "type" ], "allOf": [ ] }, "guard": { "type": "object", "properties": { "type": { "title": "Type", "type": "string", "enum": [] }, "kind": { "title": "Kind", "type": "string" }, "store": { "title": "Store", "type": "string" }, "options": { "title": "Options", "type": "object" } }, "additionalProperties": false, "required": [ "type" ], "allOf": [ ] }, "store": { "type": "object", "properties": { "type": { "title": "Type", "type": "string", "enum": [] }, "options": { "title": "Options", "type": "object" } }, "additionalProperties": false, "required": [ "type" ], "allOf": [ ] }, "telemetry": { "metrics": { "type": "array", "items": { "enum": [ ] }, "uniqueItems": true }, "exporter": { "title": "Exporter", "type": "object", "properties": { "type": { "title": "Type", "type": "string", "enum": [] }, "vault": { "title": "Vault", "type": "string" } }, "required": [ "type" ], "allOf": [ ] } }, "catalog": { "title": "Catalog", "type": "object", "properties": { "type": { "title": "Type", "type": "string", "enum": [] }, "vault": { "title": "Vault", "type": "string" }, "options": { "title": "Options", "type": "object" } }, "additionalProperties": false, "required": [ "type" ], "allOf": [ ] }, "cataloged": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer" } }, "required": [ "id" ], "additionalProperties": false }, { "type": "object", "properties": { "strategy": { "type": "string", "enum": [ "topic" ] }, "version": { "type": "string", "default": "latest" } }, "required": [ "strategy" ], "additionalProperties": false }, { "type": "object", "properties": { "subject": { "type": "string" }, "version": { "type": "string", "default": "latest" } }, "required": [ "subject" ], "additionalProperties": false } ] }, "options": { "binding": { }, "catalog": { } }, "binding": { "title": "Binding", "type": "object", "properties": { "vault": { "title": "Vault", "type": "string" }, "catalog": { "title": "Catalog", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "array", "items": { "$ref": "#/$defs/cataloged" } } }, "maxProperties": 1 }, "type": { "title": "Type", "type": "string", "enum": [] }, "kind": { "title": "Kind", "enum": [ "client", "server", "proxy", "remote_client", "remote_server", "cache_client", "cache_server"] }, "options": { "title": "Options", "type": "object" }, "routes": { "title": "Routes", "type": "array", "items": { "title": "Route", "type": "object", "properties": { "exit": { "title": "Exit", "type": "string" }, "when": { "title": "Conditions", "type": "array", "items": { "title": "Condition", "type": "object" } }, "with": { "title": "Override", "type": "object" }, "guarded": { "title": "Guarded", "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "title": "Roles", "type": "array", "items": { "title": "Role", "type": "string" } } } } }, "additionalProperties": false } }, "telemetry": { "title": "Telemetry", "type": "object", "properties": { "metrics": { "type": "array" }, "attributes": { "type": "object", "patternProperties": { "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$": { "type": "string" } } } } }, "exit": { "title": "Exit", "type": "string" }, "entry": { "title": "Entry", "type": "string", "pattern": "^[a-zA-Z]+[a-zA-Z0-9\\._\\-]*$" } }, "additionalProperties": false, "required": [ "type", "kind" ], "anyOf": [ { "properties": { "kind": { "const": "remote_client" }, "exit": false }, "required": [ "entry" ] }, { "properties": { "kind": { "const": "remote_server" } }, "required": [ "entry" ] }, { "properties": { "kind": { "not": { "enum": [ "remote_client", "remote_server" ] } }, "entry": false } } ], "allOf": [ ] }, "binding-ext": { }, "validate": { "oneOf": [ { "type": "string", "enum": [ "strict", "lenient" ] }, { "type": "object", "properties": { "decode": { "type": "string", "enum": [ "strict", "lenient" ] }, "encode": { "type": "string", "enum": [ "strict", "lenient" ] } }, "additionalProperties": false } ], "default": "strict" }, "models": { "oneOf": [ { "$ref": "#/$defs/models/types" }, { "$ref": "#/$defs/models/model" } ], "types": { "type": "string", "enum": [] }, "model": { "type": "object", "properties": { "model": { "$ref": "#/$defs/models/types" }, "validate": { "$ref": "#/$defs/validate" } }, "required": [ "model" ], "allOf": [ ], "unevaluatedProperties": false } }, "model-ext": { } } }