Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4ab05ba738 | |||
| 06e6bceb59 | |||
| 315be1af57 | |||
| c9f328bb58 | |||
| 355494fc97 | |||
| 76281bacfb | |||
| aff523a038 | |||
| e0a7c5f56e | |||
| 9a9fc59e22 |
@@ -1,198 +0,0 @@
|
|||||||
syntax = "proto3";
|
|
||||||
|
|
||||||
package rail_backend.v1;
|
|
||||||
|
|
||||||
enum SchedulePayloadType {
|
|
||||||
VSTP_MESSAGE_TYPE_UNSPECIFIED = 0;
|
|
||||||
Create = 1;
|
|
||||||
Delete = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message RunsOnDays {
|
|
||||||
bool sunday = 1;
|
|
||||||
bool monday = 2;
|
|
||||||
bool tuesday = 3;
|
|
||||||
bool wednesday = 4;
|
|
||||||
bool thursday = 5;
|
|
||||||
bool friday = 6;
|
|
||||||
bool saturday = 7;
|
|
||||||
bool bank_holidays = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum TrainStatus {
|
|
||||||
TRAIN_STATUS_UNSPECIFIED = 0;
|
|
||||||
PERMANENT_BUS = 1;
|
|
||||||
PERMANENT_FREIGHT = 2;
|
|
||||||
PERMANENT_PASSENGER_OR_PARCELS = 3;
|
|
||||||
PERMANENT_SHIP = 4;
|
|
||||||
PERMANENT_TRIP = 5;
|
|
||||||
STP_PASSENGER_ORPARCELS = 6;
|
|
||||||
STP_FREIGHT = 7;
|
|
||||||
STP_TRIP = 8;
|
|
||||||
STP_SHIP = 9;
|
|
||||||
STP_BUS = 10;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum TrainCategory {
|
|
||||||
TRAIN_CATEGORY_UNSPECIFIED = 0;
|
|
||||||
METRO_SERVICE = 1;
|
|
||||||
UNADVERTISED_PASSENGER_TRAIN = 2;
|
|
||||||
ORDINARY_PASSENGER_TRAIN = 3;
|
|
||||||
STAFF_TRAIN = 4;
|
|
||||||
MIXED_TRAIN = 5;
|
|
||||||
CHANNEL_TUNNEL_TRAIN = 6;
|
|
||||||
EUROPEAN_SLEEPER_TRAIN = 7;
|
|
||||||
INTERNATIONAL_PASSENGER_TRAIN = 8;
|
|
||||||
MOTORAIL_SERVICE = 9;
|
|
||||||
UNADVERTISED_EXPRESS_TRAIN = 10;
|
|
||||||
EXPRESS_PASSENGER_TRAIN = 11;
|
|
||||||
SLEEPER_SERVICE = 12;
|
|
||||||
REPLACEMENT_BUS_SERVICE = 13;
|
|
||||||
BUS_SERVICE = 14;
|
|
||||||
SHIP = 15;
|
|
||||||
EMPTY_COACHING_STOCK = 16;
|
|
||||||
EMPTY_METRO_SERVICE = 17;
|
|
||||||
METRO_STAFF_SERVICE = 18;
|
|
||||||
POSTAL_TRAIN = 19;
|
|
||||||
POST_OFFICE_PARCELS_TRAIN = 20;
|
|
||||||
EMPTY_NON_PASSENGER_STOCK = 21;
|
|
||||||
DEPARTMENTAL_TRAIN = 22;
|
|
||||||
CIVIL_ENGINEER_TRAIN = 23;
|
|
||||||
MECHANICAL_AND_ELECTRICAL_ENGINEER_TRAIN = 24;
|
|
||||||
STORES_TRAIN = 25;
|
|
||||||
TEST_TRAIN = 26;
|
|
||||||
SIGNAL_AND_TELECOMMUNICATIONS_ENGINEER_TRAIN = 27;
|
|
||||||
LOCOMOTIVE_AND_BRAKE_VAN = 28;
|
|
||||||
LIGHT_LOCOMOTIVE = 29;
|
|
||||||
AUTOMOTIVE_COMPONENTS_TRAIN = 30;
|
|
||||||
AUTOMOTIVE_VEHICLE_TRAIN = 31;
|
|
||||||
EDIBLE_PRODUCTS_TRAIN = 32;
|
|
||||||
INDUSTRIAL_MINERALS_TRAIN = 33;
|
|
||||||
CHEMICAL_TRAIN = 34;
|
|
||||||
BUILDING_MATERIALS_TRAIN = 35;
|
|
||||||
GENERAL_MERCHANDISE_TRAIN = 36;
|
|
||||||
EUROPEAN_RAILFREIGHT = 37;
|
|
||||||
FREIGHTLINER_CONTRACTS = 38;
|
|
||||||
FREIGHTLINER_OTHER = 39;
|
|
||||||
COAL_TRAIN = 40;
|
|
||||||
COAL_POWER_STATION_TRAIN = 41;
|
|
||||||
COAL_OR_NUCLEAR_TRAIN = 42;
|
|
||||||
METALS_TRAIN = 43;
|
|
||||||
AGGREGATES_TRAIN = 44;
|
|
||||||
DOMESTIC_AND_INDUSTRIAL_WASTE_TRAIN = 45;
|
|
||||||
TRAINLOAD_BUILDING_MATERIALS_TRAIN = 46;
|
|
||||||
PETROLEUM_PRODUCTS_TRAIN = 47;
|
|
||||||
MIXED_FREIGHT_CHANNEL_TUNNEL_TRAIN = 48;
|
|
||||||
INTERMODAL_CHANNEL_TUNNEL_TRAIN = 49;
|
|
||||||
AUTOMOTIVE_FREIGHT_CHANNEL_TUNNEL_TRAIN = 50;
|
|
||||||
CONTRACT_FREIGHT_CHANNEL_TUNNEL_TRAIN = 51;
|
|
||||||
HAULMARK_FREIGHT_CHANNEL_TUNNEL_TRAIN = 52;
|
|
||||||
JOINT_VENTURE_CHANNEL_TUNNEL_FREIGHT_TRAIN = 53;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum PowerType {
|
|
||||||
POWER_TYPE_UNSPECIFIED = 0;
|
|
||||||
DIESEL = 1;
|
|
||||||
DIESEL_MULTIPLE_UNIT = 2;
|
|
||||||
DISEL_MECHANICAL_MULTIPLE_UNIT = 3;
|
|
||||||
ELECTRIC = 4;
|
|
||||||
ELECTRO_DIESEL = 5;
|
|
||||||
EMU_PLUS_LOCOMOTIVE = 6;
|
|
||||||
ELECTRIC_MULTIPLE_UNIT = 7;
|
|
||||||
HIGH_SPEED_TRAIN = 8;
|
|
||||||
}
|
|
||||||
|
|
||||||
message OperatingCharacteristics {
|
|
||||||
bool vacuum_braked = 1; // B
|
|
||||||
bool timed_at_100mph = 2; // C
|
|
||||||
bool driver_only_operated = 3; // D
|
|
||||||
bool conveys_mk4_coaches = 4; // E
|
|
||||||
bool guard_required = 5; // G
|
|
||||||
bool timed_at_110mph = 6; // M
|
|
||||||
bool push_pull_train = 7; // P
|
|
||||||
bool runs_as_required = 8; // Q
|
|
||||||
bool air_conditioned_with_pa = 9;//R
|
|
||||||
bool steam_heated = 10;
|
|
||||||
bool runs_to_terminals_as_required = 11; // Y
|
|
||||||
bool may_convey_sb1c_gauge = 12; // Z
|
|
||||||
}
|
|
||||||
|
|
||||||
enum SleepingAccommodation {
|
|
||||||
NO_SLEEPING_ACCOMMODATION = 0;
|
|
||||||
FIRST_AND_STANDARD = 1;
|
|
||||||
FIRST_ONLY = 2;
|
|
||||||
STANDARD_ONLY = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Reservations {
|
|
||||||
bool reservations_available = 1;
|
|
||||||
bool reservations_compulsory = 2;
|
|
||||||
bool bike_reservations_essential = 3;
|
|
||||||
bool reservations_from_any_station = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
message Catering {
|
|
||||||
bool buffet_service = 1;
|
|
||||||
bool first_class_restaurant = 2;
|
|
||||||
bool hot_food_available = 3;
|
|
||||||
bool first_class_meal_included = 4;
|
|
||||||
bool restaurant_available = 5;
|
|
||||||
bool trolley_service = 6;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum STPIndicator {
|
|
||||||
STP_INDICATOR_NOT_SPECIFIED = 0;
|
|
||||||
C = 1;
|
|
||||||
N = 2;
|
|
||||||
O = 3;
|
|
||||||
P = 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
enum RecordIdentity {
|
|
||||||
RECORD_IDENTITY_NOT_SPECIFIED = 0;
|
|
||||||
ORIGIN = 1;
|
|
||||||
INTERMEDIATE = 2;
|
|
||||||
TERMINATING = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
message ScheduleLocation {
|
|
||||||
RecordIdentity record_identity = 1;
|
|
||||||
string tiploc = 2;
|
|
||||||
int32 tiploc_instance = 3;
|
|
||||||
int32 arrival_offset_seconds = 4; // Seconds after midnight
|
|
||||||
int32 departure_offset_seconds = 5;
|
|
||||||
int32 pass_offset_seconds = 6;
|
|
||||||
int32 public_arrival_offset_seconds = 7;
|
|
||||||
int32 public_departure_offset_seconds = 8;
|
|
||||||
string platform = 9;
|
|
||||||
string line = 10;
|
|
||||||
string path = 11;
|
|
||||||
int32 engineering_allowance_seconds = 12;
|
|
||||||
int32 performance_allowance_seconds = 13;
|
|
||||||
}
|
|
||||||
|
|
||||||
message SchedulePayload {
|
|
||||||
string train_uid = 1;
|
|
||||||
SchedulePayloadType transaction_type = 2;
|
|
||||||
int32 schedule_start_date = 3; // Literal int of date: eg. 20251216
|
|
||||||
int32 schedule_end_date = 4;
|
|
||||||
RunsOnDays runs_on_day_of_week = 5;
|
|
||||||
TrainStatus train_status = 6;
|
|
||||||
TrainCategory train_category = 7;
|
|
||||||
string headcode = 8; // signalling_id
|
|
||||||
string nrs_code = 9; // CIF_headcode
|
|
||||||
string train_service_code = 10;
|
|
||||||
string portion_id = 11; // CIF_business_sector
|
|
||||||
PowerType power_type = 12;
|
|
||||||
string timing_load = 13; // Pretty String in Ingress Service
|
|
||||||
OperatingCharacteristics operating_characteristics = 14;
|
|
||||||
bool first_class_available = 15;
|
|
||||||
SleepingAccommodation sleeping_accommodation = 16;
|
|
||||||
Reservations reservations = 17;
|
|
||||||
Catering catering_code = 18;
|
|
||||||
bool is_eurostar = 19;
|
|
||||||
STPIndicator stp_indicator = 20;
|
|
||||||
string uic_code = 21;
|
|
||||||
string toc_code = 22; // Maybe ENUM but subject to frequent-ish change
|
|
||||||
repeated ScheduleLocation schedule_location = 23;
|
|
||||||
}
|
|
||||||
@@ -25,8 +25,9 @@
|
|||||||
"type": "string",
|
"type": "string",
|
||||||
"enum": ["pis", "timetable", "knowledgebase", "darwin_schedule", "darwin_ts", "darwin_ref"],
|
"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"
|
"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"],
|
"payload": {}
|
||||||
"additionalProperties": true
|
},
|
||||||
|
"required": ["service_name", "service_id", "data_type", "data_kind", "sent_timestamp"],
|
||||||
|
"additionalProperties": false
|
||||||
}
|
}
|
||||||
361
schemas/data-ingress/pushport/16schedule.json
Normal file
361
schemas/data-ingress/pushport/16schedule.json
Normal file
@@ -0,0 +1,361 @@
|
|||||||
|
{
|
||||||
|
"$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": "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",
|
||||||
|
"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
|
||||||
|
}
|
||||||
@@ -3,37 +3,239 @@
|
|||||||
"$schema": "https://json-schema.org/draft-07/schema#",
|
"$schema": "https://json-schema.org/draft-07/schema#",
|
||||||
"title": "PushPortSchedule",
|
"title": "PushPortSchedule",
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": ["rid", "uid", "trainId", "ssd", "toc", "locations"],
|
|
||||||
"properties": {
|
"properties": {
|
||||||
"rid": {"type": "string", "description": "Unique service ID"},
|
"service_name": {
|
||||||
"uid": {"type": "string", "description": "Unique schedule ID - maps to NR CIF"},
|
"type": "string",
|
||||||
"trainId": {"type": "string", "description": "Train Headcode"},
|
"description": "Name of the service submitting the update"
|
||||||
"ssd": {"type": "string", "format": "date", "description": "Schedule Start Date (When the service commences)"},
|
},
|
||||||
"toc": {"type": "string", "minLength": 2, "maxLength": 2, "description": "TOC Code"},
|
"service_id": {
|
||||||
"isPassenger": {"type": "boolean", "description": "If service is for passengers", "default": true},
|
"type": "string",
|
||||||
"isCharter": {"type": "boolean", "description": "If train is charter service", "default": false},
|
"description": "ID of the service sending the message - usually a hostname"
|
||||||
"status": {"type": "string", "enum": ["train", "bus", "ship"], "default": "train"},
|
},
|
||||||
"isDelayedDelivery": {"type": "boolean", "description": "If message is sent as part of Darwin service recovery"},
|
"data_type": {
|
||||||
"cancelReason": {"type": ["string", "null"], "description": "Reason code for cancellation"},
|
"type": "string",
|
||||||
"isDeleted": {"type": "boolean", "description": "Whether schedule should be deleted", "default": false},
|
"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": {
|
"locations": {
|
||||||
"type": "array",
|
"type": "array",
|
||||||
"items": {
|
"items": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"required": ["tpl", "seq"],
|
"required": [
|
||||||
|
"tpl",
|
||||||
|
"seq"
|
||||||
|
],
|
||||||
"properties": {
|
"properties": {
|
||||||
"tpl": {"type": "string", "description": "TIPLOC of location"},
|
"tpl": {
|
||||||
"seq": {"type": "integer", "description": "The order of the stop for sorting and handling repeated TIPLOCs"},
|
"type": "string",
|
||||||
"wta": { "type": ["string", "null"] },
|
"description": "TIPLOC of location"
|
||||||
"wtd": { "type": ["string", "null"] },
|
},
|
||||||
"wtp": { "type": ["string", "null"] },
|
"seq": {
|
||||||
"pta": { "type": ["string", "null"] },
|
"type": "integer",
|
||||||
"ptd": { "type": ["string", "null"] },
|
"description": "The order of the stop for sorting and handling repeated TIPLOCs"
|
||||||
"plat": { "type": ["string", "null"] },
|
},
|
||||||
"isCancelled": { "type": "boolean", "default": false },
|
"wta": {
|
||||||
"activities": { "type": "string" }
|
"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
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user