Compare commits

..

20 Commits

Author SHA1 Message Date
b8eaad4bbd Adjust DarwinReasonCode and remove unused PushPort types
All checks were successful
Generate and Release Protos / release (push) Successful in 41s
2026-04-07 19:18:32 +01:00
a1aeb7e79f Association times are now just plain strings, as the date cannot be determined from the association data alone - as querying by time is not required, the expected type will be a string.
All checks were successful
Generate and Release Protos / release (push) Successful in 41s
2026-04-06 19:23:11 +01:00
a734dea17a Add darwin association data type
All checks were successful
Generate and Release Protos / release (push) Successful in 44s
2026-04-05 20:13:14 +01:00
e7f307f243 Fix a non-boolean default value in DarwinSchedule type
All checks were successful
Generate and Release Protos / release (push) Successful in 42s
2026-04-01 23:27:26 +01:00
727641f49f Update Darwin Scheudle schema
All checks were successful
Generate and Release Protos / release (push) Successful in 40s
2026-03-31 21:27:56 +01:00
b17efa3e5d Add 'darwin-schedule' schema
All checks were successful
Generate and Release Protos / release (push) Successful in 42s
2026-03-31 20:41:44 +01:00
56aae55f16 Update enum values for MessageEnvelope to allow kb-stations
All checks were successful
Generate and Release Protos / release (push) Successful in 38s
2026-03-29 19:32:02 +01:00
91abe29b62 Adjust KB_Stations data type schema
All checks were successful
Generate and Release Protos / release (push) Successful in 39s
2026-03-29 19:08:15 +01:00
c22f3c7230 Adjust required fields
All checks were successful
Generate and Release Protos / release (push) Successful in 39s
2026-03-28 22:36:42 +00:00
311ff3798f Fix knowledgebase stations schema
All checks were successful
Generate and Release Protos / release (push) Successful in 39s
2026-03-28 22:29:46 +00:00
a869935241 Add Knowledgebase Stations schema
All checks were successful
Generate and Release Protos / release (push) Successful in 43s
2026-03-28 22:20:53 +00:00
6cf6ea8aef Update schedule object to handle canellation location 2026-03-27 22:44:03 +00:00
50824255f8 Extend TOC info type to handle URL
All checks were successful
Generate and Release Protos / release (push) Successful in 32s
2026-03-25 13:24:20 +00:00
e1950c0ef3 Fix TIPLOC in darwin-tiplocs to be a simple string, rather than an array
All checks were successful
Generate and Release Protos / release (push) Successful in 36s
2026-03-22 19:26:37 +00:00
1a9b68ce41 Add schemas for Darwin Reference data
All checks were successful
Generate and Release Protos / release (push) Successful in 41s
2026-03-21 21:00:27 +00:00
817baa7d66 Remove hashes from PIS data type
All checks were successful
Generate and Release Protos / release (push) Successful in 37s
2026-03-19 06:22:13 +00:00
072902be59 Fix incorrect data type
All checks were successful
Generate and Release Protos / release (push) Successful in 32s
2026-03-02 22:47:25 +00:00
2452e17faa Fix onocorrect data-type 2026-03-02 22:47:08 +00:00
f2a9b7ffdc Ensure types correct
All checks were successful
Generate and Release Protos / release (push) Successful in 35s
2026-03-02 22:25:02 +00:00
4ab05ba738 Adjust declarations and remove uses of the allOf function to assist with type generation
All checks were successful
Generate and Release Protos / release (push) Successful in 38s
2026-02-27 20:18:57 +00:00
16 changed files with 815 additions and 614 deletions

View File

