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