UNPKG

mservice-node

Version:

minimal node micro service framework on top of fastify

389 lines 11.8 kB
{ "$schema": "http://json-schema.org/draft-07/schema", "$id": "/schemas/mservice-node/options", "$ref": "#/definitions/NodeOptions", "definitions": { "NodeOptions": { "type": "object", "additionalProperties": false, "properties": { "node": { "$ref": "#/definitions/Node" }, "services_note": { "type": "string" }, "services": { "$ref": "#/definitions/Services" }, "cors":{ "type":"object", "additionalProperties": true }, "authentication_note": { "type": "string" }, "authentication": { "$ref": "#/definitions/NodeOptionsAuthentication" }, "fastify.options note": { "type": "string" }, "fastify": { "$ref": "#/definitions/Fastify" }, "schema_note": { "type": "string" }, "schema": { "$ref": "#/definitions/Schema" }, "swagger_note": { "type": "string" }, "swagger": { "$ref": "#/definitions/Swagger" }, "logger_note": { "type": "string" }, "logger": { "$ref": "#/definitions/Logger" }, "database": { "$ref": "#/definitions/Database" } }, "required": [ "node", "services" ], "title": "NodeOptions" }, "NodeOptionsAuthentication": { "type": "object", "additionalProperties": false, "properties": { "bearer": { "$ref": "#/definitions/BearerAuth" }, "jwt": { "$ref": "#/definitions/JWTAuth" } }, "anyOf": [ { "required": [ "bearer" ] }, { "required": [ "jwt" ] } ], "title": "NodeOptionsAuthentication" }, "BearerAuth": { "type": "object", "additionalProperties": true, "properties": { "keys": { "type": "array", "items": { "type": "string" } } }, "required": [ "keys" ], "title": "Bearer" }, "JWTAuth": { "type": "object", "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": { "algorithms": { "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" }, "Database": { "type": "object", "additionalProperties": false, "properties": { "mysql": { "$ref": "#/definitions/Mysql" } }, "required": [ "mysql" ], "title": "Database" }, "Mysql": { "type": "object", "additionalProperties": true, "title": "Mysql" }, "Fastify": { "type": "object", "additionalProperties": false, "properties": { "options": { "$ref": "#/definitions/Options" } }, "required": [ "options" ], "title": "Fastify" }, "Options": { "type": "object", "additionalProperties": false, "properties": { "http2": { "type": "boolean" }, "logger": { "$ref": "#/definitions/Logger" }, "bodyLimit": { "type": "integer" } }, "title": "Options" }, "Logger": { "type": "object", "additionalProperties": false, "properties": { "level": { "type": "string", "enum": [ "trace", "debug", "info", "warn", "error", "fatal" ] } }, "required": [ "level" ], "title": "Logger" }, "Node": { "type": "object", "additionalProperties": false, "properties": { "name": { "$ref": "#/definitions/thai-eng_field_name" }, "host": { "$ref": "#/definitions/hostname" }, "listen": { "type": "string", "format": "ipv4" }, "port": { "type": "integer" } }, "required": [ "host", "listen", "name", "port" ], "title": "Node" }, "Schema": { "type": "object", "title": "Schema", "properties": { "use_basic": { "type": "boolean" }, "config": { "type": "object", "propertyNames": { "pattern": "^[a-zA-Z][a-zA-Z0-9_\\-]*[a-zA-Z0-9]$" }, "patternProperties": { ".+$": { "type": "string", "format": "uri-reference" } } } }, "required": [ "use_basic" ] }, "Swagger": { "type": "object", "title": "Swagger", "properties": { "routePrefix": { "type": "string", "format": "uri-reference" } }, "required": [ "routePrefix" ] }, "Services": { "type": "object", "patternProperties": { "^.*": { "$ref": "#/definitions/Service" } }, "title": "Services" }, "Service": { "type": "object", "additionalProperties": true, "properties": { "note": { "type": "string" }, "config": { "type": "string", "format": "uri-reference" }, "url": { "type": "string", "format": "uri-reference" }, "authentication": { "type": "object", "patternProperties": { "^.*": { "oneOf": [ { "$ref": "#/definitions/ServiceBearerAuthentication" } ] } } }, "active": { "type": "boolean" } }, "required": [ "active", "config", "url" ], "title": "Service" }, "ServiceBearerAuthentication": { "type": "object", "additionalProperties": false, "properties": { "key": { "type": "string" } }, "required": [ "key" ], "title": "ServiceBearerAuthentication" }, "thai-eng_field_name": { "type": "string", "pattern": "^[ก-ฮเ-ไa-zA-Z][ก-๙a-zA-Z0-9_ \\-]*[a-zA-Z0-9ก-๙]$" }, "hostname": { "type": "string", "pattern": "^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\\-]*[a-zA-Z0-9])\\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\\-]*[A-Za-z0-9])$" } } }