{ "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "$schema": { "type": "string", "format": "url" }, "debug": { "type": "boolean" }, "transportLibrary": { "additionalProperties": false, "properties": { "platformClientId": { "type": "string" }, "platformClientSecret": { "type": "string" } }, "type": "object", "required": ["platformClientId", "platformClientSecret"] }, "database": { "additionalProperties": false, "properties": { "connectionString": { "type": "string" }, "dbName": { "type": "string", "default": "default", "minLength": 1 } }, "required": ["connectionString"], "type": "object" }, "infrastructure": { "additionalProperties": false, "properties": { "httpServer": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "default": true }, "authentication": { "additionalProperties": false, "properties": { "apiKey": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean" }, "headerName": { "type": "string" }, "keys": { "additionalProperties": { "additionalProperties": false, "properties": { "description": { "type": "string" }, "enabled": { "type": "boolean" }, "expiresAt": { "pattern": "^([+-]?\\d{4}(?!\\d{2}\\b))((-?)((0[1-9]|1[0-2])(\\3([12]\\d|0[1-9]|3[01]))?|W([0-4]\\d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]\\d|[12]\\d{2}|3([0-5]\\d|6[1-6])))([T\\s]((([01]\\d|2[0-3])((:?)[0-5]\\d)?|24:?00)([.,]\\d+(?!:))?)?(\\17[0-5]\\d([.,]\\d+)?)?([zZ]|([+-])([01]\\d|2[0-3]):?([0-5]\\d)?)?)?)?$", "type": "string" }, "key": { "type": "string" }, "scopes": { "items": { "type": "string" }, "type": "array" } }, "required": ["key"], "type": "object" }, "type": "object" } }, "required": ["keys"], "type": "object" }, "jwtBearer": { "properties": { "enabled": { "type": "boolean" } }, "type": "object" }, "oidc": { "properties": { "enabled": { "type": "boolean" } }, "type": "object" } }, "type": "object" }, "cors": { "$ref": "#/definitions/CorsOptions", "default": { "origin": false } } }, "type": "object" } }, "required": ["httpServer"] }, "modules": { "additionalProperties": false, "properties": { "sync": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "default": false }, "interval": { "type": "integer", "default": 60, "minimum": 1 } }, "type": "object" }, "autoAcceptPendingRelationships": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "default": false } }, "type": "object" }, "autoDecomposeDeletionProposedRelationships": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "default": false } }, "type": "object" }, "coreHttpApi": { "additionalProperties": false, "properties": { "enabled": { "type": "boolean", "default": true }, "docs": { "additionalProperties": false, "type": "object", "properties": { "enabled": { "type": "boolean", "default": true } } } }, "type": "object" }, "webhooks": { "type": "object", "properties": { "enabled": { "type": "boolean", "default": false }, "targets": { "type": "object", "additionalProperties": { "type": "object", "properties": { "url": { "type": "string", "format": "url" }, "headers": { "type": "object", "additionalProperties": { "type": "string" } } }, "required": ["url"] } }, "webhooks": { "type": "array", "items": { "type": "object", "properties": { "triggers": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "target": { "oneOf": [ { "type": "string" }, { "type": "object", "properties": { "url": { "type": "string", "format": "url" }, "headers": { "type": "object", "additionalProperties": { "type": "string" } } }, "required": ["url"] } ] } }, "required": ["triggers", "target"] } } } } }, "type": "object" } }, "required": ["database", "transportLibrary", "infrastructure"], "type": "object", "definitions": { "CorsOptionMethod": { "enum": ["GET", "POST", "PUT", "PATCH", "DELETE", "OPTIONS", "HEAD"], "type": "string" }, "CorsOptions": { "additionalProperties": false, "properties": { "allowedHeaders": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "credentials": { "type": "boolean" }, "exposedHeaders": { "anyOf": [ { "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "maxAge": { "type": "number" }, "methods": { "anyOf": [ { "$ref": "#/definitions/CorsOptionMethod" }, { "items": { "$ref": "#/definitions/CorsOptionMethod" }, "type": "array" } ] }, "optionsSuccessStatus": { "type": "number" }, "origin": { "anyOf": [ { "type": "boolean" }, { "type": "string" }, { "format": "regex", "type": "string" }, { "items": { "type": "string" }, "type": "array" } ] }, "preflightContinue": { "type": "boolean" } }, "type": "object" } } }