9 Commits

Author SHA1 Message Date
25c1793df3 Add 'cancelled throughout' field, to highlight in the search results whether a service is completely cancelled
All checks were successful
Generate and Release Protos / release (push) Successful in 38s
2026-05-03 09:34:31 +01:00
48f1a31378 Remove reference to other schema, it seems that I can either configure it for TS or Go generation, but not both.
All checks were successful
Generate and Release Protos / release (push) Successful in 38s
2026-05-03 00:38:48 +01:00
376370c729 Fix incorrect path
Some checks failed
Generate and Release Protos / release (push) Failing after 32s
2026-05-03 00:32:10 +01:00
180886fd68 Adjust script & paths so that referencing other schemas work
Some checks failed
Generate and Release Protos / release (push) Failing after 28s
2026-05-03 00:30:46 +01:00
513196c43d Try and adjust path
Some checks failed
Generate and Release Protos / release (push) Failing after 27s
2026-05-03 00:25:17 +01:00
5d4271c193 Add PIS item to the 'TrainDetails' response
Some checks failed
Generate and Release Protos / release (push) Failing after 34s
2026-05-03 00:21:12 +01:00
c02ff3ebab Adjust how time types are specified
All checks were successful
Generate and Release Protos / release (push) Successful in 40s
2026-05-02 09:14:16 +01:00
519acebcba Add train details type
All checks were successful
Generate and Release Protos / release (push) Successful in 44s
2026-05-02 01:11:10 +01:00
645faf1003 Add TrainByHeadcode response type
All checks were successful
Generate and Release Protos / release (push) Successful in 38s
2026-04-27 00:12:16 +01:00
4 changed files with 274 additions and 3 deletions

View File

