UNPKG

mservice-node

Version:

minimal node micro service framework on top of fastify

270 lines 7.95 kB
{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "/schemas/mservice-node/service/options", "$ref": "#/definitions/NodeService", "definitions": { "NodeService": { "type": "object", "additionalProperties": true, "properties": { "service": { "$ref": "#/definitions/Service" } }, "required": [ "service" ], "title": "NodeService" }, "Service": { "type": "object", "additionalProperties": false, "properties": { "baseURL": { "type": "string", "format": "uri-reference" }, "routes": { "type": "array", "minItems": 1, "items": { "$ref": "#/definitions/Route" } }, "logger": { "$ref": "#/definitions/Logger" }, "authentication": { "$ref": "#/definitions/NodeOptionsAuthentication" } }, "required": [ "baseURL", "routes", "logger" ], "title": "Service" }, "Route": { "type": "object", "additionalProperties": false, "properties": { "method": { "type": "string" }, "url": { "type": "string" }, "schema": { "$ref": "#/definitions/Schema" }, "handler": { "$ref": "#/definitions/Handler" }, "logLevel": { "$ref": "#/definitions/LogLevel" } }, "required": [ "handler", "logLevel", "method", "url" ], "title": "Route" }, "Handler": { "type": "object", "additionalProperties": false, "properties": { "file": { "type": "string", "format": "uri-reference" }, "function": { "type": "string" } }, "required": [ "file", "function" ], "title": "Handler" }, "Schema": { "type": "object", "additionalProperties": true, "properties": { "params": { "type": "object" }, "query": { "type": "object" }, "body": { "type": "object" }, "response": { "type": "object" } }, "title": "Schema" }, "LogLevel": { "type": "string", "enum": [ "trace", "debug", "info", "warn", "error", "fatal" ] }, "NodeOptionsAuthentication": { "type": "object", "additionalProperties": false, "properties": { "bearer": { "$ref": "#/definitions/BearerAuth" }, "jwt": { "$ref": "#/definitions/JWTAuth" } }, "anyOf": [ { "required": [ "bearer" ] }, { "required": [ "jwt" ] } ], "title": "NodeOptionsAuthentication" }, "BearerAuth": { "type": [ "object", "null" ], "additionalProperties": true, "properties": { "keys": { "type": "array", "items": { "type": "string" } } }, "required": [ "keys" ], "title": "Bearer" }, "JWTAuth": { "type": [ "object", "null" ], "additionalProperties": false, "properties": { "secret": { "type": "object", "properties": { "private_base64": { "type": "string" }, "public_base64": { "type": "string" } } }, "sign": { "type": "object", "properties": { "algorithm": { "type": "string" }, "issuer": { "type": "string" }, "audience": { "type": "string" }, "subject": { "type": "string" }, "expiresIn": { "anyOf": [ { "type": "string" }, { "type": "integer", "minimum": 1 } ] }, "notBefore": { "anyOf": [ { "type": "string" }, { "type": "integer", "minimum": 1 } ] } } }, "verify": { "type": "object", "properties": { "algorithm": { "type": "array", "minItems": 1, "items": { "type": "string" } }, "issuer": { "type": "string" }, "audience": { "type": "string" }, "subject": { "type": "string" }, "clockTolerance": { "type": "integer", "minimum": 1 } } } }, "required": [ "secret" ], "title": "JWT" }, "Logger": { "type": "object", "additionalProperties": false, "properties": { "level": { "$ref": "#/definitions/LogLevel" } }, "required": [ "level" ], "title": "Logger" } } }