Compare commits

...

17 Commits

Author SHA1 Message Date
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
06e6bceb59 Final Draft of 16schedule.json
All checks were successful
Generate and Release Protos / release (push) Successful in 36s
2026-02-25 16:21:40 +00:00
315be1af57 Lost in schema translation! 2026-02-24 21:23:16 +00:00
c9f328bb58 Ensure that data_kind it not optinal
All checks were successful
Generate and Release Protos / release (push) Successful in 30s
2026-02-24 11:56:53 +00:00
355494fc97 Add payload key to MessageEnvelope
All checks were successful
Generate and Release Protos / release (push) Successful in 30s
2026-02-24 11:50:00 +00:00
10 changed files with 854 additions and 19 deletions

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,54 @@
{
"$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", "lR", "cR"],
"properties": {
"c": {
"type": "integer",
"description": "The 'code' that the late/cancel reason maps to"
},
"lR": {
"type": "string",
"description": "The lateReason string for the item"
},
"cR": {
"type": "string",
"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,10 +23,11 @@
},
"data_kind": {
"type": "string",
"enum": ["pis", "timetable", "knowledgebase", "darwin_schedule", "darwin_ts", "darwin_ref"],
"enum": ["pis", "timetable", "knowledgebase", "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"
}
},
"required": ["service_name", "service_id", "data_type", "sent_timestamp"],
"additionalProperties": true
"payload": {}
},
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
"additionalProperties": false
}

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

@@ -0,0 +1,365 @@
{
"$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": {
"originPoint": {
"description": "Merged Origin (OR / OPOR). The starting point of the journey.",
"required": [
"wtd",
"tpl"
],
"type": "object",
"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) "
},
"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) "
},
"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",
"tpl"
],
"type": "object",
"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) "
},
"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) "
},
"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",
"tpl"
],
"type": "object",
"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) "
},
"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",
"tpl"
],
"type": "object",
"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) "
},
"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) "
},
"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": "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": "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"
},
"cancelLocation": {
"type": "string",
"description": "Location at which the train was cancelled - Only valid when 'cancelReason' is defined, and even then optional"
},
"locations": {
"type": "object",
"additionalProperties": false,
"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
}