29 lines
2.0 KiB
JSON
29 lines
2.0 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft/2020-12/schema",
|
|
"$id": "https://git.novox.be/novox/mesh-controller/modules/route-proxy/contract/route.schema.json",
|
|
"title": "route",
|
|
"description": "One route a consumer asks route-proxy for, as a manifest's contributes.route says it (one, or several by local name) and the controller composes it. Version 1 of route-proxy's contract.",
|
|
"type": "object",
|
|
"additionalProperties": false,
|
|
"anyOf": [
|
|
{"required": ["name"]},
|
|
{"required": ["internal-name"]},
|
|
{"required": ["label"]}
|
|
],
|
|
"properties": {
|
|
"name": {"type": "string", "description": "the public name, served to anyone and certified by the public ACME directory; composed from label"},
|
|
"internal-name": {"type": "string", "description": "the name on the private network, served inside it alone and certified by the mesh's own authority; composed from label"},
|
|
"label": {"type": "string", "description": "the subdomain the module chooses; joined to the node's domains by the controller"},
|
|
"endpoint": {"type": "string", "description": "the manifest's endpoint the route serves; the controller fills port from it"},
|
|
"port": {"type": "integer", "minimum": 1, "maximum": 65535},
|
|
"path": {"type": "string", "description": "the path prefix the rule is scoped to; every path when absent"},
|
|
"priority": {"type": "integer", "description": "which rule wins where two match, higher first"},
|
|
"scheme": {"enum": ["http", "https"], "description": "how the consumer is reached; http when absent"},
|
|
"insecure": {"type": "boolean", "description": "skip verifying the consumer's certificate over https"},
|
|
"max-request-body": {"type": "integer", "minimum": 1, "description": "the largest body, in bytes, the route carries"},
|
|
"deny": {"type": "boolean", "description": "refuse every request matching the rule"},
|
|
"redirect": {"type": "string", "description": "answer with a permanent redirect to this address"},
|
|
"auth": {"type": "string", "description": "the file of the secret a request must present, never the secret itself"}
|
|
}
|
|
}
|