@@ -0,0 +1,118 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/association.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinAssocData",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "darwin-association",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"mr",
"ar",
"t",
"c",
"s",
"mt",
"at"
],
"properties": {
"mr": {
"type": "string",
"name": "Main RID",
"description": "The main RID of this association object"
},
"ar": {
"type": "string",
"name": "Associated RID",
"description": "The associated RID of this association object"
},
"t": {
"type": "string",
"name": "TIPLOC",
"description": "The location at which this association applies"
},
"c": {
"enum": ["JJ", "VV", "LK", "NP"],
"name": "Category",
"description": "The type of association"
},
"s": {
"type": "string",
"format": "date",
"name": "SSD",
"description": "SSD Generated from the Main RID"
},
"mt": {
"name": "Main Times",
"description": "Timings that apply to the main RID",
"type": "object",
"properties": {
"wta": { "type": "string" },
"wtd": { "type": "string" },
"wtp": { "type": "string" },
"pta": { "type": "string" },
"ptd": { "type": "string" }
}
},
"at": {
"name": "Associated Times",
"description": "Timings that apply to the associated RID",
"type": "object",
"properties": {
"wta": { "type": "string" },
"wtd": { "type": "string" },
"wtp": { "type": "string" },
"pta": { "type": "string" },
"ptd": { "type": "string" }
}
},
"can": {
"name": "Cancelled",
"type": "boolean",
"description": "Whether this association is cancelled"
},
"del": {
"name": "Deleted",
"type": "boolean",
"description": "Whether this association is deleted"
}
}
}
}
},
"required": [
"service_name",
"service_id",
"data_type",
"data_kind",
"sent_timestamp",
"payload"
],
"additionalProperties": false
}

View File

@@ -0,0 +1,209 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/schedule.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinScheduleData",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "darwin-schedule",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"rid",
"uid",
"ssd",
"tid",
"toc",
"isp",
"isc",
"l"
],
"properties": {
"rid": {
"type": "string",
"description": "Service RID",
"maxLength": 16
},
"uid": {
"type": "string",
"description": "Service UID",
"maxLength": 10
},
"ssd": {
"type": "string",
"format": "date",
"description": "Date on which the service commences"
},
"tid": {
"name": "train_id",
"type": "string",
"minLength": 4,
"maxLength": 4,
"description": "The signalling headcode of the service"
},
"toc": {
"type": "string",
"minLength": 2,
"maxLength": 2,
"description": "The two character code for the operating TOC"
},
"sts": {
"type": "string",
"maxLength": 1,
"name": "status",
"description": "The 'status' of the service"
},
"qt": {
"name": "qtrain",
"description": "qtrain?",
"type": "boolean",
"default": false
},
"d": {
"name": "deleted",
"description": "Whether the schedule is deleted",
"type": "boolean",
"default": false
},
"isp": {
"name": "is_passenger",
"type": "boolean",
"description": "Whether the service is a passenger service"
},
"isc": {
"name": "is_charter",
"type": "boolean",
"description": "Whether the service is a charter service"
},
"sid": {
"name": "rsid",
"type": ["string", "null"],
"maxLength": 10
},
"q": {
"name": "qtrain",
"description": "True if the service is scheduled but not activated (if not activated, presumed not running)",
"type": "boolean",
"default": false
},
"cr": {
"name": "cancel_reason",
"type": ["integer", "null"],
"description": "The reason code for the services cancellation"
},
"cl": {
"name": "cancel_location",
"type": "string",
"description": "The location at which the service was cancelled"
},
"l": {
"type": "array",
"minItems": 2,
"items": {
"type": "object",
"required": ["tpl", "lr", "s"],
"properties": {
"tpl": {
"type": "string",
"description": "The locations TIPLOC",
"maxLength": 7,
"minLength": 4
},
"lr": {
"name": "loc_role",
"description": "The role of the location (Orig, Call, Pass, Dest)",
"enum": ["ORIG", "CALL", "PASS", "DEST"]
},
"s": {
"name": "seq",
"description": "The sequence in the service at which this location occours",
"type": "integer",
"minimum": 1,
"maximum": 32767
},
"pta": {
"description": "Public timetable arrival",
"type": "string",
"format": "date-time"
},
"ptd": {
"description": "Public timetable departure",
"type": "string",
"format": "date-time"
},
"wta": {
"description": "Working timetable arrival",
"type": "string",
"format": "date-time"
},
"wtd": {
"description": "Working timetable arrival",
"type": "string",
"format": "date-time"
},
"wtp": {
"description": "Working timetable pass",
"type": "string",
"format": "date-time"
},
"c": {
"name": "can",
"description": "Whether the service is cancelled at this location",
"default": false,
"type": "boolean"
},
"a": {
"name": "activities",
"type": "string",
"maxLength": 12
},
"fid": {
"description": "Unique formation indentifier (Maps to formation feed)",
"type": "string"
},
"al": {
"name": "avg_loading",
"description": "Average loading at this location",
"type": "integer"
}
}
}
}
}
}
}
},
"required": [
"service_name",
"service_id",
"data_type",
"data_kind",
"sent_timestamp",
"payload"
],
"additionalProperties": false
}

