mservice-node
Version:
minimal node micro service framework on top of fastify
389 lines • 11.8 kB
JSON
{
"$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])$"
}
}
}