@@ -11,7 +11,7 @@
"description": "Unix timestamp showing when the data was generated, or the time the error was encountered" "description": "Unix timestamp showing when the data was generated, or the time the error was encountered"
}, },
"d": { "d": {
"description": "Payload data. Type depends on request endpoint" "description": "Payload data. Type depends on request endpoint, typically an array of the response type"
}, },
"e": { "e": {
"type": "object", "type": "object",

View File

@@ -0,0 +1,47 @@
{
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "TrainByHeadcodeResponse",
"type": "object",
"required": ["r", "ot", "od", "dt", "o"],
"additionalProperties": false,
"properties": {
"r": {
"type": "string",
"name": "rid",
"description": "The RID of the service described"
},
"ot": {
"type": "string",
"name": "Origin TIPLOC",
"description": "The TIPLOC at which the service originates",
"minLength": 4,
"maxLength": 7
},
"od": {
"type": "string",
"name": "Origin Departure",
"format": "date-time",
"description": "The time that the service departs the originating location"
},
"dt": {
"type": "string",
"name": "Destination TIPLOC",
"description": "The TIPLOC at which the service terminates",
"minimum": 4,
"maximum": 7
},
"o": {
"type": "string",
"name": "Operator (TOC)",
"description": "The TOC operating the service",
"minLength": 2,
"maxLength": 2
},
"ct": {
"type": "boolean",
"title": "Cancelled Throughout",
"name": "Cancelled Throughout",
"description": "Whether the train is cancelled throughout"
}
}
}

View File

@@ -0,0 +1,224 @@
{
"$schema": "https://json-schema.org/draft-07/schema#",
"title": "TrainDetailsResponse",
"$defs": {
"ServiceLocation": {
"type": "object",
"description": "A specific location along the services journey",
"additionalProperties": false,
"properties": {
"t": {
"type": "string",
"title": "TIPLOC",
"description": "The TIPLOC of the location"
},
"r": {
"type": "string",
"enum": ["ORIG", "CALL", "PASS", "DEST"],
"title": "Location Role",
"description": "The role of this location in the journey"
},
"s": {
"type": "integer",
"title": "Sequence Number",
"description": "The sequence at which this location sits in the schedule"
},
"act": {
"title": "activities",
"description": "Activities carried out at this location",
"type": "string"
},
"p": {
"title": "Platform",
"type": "string",
"description": "The platform that this event takes place"
},
"pc": {
"title": "Platform Changed",
"type": "boolean"
},
"pcn": {
"title": "Platform Confirmed",
"type": "boolean"
},
"ps": {
"title": "Platform Surpressed",
"description": "Whether platform data is surpressed",
"type": "boolean"
},
"can": {
"title": "Cancelled",
"description": "Whether this location is cancelled in the journey",
"type": "boolean"
},
"al": {
"type": "integer",
"title": "Average Loading",
"description": "The average loading at this location"
},
"fid": {
"type": "string",
"title": "Formation ID",
"description": "The formation ID at this location"
},
"pta": {
"type": "string",
"format": "date-time",
"title": "Public time of arrival"
},
"wta": {
"type": "string",
"format": "date-time",
"title": "Working time of arrival"
},
"wtp": {
"type": "string",
"format": "date-time",
"title": "Working time of pass"
},
"ptd": {
"type": "string",
"format": "date-time",
"title": "Public time of departure"
},
"wtd": {
"type": "string",
"format": "date-time",
"title": "Working time of departure"
},
"eta": {
"type": "string",
"format": "date-time",
"title": "Estimated time of arrival"
},
"etd": {
"type": "string",
"format": "date-time",
"title": "Estimated time of departure"
},
"etp": {
"type": "string",
"format": "date-time",
"title": "Estimated time of pass"
},
"ata": {
"type": "string",
"format": "date-time",
"title": "Actual time of arrival"
},
"atd": {
"type": "string",
"format": "date-time",
"title": "Actual time of departure"
},
"atp": {
"type": "string",
"format": "date-time",
"title": "Actual time of pass"
}
},
"required": ["t", "r", "s", "act"]
}
},
"type": "object",
"required": ["header", "locations"],
"additionalProperties": false,
"properties": {
"header": {
"type": "object",
"additionalProperties": false,
"properties": {
"r": {
"type": "string",
"title": "RID",
"description": "The RID of the service",
"maxLength": 16
},
"u": {
"title": "UID",
"description": "The UID of the service",
"type": "string"
},
"s": {
"title": "SSD",
"description": "The SSD of the service",
"type": "string",
"format": "date"
},
"h": {
"title": "train_id",
"description": "Headcode",
"maxLength": 4,
"minLength": 4,
"type": "string"
},
"t": {
"title": "TOC",
"description": "The TOC operating the service",
"type": "string",
"maxLength": 3,
"minLength": 2
},
"st": {
"title": "Status",
"description": "Train status",
"type": "string"
},
"cr": {
"title": "Cancel Reason",
"type": "integer"
},
"cl": {
"title": "Cancel Location",
"type": "string",
"maxLength": 7
},
"cn": {
"title": "Cancel Near",
"description": "Whether the train was cancelled NEAR the 'cancel_loation', else at the 'cancel_location'",
"type": "boolean"
},
"dr": {
"title": "Delay Reason",
"type": "integer"
},
"dl": {
"title": "Delay Location",
"type": "string",
"maxLength": 7
},
"dn": {
"title": "Delay Near",
"description": "Whether the train was delayed NEAR the 'delay_loation', else at the 'delay_location'",
"type": "boolean"
},
"ip": {
"title": "is_passenger",
"description": "Whether this is a passenger service",
"type": "boolean"
},
"ic": {
"title": "is_charter",
"description": "Whether this is a charter service",
"type": "boolean"
},
"rs": {
"title": "RSID",
"description": "Retail Service ID",
"type": "string"
}
},
"required": ["r", "s", "h", "t", "ip", "ic"]
},
"locations": {
"type": "array",
"additionalItems": false,
"items": {
"$ref": "#/$defs/ServiceLocation"
}
},
"pis": {
"description": "PIS data for the service (if available)"
}
}
}

View File

@@ -15,10 +15,10 @@ for file in $FILES; do
clean_name=$(echo "${file#schemas/}" | sed 's/\//_/g' | sed 's/\.json//g') clean_name=$(echo "${file#schemas/}" | sed 's/\//_/g' | sed 's/\.json//g')
# OGenerate TS # OGenerate TS
npx --yes json-schema-to-typescript "$file" > "gen/ts/${clean_name}.ts" npx --yes json-schema-to-typescript "$file" > "./gen/ts/${clean_name}.ts"
# Generate Go # Generate Go
go-jsonschema -p contracts "$file" > "gen/go/models/${clean_name}.go" go-jsonschema -p contracts "$file" > "./gen/go/models/${clean_name}.go"
done done
echo "✅ Generated single TS package in gen/ts" echo "✅ Generated single TS package in gen/ts"