View File

@@ -0,0 +1,50 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/ref/stations.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinStationsNames",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "ref-darwin-station-names",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": ["c", "n"],
"properties": {
"c": {
"type": "string",
"description": "CRS of the location"
},
"n": {
"type": "string",
"description": "The display name of this location"
}
}
}
}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

View File

@@ -0,0 +1,58 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/ref/tiplocs.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinTiplocData",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "ref-darwin-tiplocs",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": ["t", "n"],
"properties": {
"c": {
"type": "string",
"description": "CRS of the location"
},
"t": {
"type": "string",
"description": "TIPLOC assigned to the location"
},
"n": {
"type": "string",
"description": "The display name of this location"
},
"l": {
"type": "string",
"description": "The NLC of this location"
}
}
}
}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

View File

@@ -0,0 +1,67 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/ref/via-text.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinViaText",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "ref-darwin-via-text",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": ["a", "d", "l1", "v"],
"properties": {
"a": {
"name": "at",
"type": "string",
"description": "The CRS defining where the text should be displayed"
},
"d": {
"name": "destination",
"type": "string",
"description": "The text should apply to trains to this destination"
},
"l1": {
"name": "location-one",
"type": "string",
"description": "Message triggered if loc1 & loc2 (if present) are listed as stops"
},
"l2": {
"name": "location-two",
"type": "string",
"description": "Message triggered if loc1 & loc2 (if present) are listed as stops"
},
"v": {
"name": "viaText",
"description": "The text that should be displayed",
"type": "string"
}
}
}
}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

View File

@@ -0,0 +1,77 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/ref/loading-category.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinLoadingCatData",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "ref-darwin-loading-category",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": ["c", "n"],
"properties": {
"c": {
"name": "code",
"type": "string",
"description": "The 'code' for the 'category'"
},
"t": {
"name": "typicalDescription",
"type": "string",
"description": "The 'typicalDescription' of the category"
},
"e": {
"name": "expectedDescription",
"type": "string",
"description": "The 'expectedDescription' of the category"
},
"d": {
"name": "definition",
"description": "The 'definition' of the category",
"type": "string"
},
"n": {
"name": "name",
"description": "The 'name' of the category",
"type": "string"
},
"i": {
"name": "image",
"description": "The 'image' for the category",
"type": "string"
},
"o": {
"name": "TOC",
"description": "The 'toc' for the category",
"type": "string"
}
}
}
}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

View File

@@ -0,0 +1,57 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/ref/reasons.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinReasonCodeData",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "ref-darwin-reason-code",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": ["c"],
"properties": {
"c": {
"type": "integer",
"name": "code",
"description": "The 'code' that the late/cancel reason maps to"
},
"lr": {
"type": "string",
"name": "Late Reason",
"description": "The lateReason string for the item"
},
"cr": {
"type": "string",
"name": "Cancellation Reason",
"description": "The cancelReason string for the item"
}
}
}
}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

