447 lines
8.4 KiB
JSON
447 lines
8.4 KiB
JSON
{
|
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
|
"type": "object",
|
|
"required": [
|
|
"routeStart",
|
|
"routeEnd",
|
|
"routeId",
|
|
"updated",
|
|
"signallerStart",
|
|
"signallerEnd",
|
|
"elecStart",
|
|
"elecEnd",
|
|
"routeDetail"
|
|
],
|
|
"additionalProperties": false,
|
|
"properties": {
|
|
"routeStart": {
|
|
"type": "string",
|
|
"description": "The route start point"
|
|
},
|
|
"routeEnd": {
|
|
"type": "string",
|
|
"description": "The route end point"
|
|
},
|
|
"routeId": {
|
|
"type": "string",
|
|
"description": "The routes ID Code",
|
|
"pattern": "^[0-9]{4}$"
|
|
},
|
|
"updated": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "Date the route was last updated"
|
|
},
|
|
"checked": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "Date the route was last checked for accuracy"
|
|
},
|
|
"signallerStart": {
|
|
"type": "string",
|
|
"description": "The signaller at the start of the route"
|
|
},
|
|
"signallerEnd": {
|
|
"type": "string",
|
|
"description": "The signalller at the end of the route"
|
|
},
|
|
"elecStart": {
|
|
"$ref": "#/definitions/elecInfo",
|
|
"description": "Electrification details at the route start"
|
|
},
|
|
"elecEnd": {
|
|
"$ref": "#/definitions/elecInfo",
|
|
"description": "Electrification info at the end of the route"
|
|
},
|
|
"routeDetail": {
|
|
"type": "array",
|
|
"additionalItems": false,
|
|
"items": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/bridge"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/crossing"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/crossover"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/electrificationChange"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/junction"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/loop"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/routeContinuation"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/siteof"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/station"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/tunnel"
|
|
},
|
|
{
|
|
"$ref": "#/definitions/signallerChange"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"definitions": {
|
|
"elecInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"elec": {
|
|
"type": "string",
|
|
"enum": ["25kvac", "750vdc", "650vdc", "1500vdc", "none"]
|
|
},
|
|
"eco": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["elec"]
|
|
},
|
|
"bridge": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"enum": ["bridge", "minorBridge"]
|
|
},
|
|
"roadName": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"position": {
|
|
"type": "string",
|
|
"enum": ["over", "under"]
|
|
},
|
|
"category": {
|
|
"type": "string",
|
|
"enum": [
|
|
"road",
|
|
"aroad",
|
|
"motorway",
|
|
"foot",
|
|
"waterway",
|
|
"stream",
|
|
"rail",
|
|
"minorRoad",
|
|
"pipeline"
|
|
]
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["type", "position", "category", "miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"crossing": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "crossing"
|
|
},
|
|
"kind": {
|
|
"type": "string",
|
|
"enum": ["CCTV", "AHB", "uwc", "foot", "omsl", "r/g", "msl", "mcb", "mg", "mcg", "aocl"]
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["type", "kind", "name", "miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"crossover": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "crossovers"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["type", "name", "miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"electrificationChange": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "electrificationChange"
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
},
|
|
"from": {
|
|
"type": "object",
|
|
"properties": {
|
|
"elec": {
|
|
"type": "string",
|
|
"enum": ["25kvac", "750vdc", "650vdc", "1500vdc", "none"]
|
|
},
|
|
"eco": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["elec"],
|
|
"additionalProperties": false
|
|
},
|
|
"to": {
|
|
"type": "object",
|
|
"properties": {
|
|
"elec": {
|
|
"type": "string",
|
|
"enum": ["25kvac", "750vdc", "650vdc", "1500vdc", "none"]
|
|
},
|
|
"eco": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["elec"],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"required": ["miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"junction": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "junction"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"diverges": {
|
|
"type": "string",
|
|
"enum": ["left", "right", "both"]
|
|
},
|
|
"direction": {
|
|
"type": "string",
|
|
"enum": ["up", "down", "both"]
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
},
|
|
"elecBranch": {
|
|
"type": "string",
|
|
"enum": ["25kvac", "750vdc", "650vdc", "1500vdc", "none"]
|
|
},
|
|
"goto": {
|
|
"type": "string"
|
|
},
|
|
"entryPoint": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": ["name", "diverges", "direction", "miles", "chains", "type"],
|
|
"additionalProperties": false
|
|
},
|
|
"loop": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "loop"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"position": {
|
|
"type": "string",
|
|
"enum": ["left", "right", "both"]
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
},
|
|
"elecLoop": {
|
|
"type": "string",
|
|
"enum": ["25kvac", "750vdc", "650vdc", "1500vdc", "none"]
|
|
}
|
|
},
|
|
"required": ["type", "name", "position", "miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"routeContinuation": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "continues"
|
|
},
|
|
"routeName": {
|
|
"type": "string",
|
|
"description": "Name to display"
|
|
},
|
|
"routeId": {
|
|
"type": "string",
|
|
"description": "Id of route"
|
|
},
|
|
"entryPoint": {
|
|
"type": "string",
|
|
"description": "Entrypoint of other route (lowercase, replacing whitespace with -, junction always referred to as jn"
|
|
}
|
|
},
|
|
"required": ["type", "routeName", "routeId", "entryPoint"],
|
|
"additionalProperties": false
|
|
},
|
|
"siteof": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "siteof"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["type", "name", "miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"station": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "station"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["type", "name", "miles", "chains"]
|
|
},
|
|
"tunnel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "tunnel"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"tunnelType": {
|
|
"type": "string",
|
|
"enum": ["start", "end", "mid", "whole"]
|
|
},
|
|
"length": {
|
|
"type": "string",
|
|
"pattern": ""
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["type", "name", "tunnelType", "miles", "chains"],
|
|
"additionalProperties": false
|
|
},
|
|
"signallerChange": {
|
|
"type": "object",
|
|
"properties": {
|
|
"type": {
|
|
"type": "string",
|
|
"const": "signallerChange"
|
|
},
|
|
"from": {
|
|
"type": "string"
|
|
},
|
|
"to": {
|
|
"type": "string"
|
|
},
|
|
"miles": {
|
|
"type": "number"
|
|
},
|
|
"chains": {
|
|
"type": "number"
|
|
}
|
|
},
|
|
"required": ["from", "to", "miles", "chains"],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
}
|