diff --git a/schemas/api/stations/board.json b/schemas/api/stations/board.json new file mode 100644 index 0000000..4a1a6c9 --- /dev/null +++ b/schemas/api/stations/board.json @@ -0,0 +1,232 @@ +{ + "$id": "https://schema.owlboard.info/api/stations/board.schema.json", + "$schema": "https://json-schema.org/draft-07/schema#", + "title": "StationsBoard", + "description": "Arr/Dep/Pass Board", + "type": "object", + "properties": { + "n": { + "type": "string", + "title": "Location Name", + "description": "The name of the location" + }, + "o": { + "type": "string", + "title": "Operator (if station)", + "description": "The operator of the station, if the location is a station" + }, + "s": { + "title": "Services", + "type": "array", + "items": { + "$ref": "#/definitions/boardService" + } + }, + "m": { + "type": "array", + "title": "messages", + "items": { + "$ref": "#/definitions/boardMsgs" + } + } + }, + "required": [ + "n" + ], + "definitions": { + "boardService": { + "type": "object", + "required": [ + "r", + "o", + "ip", + "og", + "dt" + ], + "properties": { + "r": { + "type": "string", + "title": "RID", + "description": "Services RID" + }, + "o": { + "type": "string", + "title": "TOC", + "description": "The services operator code" + }, + "ip": { + "type": "boolean", + "title": "isPassenger", + "description": "Whether this is a passenger service" + }, + "og": { + "type": "object", + "title": "Origin", + "description": "The services origin", + "required": ["t", "n"], + "properties": { + "t": { + "type": "string", + "title": "TIPLOC", + "description": "The Origin TIPLOC" + }, + "n": { + "type": "string", + "title": "Name", + "description": "The Origin Name" + } + } + }, + "dt": { + "type": "object", + "title": "Destination", + "description": "The services destination", + "required": ["t", "n"], + "properties": { + "t": { + "type": "string", + "title": "TIPLOC", + "description": "The Destination TIPLOC" + }, + "n": { + "type": "string", + "title": "Name", + "description": "The Destination Name" + } + } + }, + "sta": { + "type": "string", + "format": "date-time", + "title": "Scheduled Arrival", + "description": "The scheduled arrival time of the service (public or working)" + }, + "ata": { + "type": "string", + "format": "date-time", + "title": "Actual Arrival", + "description": "The actual arrival time of the service" + }, + "eta": { + "type": "string", + "format": "date-time", + "title": "Estimated Arrival", + "description": "The estimated arrival time of the service" + }, + "std": { + "type": "string", + "format": "date-time", + "title": "Scheduled Departure", + "description": "The scheduled departure time of the service (public or working)" + }, + "atd": { + "type": "string", + "format": "date-time", + "title": "Actual Departure", + "description": "The actual departure time of the service" + }, + "etd": { + "type": "string", + "format": "date-time", + "title": "Estimated Departure", + "description": "The estimated departure time of the service" + }, + "p": { + "type": "string", + "title": "Platform", + "description": "The platform for this service" + }, + "pc": { + "type": "boolean", + "title": "Platform Changed", + "description": "Whether the platform has changed (alteration)" + }, + "ps": { + "type": "boolean", + "title": "Platform suppressed", + "description": "Whether the platform number is suppressed" + }, + "c": { + "type": "boolean", + "title": "Cancelled", + "description": "Whether the service is cancelled at this location" + }, + "da": { + "type": "boolean", + "title": "Delayed Arrival", + "description": "Whether to show the service as delayed arrival" + }, + "dd": { + "type": "boolean", + "title": "Delayed Departure", + "description": "Whether to show the service as delayed departure" + }, + "cr": { + "$ref": "#/definitions/reason" + }, + "dr": { + "$ref": "#/definitions/reason" + }, + "act": { + "type": "string", + "title": "Activities", + "description": "Activities at this location" + }, + "f": { + "$ref": "#/definitions/formation" + } + } + }, + "reason": { + "type": "object", + "properties": { + "r": { + "type": "string", + "title": "Reason", + "description": "The textual reason" + }, + "l": { + "type": "string", + "title": "Location", + "description": "The location the reason occurred" + }, + "n": { + "type": "boolean", + "title": "Near", + "description": "Whether the reason occured NEAR LOCATION (else AT LOCATION)" + } + } + }, + "formation": { + "type": "object", + "properties": { + "fid": { + "type": "string", + "title": "FID", + "description": "The serviced FID at this location" + } + } + }, + "boardMsgs": { + "type": "object", + "required": ["t"], + "properties": { + "t": { + "type": "string", + "title": "Text", + "description": "The message text" + }, + "l": { + "type": "string", + "title": "Link", + "description": "The NRE Link to the incident page" + }, + "lt": { + "type": "string", + "title": "Link Text", + "description": "The text to display as the link" + } + } + } + } +} \ No newline at end of file