View File

@@ -0,0 +1,57 @@
{
"$id": "https://schema.owlboard.info/data-ingress/darwin/ref/tocs.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "DarwinTocData",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "ref-darwin-toc",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": ["c", "n"],
"properties": {
"c": {
"name": "ATOC Code",
"type": "string",
"description": "The ATOC 'code' for the TOC"
},
"n": {
"name": "TOC Name",
"type": "string",
"description": "The name of the TOC"
},
"u": {
"name": "URL",
"type": "string",
"description": "URL for TOC Information"
}
}
}
}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

View File

@@ -0,0 +1,119 @@
{
"$id": "https://schema.owlboard.info/data-ingress/knowledgebase/stations.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "KnowledgebaseStations",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "raw",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "kb-stations"
},
"payload": {
"type": "array",
"additionalItems": false,
"items": {
"type": "object",
"required": [
"c",
"mc",
"l",
"o",
"p",
"a",
"r",
"d"
],
"properties": {
"c": {
"type": "string",
"name": "CRS Code",
"description": "Station CRS (Primary Key)"
},
"n": {
"type": "string",
"name": "NLC Code",
"description": "Station NLC Code"
},
"mc": {
"type": "number",
"name": "Minimum Connection Time",
"description": "The minimum connection time at this station"
},
"a": {
"type": "string",
"name": "Address",
"description": "The address of the station"
},
"p": {
"type": "string",
"name": "Postcode",
"description": "The public postcode of the station"
},
"l": {
"type": "object",
"name": "Location",
"description": "LatLon of the station",
"required": ["lt", "ln"],
"properties": {
"lt": {
"type": "number",
"name": "Latitude",
"description": "Stations Latitude"
},
"ln": {
"type": "number",
"name": "Longitude",
"description": "Stations Longitude"
}
}
},
"o": {
"type": "string",
"name": "Operator",
"description": "The two character code denoting the stations operator"
},
"m": {
"type": "string",
"name": "Map URL"
},
"r": {
"name": "Request",
"type": "boolean",
"description": "Denotes whether station is Request Stop"
},
"d": {
"name": "Defibrillator",
"type": "boolean",
"description": "Denotes whether defibrillator is available"
}
}
}
}
},
"required": [
"service_name",
"service_id",
"data_type",
"data_kind",
"sent_timestamp",
"payload"
],
"additionalProperties": false
}

View File

@@ -14,7 +14,7 @@
},
"data_type": {
"type": "string",
"enum": ["file"],
"enum": ["file", "raw"],
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
@@ -23,7 +23,7 @@
},
"data_kind": {
"type": "string",
"enum": ["pis", "timetable", "knowledgebase", "darwin_schedule", "darwin_ts", "darwin_ref"],
"enum": ["pis", "timetable", "kb-stations", "PushPort16Schedule", "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"
},
"payload": {}

View File

@@ -25,13 +25,6 @@
},
"description": "List of 3ALPHA/CRS Codes"
},
"crsHash": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[0-9]+$",
"description": "Stringified 64-bit hash"
},
"tiplocStops": {
"type": "array",
"items": {
@@ -41,14 +34,8 @@
"pattern": "^[a-zA-Z0-9]+$"
},
"description": "List of TIPLOC Codes"
},
"tiplocHash": {
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[0-9]+$"
}
},
"required": ["code", "toc", "crsStops", "crsHash", "tiplocStops", "tiplocHash"],
"required": ["code", "toc", "crsStops", "tiplocStops"],
"additionalProperties": false
}

View File

