Final Draft of 16schedule.json
All checks were successful
Generate and Release Protos / release (push) Successful in 36s

This commit is contained in:
2026-02-25 16:21:40 +00:00
parent 315be1af57
commit 06e6bceb59
2 changed files with 208 additions and 284 deletions

View File

@@ -2,20 +2,183 @@
"$id": "https://schema.owlboard.info/data-ingress/pushport16-schedule.schema.json", "$id": "https://schema.owlboard.info/data-ingress/pushport16-schedule.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#", "$schema": "https://json-schema.org/draft-07/schema#",
"title": "PushPortSchedule", "title": "PushPortSchedule",
"description": "Consolidated object definition for Darwin Schedule messages",
"definitions": { "definitions": {
"SchedLocAttr": { "SchedLocAttributes": {
"type": "object", "type": "object",
"description": "Attributes common to all schedule locations", "description": "Attributes common to all schedule locations",
"required": ["tpl"], "required": [
"tpl"
],
"properties": { "properties": {
"tpl": {"type": "string", "description": "TIPLOC"}, "tpl": {
"act": {"type": "string", "description": "Activities at this location"}, "type": "string",
"planAct": {"type": "string", "description": "Planned activities at this location"}, "description": "TIPLOC"
"can": {"type": "boolean", "description": "Train cancelled flag"}, },
"fid": {"type": "boolean", "description": "Unique identifier of the trains formation"} "act": {
"type": "string",
"default": " ",
"description": "Current Activity Codes"
},
"planAct": {
"type": "string",
"description": "Planned Activity Codes"
},
"can": {
"type": "boolean",
"default": false,
"description": "Cancelled flag"
},
"fid": {
"type": "string",
"description": "Unique identifier of the formation data (v3) "
} }
} }
// Call Point Attributes. },
"CallPtAttributes": {
"type": "object",
"description": "Attributes for Calling Points (Optional for Operational variants)",
"properties": {
"pta": {
"type": "string",
"description": "Public Scheduled Time of Arrival"
},
"ptd": {
"type": "string",
"description": "Public Scheduled Time of Departure"
},
"avgLoading": {
"type": "string",
"description": "Average Loading value based on long-term averages (v3) "
}
}
},
"originPoint": {
"description": "Merged Origin (OR / OPOR). The starting point of the journey.",
"required": [
"wtd"
],
"allOf": [
{
"$ref": "#/definitions/SchedLocAttributes"
},
{
"$ref": "#/definitions/CallPtAttributes"
},
{
"type": "object",
"properties": {
"wta": {
"type": "string",
"description": "Working Scheduled Time of Arrival (Optional)"
},
"wtd": {
"type": "string",
"description": "Working Scheduled Time of Departure (Required)"
},
"fd": {
"type": "string",
"description": "False Destination TIPLOC (Passenger only)"
}
}
}
]
},
"callingPoint": {
"description": "Merged Intermediate Point (IP / OPIP). An intermediate stop requiring dwell time.",
"required": [
"wta",
"wtd"
],
"allOf": [
{
"$ref": "#/definitions/SchedLocAttributes"
},
{
"$ref": "#/definitions/CallPtAttributes"
},
{
"type": "object",
"properties": {
"wta": {
"type": "string",
"description": "Working Scheduled Time of Arrival (Required)"
},
"wtd": {
"type": "string",
"description": "Working Scheduled Time of Departure (Required)"
},
"rdelay": {
"type": "integer",
"default": 0,
"description": "Route delay value"
},
"fd": {
"type": "string",
"description": "False Destination (Passenger only)"
}
}
}
]
},
"passPoint": {
"description": "Intermediate Passing Point (PP). Purely operational.",
"required": [
"wtp"
],
"allOf": [
{
"$ref": "#/definitions/SchedLocAttributes"
},
{
"type": "object",
"properties": {
"wtp": {
"type": "string",
"description": "Working Scheduled Time of Passing (Required)"
},
"rdelay": {
"type": "integer",
"default": 0,
"description": "Route delay value"
}
},
"additionalProperties": false
}
]
},
"destinationPoint": {
"description": "Merged Destination (DT / OPDT). The termination point of the journey.",
"required": [
"wta"
],
"allOf": [
{
"$ref": "#/definitions/SchedLocAttributes"
},
{
"$ref": "#/definitions/CallPtAttributes"
},
{
"type": "object",
"properties": {
"wta": {
"type": "string",
"description": "Working Scheduled Time of Arrival (Required)"
},
"wtd": {
"type": "string",
"description": "Working Scheduled Time of Departure (Optional)"
},
"rdelay": {
"type": "integer",
"default": 0,
"description": "Route delay value"
}
}
}
]
}
}, },
"type": "object", "type": "object",
"properties": { "properties": {
@@ -38,14 +201,7 @@
}, },
"data_kind": { "data_kind": {
"type": "string", "type": "string",
"enum": [ "const": "PushPort16Schedule",
"pis",
"timetable",
"knowledgebase",
"darwin_schedule",
"darwin_ts",
"darwin_ref"
],
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data" "description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
}, },
"payload": { "payload": {
@@ -59,187 +215,42 @@
"locations" "locations"
], ],
"properties": { "properties": {
"rid": { "rid": {"type": "string", "description": "Rail Identifier - Unique value for the service"},
"type": "string", "uid": {"type": "string", "description": "Unique ID - Unique value for the timetable entry - maps to Network Rail CIF schedules"},
"description": "Unique service ID" "ssd": {"type": "string", "format": "date", "description": "Service Start Date - The date the service commences"},
}, "trainId": {"type": "string", "description": "Headcode"},
"uid": { "toc": {"type": "string", "minLength": 2, "maxLength": 2, "description": "Train Operator (ATOC Code)"},
"type": "string", "rsid": {"type": "string", "description": "Retail Service ID"},
"description": "Unique schedule ID - maps to NR CIF" "status": {"type": "string", "default": "P", "description": "P = Permanent, L = Long Term, S = Short Term"},
}, "trainCat": {"type": "string", "default": "OO", "description": "Train Category"},
"trainId": { "isPassenger": {"type": "boolean", "default": true, "description": "Declares the service as a passenger service"},
"type": "string", "isActive": {"type": "boolean", "default": false, "description": "UNKNOWN"},
"description": "Train Headcode" "isCharter": {"type": "boolean", "default": false, "description": "Declares the service as a charter service"},
}, "cancelReason": {"type": "integer", "description": "Cancellation Reason code"},
"ssd": {
"type": "string",
"format": "date",
"description": "Schedule Start Date (When the service commences)"
},
"toc": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "TOC Code"
},
"isPassenger": {
"type": "boolean",
"description": "If service is for passengers",
"default": true
},
"isCharter": {
"type": "boolean",
"description": "If train is charter service",
"default": false
},
"status": {
"type": "string",
"enum": [
"train",
"bus",
"ship"
],
"default": "train"
},
"isDelayedDelivery": {
"type": "boolean",
"description": "If message is sent as part of Darwin service recovery"
},
"cancelReason": {
"type": [
"string",
"null"
],
"description": "Reason code for cancellation"
},
"isDeleted": {
"type": "boolean",
"description": "Whether schedule should be deleted",
"default": false
},
"locations": { "locations": {
"type": "object",
"description": "Merged and flattened location objects",
"properties": {
"OR": {
"type": "array", "type": "array",
"items": { "description": "OR/OPOR Values - Trains Origin",
"type": "object", "items": {"$ref": "#/definitions/originPoint"}
"required": [
"tpl",
"seq"
],
"properties": {
"tpl": {
"type": "string",
"description": "TIPLOC of location"
}, },
"seq": { "IP": {
"type": "integer", "type": "array",
"description": "The order of the stop for sorting and handling repeated TIPLOCs" "description": "IP/OPIP Values - Intermediate Points",
"items": {"$ref": "#/definitions/callingPoint"}
}, },
"wta": { "PP": {
"type": [ "type": "array",
"string", "description": "Passing Points (Non-stop)",
"null" "items": {"$ref": "#/definitions/passPoint"}
]
}, },
"wtd": { "DT": {
"type": [ "type": "array",
"string", "description": "DT/OPDT Values - Trains Destination",
"null" "items": {"$ref": "#/definitions/destinationPoint"}
]
},
"wtp": {
"type": [
"string",
"null"
]
},
"pta": {
"type": [
"string",
"null"
]
},
"ptd": {
"type": [
"string",
"null"
]
},
"plat": {
"type": [
"string",
"null"
]
},
"isCancelled": {
"type": "boolean",
"default": false
},
"isSupressed": {
"type": "boolean",
"default": false,
"description": "Defines whether the service should be hidden to the public"
},
"activities": {
"type": "object",
"properties": {
"pass": {
"type": "boolean",
"description": "Indicates that the train does not stop, it only passes this location"
},
"pickUpDropOff": {
"type": "boolean",
"description": "Indicates the train stops for passengers to board and alight"
},
"requestStop": {
"type": "boolean",
"description": "Indicates if the train stops only when required"
},
"pickUpOnly": {
"type": "boolean",
"description": "Indicated the service picks up passengers only"
},
"dropOffOnly": {
"type": "boolean",
"description": "Indicates the service drops off passengers only"
},
"tokenExchange": {
"type": "boolean",
"description": "Indicates if the train stops for exhanging a token/staff or similar"
},
"vehiclesAttached": {
"type": "boolean",
"description": "Indicates if vehicles are attached at this location"
},
"vehiclesDetached": {
"type": "boolean",
"description": "Indicates if vehicles are detached at this location"
},
"trainCrewChange": {
"type": "boolean",
"description": "Indicates if train stops to exchange crew at this location"
},
"changeLocomotive": {
"type": "boolean",
"description": "Indicates if train stops to exchange locomotive at this location"
},
"changeEnds": {
"type": "boolean",
"description": "Indicates if the train reverses or driver changes ends at this location"
},
"staffStop": {
"type": "boolean",
"description": "Indicates that the train stops for staff use only"
},
"unadvertised": {
"type": "boolean",
"description": "Indicates that the stop is not advertised to the public"
},
"passesAnotherTrain": {
"type": "boolean",
"description": "Indicates if the train stops to pass another train on a single line crossing point"
}
}
}
} }
} }
} }
@@ -252,5 +263,5 @@
"data_type", "data_type",
"sent_timestamp" "sent_timestamp"
], ],
"additionalProperties": true "additionalProperties": false
} }

