{ "$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 } } }