@@ -1,267 +0,0 @@
{
"$id": "https://schema.owlboard.info/data-ingress/pushport16-schedule.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "PushPortSchedule",
"description": "Consolidated object definition for Darwin Schedule messages",
"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"
}
}
}
]
}
},
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "PushPort16Schedule",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"const": "PushPort16Schedule",
"description": "The data type contained in the message. Currently supported PIS: PIS Data, Timetable: CIF or VSTP Data, Knowledgebase: Station Data"
},
"payload": {
"type": "object",
"required": [
"rid",
"uid",
"trainId",
"ssd",
"toc",
"locations"
],
"properties": {
"rid": {"type": "string", "description": "Rail Identifier - Unique value for the service"},
"uid": {"type": "string", "description": "Unique ID - Unique value for the timetable entry - maps to Network Rail CIF schedules"},
"ssd": {"type": "string", "format": "date", "description": "Service Start Date - The date the service commences"},
"trainId": {"type": "string", "description": "Headcode"},
"toc": {"type": "string", "minLength": 2, "maxLength": 2, "description": "Train Operator (ATOC Code)"},
"rsid": {"type": "string", "description": "Retail Service ID"},
"status": {"type": "string", "default": "P", "description": "P = Permanent, L = Long Term, S = Short Term"},
"trainCat": {"type": "string", "default": "OO", "description": "Train Category"},
"isPassenger": {"type": "boolean", "default": true, "description": "Declares the service as a passenger service"},
"isActive": {"type": "boolean", "default": false, "description": "UNKNOWN"},
"isCharter": {"type": "boolean", "default": false, "description": "Declares the service as a charter service"},
"cancelReason": {"type": "integer", "description": "Cancellation Reason code"},
"locations": {
"type": "object",
"description": "Merged and flattened location objects",
"properties": {
"OR": {
"type": "array",
"description": "OR/OPOR Values - Trains Origin",
"items": {"$ref": "#/definitions/originPoint"}
},
"IP": {
"type": "array",
"description": "IP/OPIP Values - Intermediate Points",
"items": {"$ref": "#/definitions/callingPoint"}
},
"PP": {
"type": "array",
"description": "Passing Points (Non-stop)",
"items": {"$ref": "#/definitions/passPoint"}
},
"DT": {
"type": "array",
"description": "DT/OPDT Values - Trains Destination",
"items": {"$ref": "#/definitions/destinationPoint"}
}
}
}
}
}
},
"required": [
"service_name",
"service_id",
"data_type",
"sent_timestamp"
],
"additionalProperties": false
}

View File

@@ -1,241 +0,0 @@
{
"$id": "https://schema.owlboard.info/data-ingress/pushport-schedule.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "PushPortSchedule",
"type": "object",
"properties": {
"service_name": {
"type": "string",
"description": "Name of the service submitting the update"
},
"service_id": {
"type": "string",
"description": "ID of the service sending the message - usually a hostname"
},
"data_type": {
"type": "string",
"const": "PushPortSchedule",
"description": "The type of data contained in this message object"
},
"sent_timestamp": {
"type": "integer",
"description": "Unix timestamp representing the time the message was sent"
},
"data_kind": {
"type": "string",
"enum": [
"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"
},
"payload": {
"type": "object",
"required": [
"rid",
"uid",
"trainId",
"ssd",
"toc",
"locations"
],
"properties": {
"rid": {
"type": "string",
"description": "Unique service ID"
},
"uid": {
"type": "string",
"description": "Unique schedule ID - maps to NR CIF"
},
"trainId": {
"type": "string",
"description": "Train Headcode"
},
"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": {
"type": "array",
"items": {
"type": "object",
"required": [
"tpl",
"seq"
],
"properties": {
"tpl": {
"type": "string",
"description": "TIPLOC of location"
},
"seq": {
"type": "integer",
"description": "The order of the stop for sorting and handling repeated TIPLOCs"
},
"wta": {
"type": [
"string",
"null"
]
},
"wtd": {
"type": [
"string",
"null"
]
},
"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"
}
}
}
}
}
}
}
}
},
"required": [
"service_name",
"service_id",
"data_type",
"sent_timestamp"
],
"additionalProperties": true
}