View File

@@ -1,87 +0,0 @@
"definitions": {
"SchedLocAttributes": {
"type": "object",
"description": "Attributes common to all schedule locations",
"required": ["tpl"],
"properties": {
"tpl": { "type": "string", "description": "TIPLOC" },
"act": { "type": "string", "default": " ", "description": "Current Activity Codes" },
"planAct": { "type": "string", "description": "Planned Activity Codes" },
"can": { "type": "boolean", "default": false, "description": "Cancelled flag" },
"fid": { "type": "string", "description": "Unique identifier of the formation data (v3) " }
}
},
"CallPtAttributes": {
"type": "object",
"description": "Attributes for Calling Points (Optional for Operational variants)",
"properties": {
"pta": { "type": "string", "description": "Public Scheduled Time of Arrival" },
"ptd": { "type": "string", "description": "Public Scheduled Time of Departure" },
"avgLoading": { "type": "string", "description": "Average Loading value based on long-term averages (v3) " }
}
},
"originPoint": {
"description": "Merged Origin (OR / OPOR). The starting point of the journey.",
"required": ["wtd"],
"allOf": [
{ "$ref": "#/definitions/SchedLocAttributes" },
{ "$ref": "#/definitions/CallPtAttributes" },
{
"type": "object",
"properties": {
"wta": { "type": "string", "description": "Working Scheduled Time of Arrival (Optional)" },
"wtd": { "type": "string", "description": "Working Scheduled Time of Departure (Required)" },
"fd": { "type": "string", "description": "False Destination TIPLOC (Passenger only)" }
}
}
]
},
"callingPoint": {
"description": "Merged Intermediate Point (IP / OPIP). An intermediate stop requiring dwell time.",
"required": ["wta", "wtd"],
"allOf": [
{ "$ref": "#/definitions/SchedLocAttributes" },
{ "$ref": "#/definitions/CallPtAttributes" },
{
"type": "object",
"properties": {
"wta": { "type": "string", "description": "Working Scheduled Time of Arrival (Required)" },
"wtd": { "type": "string", "description": "Working Scheduled Time of Departure (Required)" },
"rdelay": { "type": "integer", "default": 0, "description": "Route delay value" },
"fd": { "type": "string", "description": "False Destination (Passenger only)" }
}
}
]
},
"passPoint": {
"description": "Intermediate Passing Point (PP). Purely operational.",
"required": ["wtp"],
"allOf": [
{ "$ref": "#/definitions/SchedLocAttributes" },
{
"type": "object",
"properties": {
"wtp": { "type": "string", "description": "Working Scheduled Time of Passing (Required)" },
"rdelay": { "type": "integer", "default": 0, "description": "Route delay value" }
},
"additionalProperties": false
}
]
},
"destinationPoint": {
"description": "Merged Destination (DT / OPDT). The termination point of the journey.",
"required": ["wta"],
"allOf": [
{ "$ref": "#/definitions/SchedLocAttributes" },
{ "$ref": "#/definitions/CallPtAttributes" },
{
"type": "object",
"properties": {
"wta": { "type": "string", "description": "Working Scheduled Time of Arrival (Required)" },
"wtd": { "type": "string", "description": "Working Scheduled Time of Departure (Optional)" },
"rdelay": { "type": "integer", "default": 0, "description": "Route delay value" }
}
}
]
}
}