View File

@@ -1,39 +0,0 @@
{
"$id": "https://schema.owlboard.info/data-ingress/pushport-ts.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "PushPortTS",
"type": "object",
"properties": {
"rid": {
"type": "string",
"description": "Unique ID for the train service (eg. 2026022217610103)",
"pattern": "^[0-9]{15}$"
},
"uid": {
"type": "string",
"description": "Schedule ID - The permanent ID for the schedule in the static timetable"
},
"ssd": {
"type": "string",
"format": "date",
"description": "Scheduled Start Data, the date the train service started its journey"
},
"isDelayed": {
"type": "boolean",
"description": "Indicated if the message is delayed due to PushPort service disruption"
},
"lateReason": {
"type": "integer",
"description": "Reason the train is late (Maps to textual reason)"
},
"cancelReason": {
"type": "integer",
"description": "Reason the train is cancelled (Maps to textual reason)"
},
"locations": {
"type": "array",
"description": "A list of one or more locations where the train has recorded a movement or forecast",
"items": { "$ref": "https://schema.owlboard.info/data-ingress/pushport-ts-location.schema.json" }
}
}
}

View File

@@ -1,51 +0,0 @@
{
"$id": "https://schema.owlboard.info/data-ingress/pushport-ts-location.schema.json",
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "PushPortTSLocation",
"type": "object",
"required": ["tpl"],
"definitions": {
"TSTime": {
"type": "object",
"properties": {
"at": {"type": "string", "description": "Actual time"},
"et": {"type": "string", "description": "Estimated time"},
"wet": {"type": "string", "description": "Working estimated time"},
"src": {"type": "string", "description": "Data source (TD/Darwin/etc)"},
"atClass": {"type": "string", "description": "Time source Automatic/Manual"},
"delayed": {"type": "boolean", "description": "is train delayed with no estimated time"},
"srcInst": {"type": "string", "description": "Source instance (what caused the update)"},
"atRemoved": {"type": "boolean", "description": "Whether a previous 'at' was reported in error and should be removed"}
}
}
},
"properties": {
"tpl": {"type": "string", "description": "TIPLOC for the location"},
"wta": {"type": "string", "description": "Scheduled working time arrival"},
"wtd": {"type": "string", "description": "Scheduled working time departure"},
"wtp": {"type": "string", "description": "Scheduled working time pass"},
"pta": {"type": "string", "description": "Scheduled public arrival time"},
"ptd": {"type": "string", "description": "Scheduled public departure time"},
"arr": {"$ref": "#/definitions/TSTime"},
"dep": {"$ref": "#/definitions/TSTime"},
"pass": {"$ref": "#/definitions/TSTime"},
"plat": {
"type": "object",
"description": "Platform data",
"properties": {
"value": {"type": "string", "description": "Platform number/letter"},
"platsrc": {"type": "string", "enum": ["A", "M", "P"], "description": "Source of data Automatic/Manual/Planned"},
"platsup": {"type": "boolean", "description": "Is platform suppressed from public display"},
"cisPlatsup": {"type": "boolean", "description": "Whether CIS or Darwin Workstation has supressed the platform"},
"conf": {"type": "boolean", "description": "Whether platform has been confirmed by the local CIS"}
}
},
"suppr": {"type": "boolean", "description": "Whether location is supressed"},
"length": {"type": "integer", "description": "Train length (no. of coaches)"},
"detachFront": {"type": "boolean","description": "Indicated if coaches will detatch from front"},
"detachRead": {"type": "boolean", "description": "Indicates if coaches will detatch from rear"},
"attachFront": {"type": "boolean", "description": "Indicates if coaches will attach to front"},
"attachRear": {"type": "boolean", "description": "Indicates if coaches will be attached to rear"},
"adhoc": {"type": "boolean", "description": "Whether this is an ad-hoc stop"}
}
}