This specification contains interfaces to be used between PTOs (operators) and Ruter. The API describes a set of MQTT topics which are used to distribute data onboard public transport vehicles/vessels as well as between the vehicle/vessel and Ruter’s Back Office or vv.
The API follows the upgrade cycles of ADT. Major releases are done more or less once a year and usually include breaking changes.
Minor/build releases are performed as continual deliveries and are non-breaking. New versions of this document will be published when new topics and/or fields are added.
Clients consuming information posted on the topics must be tolerant to:
Generally, QoS level 1 is applied for most topics and the retain
flag is true for most topics. See the respective topic for precise info.
Subscribers should start with Clean Session set to True to assure that they get the latest information at reconnection (the retained info) and avoid first having to process a long queue of outdated old information that in reality hinders new relevant information to reach the subscriber.
Global topic names are generally written on the format of {recipient}/{sender}/{vehicleid}/{topic}
to make it easy to identify the source and destination of the messages.
Local topic names have omitted the {recipient}/{sender}/{vehicleid}
part in order to have onboard equipment pre-configured with vehicle independent settings.
All topic names must thus be rewritten local/global in the MQTT bridge according to a provided configuration file.
All data must be JSON and UTF-8 encoded.
For more information, please go to: Ruter’s ADT agreement.
Please open an issue here: ADT-DOC Issues
Ruters central MQTT broker
The mqtt broker is available through TCP (:8883) and Websockets (:9883)
Please reach out to rdp-support@ruter.no to request access.
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/di/assignment_attempt/block |
Schema | assignment-attempt.json |
Describes an attempt to sign on or off a block from MADT, another GUI or from the PTO backoffice. The result of this request will be confirmed by the PTA backoffice and the results presented either on the topic ruter/{PTO}/{vehicleID}/oi/current_ block/state or the topic ruter/{PTO}/{vehicleID}/di/assignment_attempt_rejection/block.
AttemptType | AssignmentCode | Required | Description |
---|---|---|---|
SIGNON | PLANNED |
|
|
SIGNON | EXTRA |
|
|
SIGNON | REPLACEMENT |
|
|
SIGNOFF | FINISHED |
|
|
SIGNOFF | BREAKDOWN |
|
|
SIGNOFF | CANCELLED |
|
|
SIGNOFF | SHORTENING |
|
|
Accepts the following message:
Describes an attempt to sign on or off a block from MADT, another GUI or from the PTO backoffice. The result of this request will be confirmed by the PTA backoffice and the results presented either on the topic ruter/{PTO}/{vehicleID}/oi/current_ block/state or the topic ruter/{PTO}/{vehicleID}/di/assignment_attempt_rejection/block.
{
"fromDateTime": "2017-10-31T12:45:00Z",
"vehicleRef": "1HGCM82633A004352",
"blockRef": "10023",
"apiVersion": "v2",
"assignmentType": "SIGNON",
"assignmentCode": "PLANNED"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/di/override_attempt/destination_display |
Schema | destination-display-override.json |
Accepts the following message:
Describes a request from MADT or other GUI to manually override the information shown on the destination display. It is up to the presenting system to decide how and for how long the override will apply. A rule could be until next journey begins or a new override_attempt/destination_display is received. The topic could be blanked (provided with a zero-byte payload) to indicate that any overriding information is no longer valid and that the destination display can return to normal
{
"atDateTime": "2021-12-10T06:25:43Z",
"number": 1101,
"lineDesignation": "11",
"name": "Disen",
"alternativeText": "via Gressholmen"
}
Field | Value |
---|---|
Central Topic | - |
Schema | unique-identifier.json |
Accepts the following message:
A primary and permanent unique identifier used to represent the physical vehicle. For road vehicles: Indicates the globally unique 17 characters long alphanumeric Vehicle Identification Number (VIN) permanently attached to the vehicle. For other modes: Indicates a globally unique number of some sort permanently attached to the vehicle or if this is not possible; to the on-board system. Could be a MAC-address or other GUID.
{
"value": "1HGCM82633A004352",
"typeOfValue": "VIN"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/activecab |
Schema | active-cab.json |
Accepts the following message:
Used to keep track of what direction the train is driving
{
"eventTimestamp": "2020-10-31T08:38:02.749Z",
"activeCab": "c1"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/doorlock |
Schema | door-lock.json |
This message is used to track if the vehicle doors are locked or unlocked.
Frequency: on change
Accepts the following message:
Door lock event
{
"eventTimestamp": "2020-10-31T08:38:02.749Z",
"locked": false
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/doors_individually |
Schema | doors-individually.json |
This topic is used to track the individual status of doors. One use case is to improve the data quality of APC counts. See also topic sensors/door for status of anyDoorOpen/allDoorsClosed.
Accepts the following message:
This object is used to represent a door individually.
{
"doorRef": "01",
"isOpen": true,
"atDateTime": "2021-10-31T12:45:50Z"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/dpi_ack |
Schema | dpi-acknowledge.json |
Status | ⚠️ Deprecated! |
The DPI Ack topic is used to inform the Ruter BO about the content presented on the PTO’s own systems for Dynamic Passenger Information in the vehicle. Usually, this is destination displays. The rest of DPI is presented by Ruter’s own DPI system, and does not need this kind of acknowledgement message.
Please be advised this topic is marked for deletion in later major versions of ADT.
Accepts the following message:
The DPI Ack topic.
{
"eventTimestamp": "2021-10-31T12:45:50Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"type": "DESTINATION",
"payload": {
"text": "400 Oslo Lufthavn",
"additionalText": "o/ Eltonåsen"
}
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/adt/v2/pe/dpi/ack |
Schema | dpi-acknowledge.json |
Producer | PTO, Ruter DPI |
Consumer | Ruter DPI |
The DPI Ack topic is used to inform the Ruter BO about the correct transfer and interpretation of messages to the vehicle.
Ruter shall receive an acknowledgment message for the following topics:
Topic | Responsible for producing ack |
---|---|
Journey messages | DPI application |
NextStop messages | DPI application |
Notice! Due to late introduction of this topic, no messages are to be expected by PTOs on this version of ADT api.
The ack message should be produced as soon as the message is received and validated. This is a confirmation that the system on board the vehicle have received the data and is capable of acting on it.
No confirmation message should be returned if the system is unable to playback the content. (e.g. invalid message format)
Accepts the following message:
The DPI Ack topic.
{
"eventTimestamp": "2017-10-31T12:45:50.749Z",
"traceId": "2ccf77aa-463f-4b98-ad19-61ec5d213e36",
"clientId": "8fac6c64la4cap4b21R90d",
"physicalId": "screen1",
"messageReceived": {
"topic": "pe/dpi/journey",
"eventTimestamp": "2017-10-31T12:45:50.749Z",
"traceId": "b88aaf6a-b15b-415a-8c44-ac7ad42de59e"
}
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/dpi_diagnostics |
Schema | dpi-diagnostics.json |
Report to PTA BO about a screen.
The DPI application itself produces diagnostic messages. The payload is defined as an object with no pre-defined structure to provide flexibility.
Accepts the following message:
{
"eventTimestamp": "2018-10-31T12:45:50Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"clientId": "ad71dba8-c881-11e8-a8d5-f2801f1b9fd1",
"type": "STATUS",
"payload": {
"version": {
"application": "2018-10-03T12:45:50Z",
"media": "2018-10-05T12:45:50Z"
},
"display": {
"type": "1",
"res": {
"height": 360,
"width": 1080
}
},
"stats": {
"logEntries": {
"error": 0,
"warning": 14,
"info": 123
},
"lastLoaded": "2018-10-31T12:45:45Z",
"pingFreq": 3600,
"usedStorage": "124kb"
}
}
}
{
"eventTimestamp": "2019-10-09T10:16:07.000Z",
"clientId": "638f47b7-d0d4-4043-9125-2dd8db6b8a84",
"type": "HEARTBEAT",
"payload": {
"client": {
"version": "2019-08-16T08-11-58Z",
"display": "1",
"windowHeight": 1080,
"windowWidth": 1920
},
"routeId": "RUT:Route:0-54012"
}
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/sales/diagnostics |
Schema | salediagnostics.json |
Diagnostics message generated by RuterSalg. More details about fields can be found at https://ruter.atlassian.net/wiki/spaces/TAAS/pages/948928517/OTA+MQTT-Meldinger+benyttet+av+Ruter+Salg.
This topic is intended for applications interested in health status for the RuterSalg application on each bus. The health status is intended both as a real time surveillance of health status for each individual bus as well as for aggregating data per operator to see larger, more general issues. The topic can also, when enriched by other data, determine whether or not RuterSalg was used and working on a specific departure.
Accepts the following message:
{
"eventTimestamp": "2020-04-28T13:49:50.814Z",
"traceId": "eb313932-c011-4466-9c8b-1be0ebfdcfb6",
"nfcReaderConnected": false,
"printerConnected": true,
"nodAvailable": true,
"sapiAvailable": false,
"loggedIn": true,
"journeyRef": "42911-2020-05-25T16:42:00+02:00",
"stopPlaceId": "NSR:StopPlace:59734",
"progressRef": "eb313932-c011-4466-9c8b-1be0ebfdcfb6"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/sales/saleresult |
Schema | saleresult.json |
Sale result message generated by RuterSalg. More details about fields can be found at https://ruterwiki.ruter.no/display/PNS/MQTT+Topics+consumed+and+produced+by+RuterSalg.
This topic is intended as a live view of sales, and must not be used as the complete truth. This is done elsewhere. This topic is intended for health surveillance, for anyone interesting in whether or not tickets are being sold, and also how many and what kind of tickets.
Some operators have suggested that they might be interested in using this topic to display sales results on screens separate from the RuterSalg application, intended as information to the travelers purchasing tickets. This topic is well suited for this use case.
Accepts the following message:
Result of sale made with the RuterSalg application
{
"paymentMethod": 45,
"mediaType": 4,
"vendorId": "x130",
"eventTimestamp": "2020-04-07T06:45:29.804Z",
"tickets": [
{
"externalId": "28fbf258-91e3-4a7c-8710-6bdc665020e8",
"numberOfZonesToPay": 1,
"passengers": [
{
"numberOfPassengers": 1,
"productId": 21526,
"profileId": 1
}
],
"price": 5700,
"productTemplateId": 18,
"selectedZones": null,
"startDate": "2020-04-07T06:45:29.804Z",
"zoneFrom": "4N",
"zoneTo": "",
"zoneVia": null
}
]
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/sales/validationresult |
Schema | validationresult.json |
Validation result message generated by RuterSalg. This topic is intended as a live view of validation. This topic is intended for health surveillance, for anyone interesting in whether or not validations are being performed, as well as validation results.
Accepts the following message:
Result of validation made with the RuterSalg application
{
"eventTimestamp": "2020-04-22T10:28:37.337Z",
"inspectionResult": {
"code": 205,
"message": "Validert 22/04/2020 13:19 Enkeltbillett 1 Voksen ",
"validity": "VALID"
},
"ledCommand": {
"color": "green",
"duration": 5000,
"pause": 50,
"repeat": 1
},
"buzzerCommand": {
"frequency": 1320,
"duration": 200,
"pause": 50,
"repeat": 1
}
}
Field | Value |
---|---|
Central Topic | ruter/{PTO}/{vehicleID}/pe/cardreader_diagnostics/vix/{deviceRef} |
Schema | cardreader_diagnostics.json |
Diagnostics message sent from any Vix-validator running Ruter-firmware in the vehicle. Can be used by both PTA and PTO to monitor the operational status of these units.
An unique ID of the unit.
Accepts the following message:
Diagnostics message sent from any Vix-validator running Ruter-firmware in the vehicle. Can be used by both PTA and PTO to monitor the operational status of these units.
{
"eventTimestamp": "2022-05-24T07:00:25Z",
"deviceRef": "RUT1234",
"inService": true
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/sensors/gnss/location |
Schema | location.json |
Describes the GNSS navigation receiver feedback in metric format. The periodicity of updates to be expected should be described as number of seconds in configValue01 for this topic under topic:
ruter/{PTO}/{vehicleID}/mi/provider_clients//provided_topics
The GNSS type should be described in configValue11. Information about the used GNSS System. MixedGNSSTypes is used for receivers using multiple satellite constellations. Possible values:
The GNSS coordinate system should be described in configValue12, at least if other than “WGS84”. Possible values:
“MixedGNSSTypes” is used for receivers using multiple satellite constellations.
Frequency is recommended at 1 message per second.
Accepts the following message:
Location sensor data
{
"latitudeDegree": 59.251356,
"longitudeDegree": 11.581231,
"altitude": 124,
"fixDateTime": "2017-11-30T23:45:52Z",
"messageNumber": 12345,
"speedOverGround": 15.3,
"trackDegreeTrue": 324,
"signalQuality": 1,
"numberOfSatellites": 12,
"hdop": 2.4
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/sensors/odometer |
Schema | odometer.json |
Describes an odometer value in meters based on total vehicle distance or similar. Absolute value of less importance but should be increasing at least within the scope of a journey. Optionally the current speed according to the odometer could be included.
Frequency is recommended at 1 message per second.
Accepts the following message:
Odometer data
{
"distance": 23434556,
"atDateTime": "2017-11-30T23:45:52.006Z",
"messageNumber": 12345
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/sensors/apc_sensors/{sensorID} |
Schema | apc-sensors.json |
The sensor / telemetry Id.
Accepts the following message:
Raw-data from door-sensor for later evaluation.
{
"doorRef": "01",
"alightingCount": 23,
"boardingCount": 12,
"atDateTime": "2017-10-31T12:45:50Z",
"messageNumber": 123456,
"categoryActivities": [
{
"categoryRef": "ADULT",
"alightingCount": 23,
"boardingCount": 9
},
{
"categoryRef": "CHILD",
"alightingCount": 0,
"boardingCount": 3
}
]
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/sensors/door |
Schema | door.json |
Frequency: on change
Accepts the following message:
Describes if any door is open (or to be more precise – if the door lock is released). Also see topic pe/doors_individually for status on individual doors.
{
"doorOpen": true,
"atDateTime": "2021-11-30T23:45:52.006Z"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/sensors/stop_button |
Schema | stop-button.json |
This message should be produced whenever the stop signal is turned on or off.
Frequency: on change
Accepts the following message:
Describes if passengers have requested that the bus should stop (stop button pressed).
{
"stopPressed": true,
"atDateTime": "2021-11-30T23:45:52.006Z",
"messageNumber": 1
}
Field | Value |
---|---|
Central Topic | - |
Schema | clock.json |
Accepts the following message:
{
"localTimeZoneDate": "2017-12-01",
"localTimeZoneTime": "00:45:52",
"atDateTime": "2017-11-30T23:45:52.006Z"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/sensors/telemetry/{sensorID} |
Schema | telemetry.json |
Several different kinds of sensor/telemetry data are available varying by vehicle type For traditional busses, FMS is the standard that defines what data about the vehicle is published on the FMS bus and further on by ITxPT FMStoIP service.In addition, vessels, trams and different bus types have proprietary data not captured by FMS.
According to the data centric approach from ITxPT, several of these data types (door, location, stop button etc) have been assigned separate topics as being described in this document. However, data types required by Ruter that haven’t yet been described in the MQTT structure from ITxPT, will still be handled by the general Telemetry topic that was introduced by Ruter in 2019.
All such data are defined by unique, 32 bit, identifiers. Data caught from the FMS bus retain their PGN numbers as the last 16 bits of the ID. Data not coming from the FMS bus follow a separate addressing scheme, with addresses allocated by Ruter on request. Please note that PTOs are free to decide if they want to use FMS or a non-FMS data source to provide the data.
To utilize FMS data in Ruter’s architecture, Operators can either set up an FMS2IP service or use any other means to subscribe to the FMS bus data. Note that there must be one separate MQTT message per FMS PGN.
The identifiers are constructed this way:
Bytes | Description |
---|---|
1 | Source identifier (0x00 FMS, 0x01 Non-FMS) |
2-4 | Source-specific id, e.g. FMS PGNs |
Optional unless stated explicitly in the main ADT document.
ID | Subid | Name | Value | Recommended refresh interval | Remarks |
---|---|---|---|---|---|
0001FF25 | 10003 | Wall Charger connected | onChange | ||
0001FF25 | 10004 | Fast Charger connected | onChange | ||
0001FF25 | 10005 | Charging Active | onChange | ||
01000002 | Temperature inside average | float | 1/min | ||
01000005 | SOC | float | 1/min | ||
01000006 | Transmission mode | combustion/electric | onChange | Intended for hybrid vehicles | |
01000007 | Windscreen wiper active | True/false | onChange | Taken to represent a measurement of the ground truth binary rainfall state, given that it is a better predictor of the binary rainfall state than radar- or gauge-based measurements | |
01000008 | Accelerometry | 1/min | * Bandwidth >= 100 hz * Resolution <= 0.01 g |
||
xmin | Min x value last minute | g | |||
xmax | Max x value last minute | g | |||
xavg | Average x value last minute | g | |||
ymin | Min y value last minute | g | |||
ymax | Max y value last minute | g | |||
yavg | Average y value last minute | g | |||
zmin | Min z value last minute | g | |||
zmax | Max z value last minute | g | |||
zavg | Average z value last minute | g | |||
01000009 | Outdoor temperature | float | 1/min | * Unit Celcius * Resolution <= 1 C * Measured at front of vehicle as near as possible to the ground |
|
0100000A | Accumulated energy consumption | float | 1/min | * Energy consumed * Including HVAC * Unit: kWh |
The sensor / telemetry Id.
Accepts the following message:
{
"eventTimestamp": "2019-10-31T12:45:50Z",
"id": "01000008",
"payloads": [
{
"name": "xmin",
"value": 0.1
},
{
"name": "xmax",
"value": 0.2
},
{
"name": "xavg",
"value": 0.15
},
{
"name": "ymin",
"value": -0.1
},
{
"name": "ymax",
"value": 0.2
},
{
"name": "yavg",
"value": 0.1
},
{
"name": "zmin",
"value": 0.01
},
{
"name": "zmax",
"value": 0.03
},
{
"name": "zavg",
"value": 0.02
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/di/assignment_attempt_rejection/block |
Schema | assignment-attempt-rejection.json |
Describes a negative result from the back-office of an attempt to sign on or off a block from MADT or another GUI
Accepts the following message:
Describes a negative result from the back-office of an attempt to sign on or off a block from MADT or another GUI
{
"fromDateTime": "2017-10-31T12:45:50Z",
"blockRef": "10023",
"result": "NOT_GRANTED",
"errorText": "Already signed on in another vehicle"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/di/available_destination_displays |
Schema | available-destination-displays.json |
Provides a list of available destination displays for a vehicle. The list should be used for external displays, in case the vehicle has lost connection to the backoffice.
Accepts the following message:
{
"atDateTime": "2020-10-31T12:45:50Z",
"availableDestinationDisplays": [
{
"number": 12,
"name": "Airport"
},
{
"number": 112,
"name": "Bus full"
},
{
"number": 125,
"name": "Ikke i trafikk "
},
{
"number": 126,
"lineDesignation": "N160",
"name": "Oslo Bussterminal",
"alternativeText": "Ingen påstigning"
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/di/operational_message_to_driver |
Schema | operational-message-to-driver.json |
Provides an operational message directed to the driver onboard this vehicle. Direction: From back-office to driver.
Accepts the following message:
Operational message to driver
{
"heading": "Emergency repair",
"body": "Service personnel will meet at terminus to adjust door mechanism.",
"senderRef": "Garage maintenance",
"atDateTime": "2020-10-31T12:45:50Z"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/ei/audio_message |
Schema | audio.json |
Topic used exclusively to transmit audio messages to be played by the speaker system. The audio messages may contain an array of sound bites, that are to be played in the sequence they have been received.
Accepts the following message:
This topic provides an audio message intended for passengers onboard the vehicle that should be played on speaker(s) defined in the speaker property of the payload.
{
"eventDateTime": "2018-11-13T11:40:02.749Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"expiryDateTime": "2018-11-13T08:40:32.249Z",
"preferredStartDateTime": "2018-11-13T08:39:32.749Z",
"ref": "RUT:StopPlace:03012453",
"audio": [
{
"encoding": "MP3",
"content": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3...",
"speaker": "INTERNAL",
"volume": 70
},
{
"encoding": "MP3",
"content": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3...",
"speaker": "INTERNAL",
"volume": 70
}
]
}
{
"eventDateTime": "2018-11-13T11:40:02.749Z",
"expiryDateTime": "2018-11-13T08:40:32.249Z",
"preferredStartDateTime": "2018-11-13T08:39:32.749Z",
"ref": "RUT:StopPlace:03012453",
"audio": [
{
"encoding": "OPUS",
"contentUrl": "\\soundserver\\path\\to\\file",
"speaker": "INTERNAL",
"volume": 70
},
{
"encoding": "MP3",
"content": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3...",
"speaker": "INTERNAL",
"volume": 70
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/ei/deviation_information |
Schema | deviation.json |
This topic provides an adapted selection of deviation and incident information that is relevant for passengers onboard this vehicle in scope of what the vehicle is currently doing and where it is on the current vehicle journey. The information is provided in the form of a list of situation messages. This topic should be blanked (provided with empty content) if there are no relevant situation messages. As an added precaution an expiry timestamp is included to assure that outdated information is not presented.
Accepts the following message:
Deviation information
{
"expiryDateTime": "2017-10-31T12:45:50Z",
"heading": "Deviation information",
"displayDurationSeconds": 7,
"situationMessages": [
{
"heading": "Metro breakdown",
"body": "Metro-line 17 is temporarily out of operation due to a power outage."
},
{
"heading": "Metro breakdown",
"body": "Metro-line 18 is temporarily out of operation due to a power outage."
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/ei/due_information |
Schema | due-information.json |
This topic provides an adapted text indicating that the vehicle is about to arrive at a stop according to what the coordinating application has concluded.
This could optionally be based on information provided in real-time from a back-office AVMS. However, if contact is lost with the back-office for more than a configured duration the information should be based on local information.
Please be advised this topic is marked for deletion in later major versions of ADT.
Accepts the following message:
Due information
{
"expiryDateTime": "2017-10-31T12:45:50Z",
"heading": "Arriving at",
"body": "Broparken"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/ei/transfer_information |
Schema | transfer-information.json |
This topic provides an adapted selection of real time information describing connecting lines at the current or the coming stop that passengers onboard this vehicle could transfer to. The information is provided in the form of a list of possible transfer options at the next stop.
This topic should be blanked (provided with empty content) when there is no relevant information to display.
As an added precaution an expiry timestamp is included to assure that outdated information is not presented.
Please be advised this topic is marked for deletion in later major versions of ADT.
Accepts the following message:
Transfer information
{
"expiryDateTime": "2017-10-31T12:45:50Z",
"heading": "Departures from Slussen",
"displayDurationSeconds": 10,
"transferOptions": [
{
"transportMode": "BUS",
"lineDesignation": "76",
"destinationDisplayName": "Ropsten",
"stopPointDesignation": "B",
"presentedDepartureTimes": [
"3 min",
"11 min"
]
},
{
"transportMode": "BUS",
"lineDesignation": "55",
"destinationDisplayName": "Sofia",
"stopPointDesignation": "C",
"presentedDepartureTimes": [
"Now",
"19 min"
]
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/oi/current_destination_display/text |
Schema | current-destination-display.json |
Message to be shown on the external destination display. Usually line number (lineDesignation) and name, with support for alternative message.
Accepts the following message:
{
"name": "Tonsenhagen",
"lineDesignation": "60"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/oi/current_block/state |
Schema | current-block.json |
Normally this topic indicates which block this vehicle is currently signed on to according to the backoffice or that it only assigned but not yet signed on or that it is not even assigned. This is usually a result of what was proposed by the driver on-board (see ruter/{PTO}/{vehicleID}/di/assignment_attempt/block) and then confirmed as valid by the back-office. It could also be based on an overriding decision enforced by the operation control centre.
Note that if a ruter/{PTO}/{vehicleID}/di/assignment_attempt/block is not answered by the back-office within a configured duration it is assumed that contact is lost with the control centre and then the proposed block will be accepted and exposed on this topic.
Accepts the following message:
Current block
{
"fromDateTime": "2017-10-31T12:45:50+01:00",
"state": "SIGNED_ON",
"blockRef": "10023",
"operatingDay": "2017-10-31"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/oi/current_vehicle_journey/expected_call |
Schema | expected-call.json |
The topic should provide a consistent set of current information describing the vehicle’s current, previous and next stop(s) including estimated times, observed times and additional information helping the driver to adhere to the operation control centre’s current plan for this vehicle. The topic is focused on the stop that the vehicle is standing at or will arrive to next in the case that the vehicle is between stops. The topic should be blanked (provided as a retained message with a zero-byte payload) if the vehicle has left the last stop and if it is not known what the next vehicle journey will be.
Please be advised this topic is marked for deletion in later major versions of ADT.
Accepts the following message:
The expected call object.
{
"updatedAtDateTime": "2017-10-31T12:45:50Z",
"vehicleJourneyRef": "9015001098702345",
"callSequenceNumber": 3,
"pointRef": "9025001000012345",
"tariffZone": {
"ref": "225",
"number": "2V"
},
"atStop": true,
"observedTimeOfArrival": "2017-10-31T12:45:50Z",
"estimatedTimeOfDeparture": "2017-10-31T12:46:30Z",
"serviceDeviation": 30,
"holdReason": "CONNECTION_PROTECTION",
"holdUntil": "2017-10-31T12:46:30Z",
"restriction": "NO_ALIGHTING",
"previousCall": {
"callSequenceNumber": 2,
"pointRef": "9025001000012333",
"observedTimeOfArrival": "2017-10-31T12:43:50Z",
"observedTimeOfDeparture": "2017-10-31T12:44:32Z"
},
"laterCalls": [
{
"callSequenceNumber": 4,
"pointRef": "9025001000012377",
"estimatedTimeOfArrival": "2017-10-31T12:48:23Z",
"estimatedTimeOfDeparture": "2017-10-31T12:49:10Z",
"restriction": "NO_BOARDING"
},
{
"callSequenceNumber": 5,
"pointRef": "9025001000012332",
"estimatedTimeOfArrival": "2017-10-31T12:53:50Z",
"estimatedTimeOfDeparture": "2017-10-31T12:54:20Z"
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/oi/current_vehicle_journey/details |
Schema | vehicle-journey-details.json |
This topic provides the details of the current (monitored) vehicle journey. If there is no ongoing vehicle journey, this topic will provide the details of the coming vehicle journey. The information should reflect the latest production plan including any applied control actions as known in the back-office. Note however that this does not include neither estimated nor observed times at the different stops. This information is instead provided on the topic:
ruter/{PTO}/{vehicleID}/oi/current_vehicle_journey/expected_call
The topic should be blanked (provided as a retained message with a zero-byte payload) if the vehicle has left the last stop and the next vehicle journey is not known
Accepts the following message:
Vehicle journey details
{
"operatingDayDate": "2017-04-27T00:00:00+02:00",
"vehicleJourneyRef": "9015001095045020",
"journeyNumber": "45020",
"journeyPatternRef": "4010000482522803",
"timedJourneyPatternRef": "4010000482522978",
"transportModeCode": "BUS",
"line": {
"ref": "9011001095000000",
"designation": "22",
"number": "950",
"name": "Ersätter Tvärbanan"
},
"directionOfLine": {
"code": "1",
"name": "Solna"
},
"transportAuthority": {
"ref": "9010001000000000",
"code": "SL",
"name": "Storstockholms Lokaltrafik",
"number": "1"
},
"contractor": {
"ref": "9013001001500000",
"code": "ARR",
"name": "Arriva",
"number": "15"
},
"plannedStartDateTime": "2017-04-27T05:51:00+02:00",
"plannedEndDateTime": "2017-04-27T06:39:00+02:00",
"origin": {
"name": "Sickla udde",
"shortName": "Sickla udde"
},
"calls": [
{
"sequenceNumber": 1,
"journeyPatternPoint": {
"ref": "9025001000010664",
"isTimingPoint": true,
"location": {
"latitude": 59.3071932996622,
"longitude": 18.1078200699196
},
"distanceFromPrevious": 0,
"detection": {
"enteringDistance": 20,
"exitingDistance": 10,
"passingDirection": null
}
},
"stopArea": {
"ref": "9021001010665000",
"name": "Sickla udde",
"shortName": "Sickla udde"
},
"stopPoint": {
"ref": "9022001010665005",
"name": "Sickla udde",
"shortName": "Sickla udde",
"designation": "",
"localNumber": 5,
"length": 20
},
"arrival": {
"latestDateTime": "2017-04-27T05:51:00+02:00",
"arrivalType": "STOP_NO_ALIGHTING"
},
"departure": {
"earliestDateTime": "2017-04-27T05:51:00+02:00",
"departureType": "STOP_IF_BOARDING"
},
"destinationDisplay": {
"productName": "",
"symbolName": "",
"lineDesignation": "22B",
"primaryDestination": "Thorildsplan",
"secondaryDestination": "Eriksbo värdshuset",
"displayKeys": [
{
"parameterData": "Destination=653",
"typeCode": "O_DESTIN",
"deviceName": "SIGN"
}
]
}
},
{
"sequenceNumber": 2,
"journeyPatternPoint": {
"ref": "9025001000010667",
"isTimingPoint": true,
"location": {
"latitude": 59.97882,
"longitude": 18.21584
},
"distanceFromPrevious": 652,
"detection": {
"enteringDistance": 20,
"exitingDistance": 10,
"passingDirection": null
},
"pathFromPrevious": {
"coordinates": [
[
59.94525,
18.13365
],
[
59.94562,
18.17644
],
[
59.95361,
18.18034
],
[
59.96939,
18.19872
],
[
59.97882,
18.21584
]
]
}
},
"stopArea": {
"ref": "9021001010667000",
"name": "Eriksbo",
"shortName": "Eriksbo"
},
"stopPoint": {
"ref": "9022001010667001",
"name": "Eriksbo",
"shortName": "Eriksbo",
"designation": "",
"localNumber": 1,
"length": 22,
"stopPointKeys": [
{
"parameterData": "Värdshuset",
"typeCode": "ADDITIONAL_INFO",
"deviceName": "Alias"
}
]
},
"replacedJourneyPatternPoint": {
"ref": "9025001000010688",
"isTimingPoint": true,
"location": {
"latitude": 59.94525,
"longitude": 18.13365
},
"distanceFromPrevious": 555,
"detection": {
"enteringDistance": 20,
"exitingDistance": 10,
"passingDirection": null
}
},
"replacedStopArea": {
"ref": "9021001010995000",
"name": "Sickla väg",
"shortName": "Sickla väg"
},
"replacedStopPoint": {
"ref": "9022001010995004",
"name": "Sickla väg",
"shortName": "Sickla väg",
"designation": "",
"localNumber": 4,
"length": 20
},
"detourEnroute": {
"startsAfterCallSequenceNumber": 1,
"path": {
"coordinates": [
[
59.94525,
18.13365
],
[
59.94352,
18.14644
],
[
59.95261,
18.14034
],
[
59.96439,
18.16872
],
[
59.97882,
18.21584
]
]
}
},
"arrival": {
"latestDateTime": "2017-04-27T05:53:00+02:00",
"arrivalType": "STOP_IF_ALIGHTING"
},
"departure": {
"earliestDateTime": "2017-04-27T05:53:00+02:00",
"departureType": "STOP_IF_BOARDING"
},
"destinationDisplay": {
"productName": "",
"symbolName": "",
"lineDesignation": "22B",
"primaryDestination": "Thorildsplan",
"displayKeys": [
{
"parameterData": "Destination=659",
"typeCode": "O_DESTIN",
"deviceName": "SIGN"
}
]
},
"fetcherConnections": [
{
"connectionRef": "9014001002310000",
"transportModeCode": "BUS",
"lineAuthorityCode": "SL",
"lineDesignation": "23",
"directionName": "Mot Hötorget",
"minChangeDurationSeconds": 120,
"maxWaitingUntilTime": "2017-04-27T06:05:00+02:00"
},
{
"connectionRef": "9014001002410000",
"transportModeCode": "BUS",
"lineAuthorityCode": "SL",
"lineDesignation": "24",
"directionName": "Mot Rådhuset",
"minChangeDurationSeconds": 60,
"maxWaitingUntilTime": "2017-04-27T06:03:00+02:00"
}
]
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/tsp |
Schema | tsp.json |
The message to be sent to VHF to ensure that the bus is prioritized at the traffic lights. This message is generated by Ruter when approaching an intersection or, when a stop is just before an intersection, after the doors have closed.
Accepts the following message:
Notification that vehicle should transmit a traffic preemption message
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"message": "ZkxhQwAAACIQABAAAAUJABtAA+gA8AB+W8FZndQvQAyj="
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/journey |
Schema | dpi-journey.json |
Message containing the stops included in the journey, connections to other lines, positions ++.
Accepts the following message:
List of stops for current journey in block
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"journeyId": "RUT:ServiceJourney:31-117215-13227462",
"journeyRef": "31001-2019-02-17T21:55:00+01:00",
"route": {
"id": "RUT:Route:31-1041",
"name": "Fornebu vest-Tonsenhagen",
"line": {
"id": "RUT:Line:31",
"name": "Snarøya - Fornebu - Tonsenhagen - Grorud",
"publicCode": "31"
},
"journeyPatternRef": "RUT:JourneyPattern:011579",
"stopPlaces": [
{
"id": "RUT:StopPlace:02190017",
"name": "Fornebu vest",
"connections": [],
"location": {
"latitude": 12.33345,
"longitude": 12.33345
},
"tariffZones": [
"OST:TariffZone:227",
"RUT:TariffZone:1"
]
},
{
"id": "RUT:StopPlace:03010013",
"name": "Jernbanetorget",
"connections": [
{
"line": {
"id": "RUT:Line:30",
"name": "Bygdøy via Bygdøynes",
"publicCode": "30"
},
"type": "BUS",
"color": "e60000"
},
{
"line": {
"id": "RUT:Line:12",
"name": "Majorstuen",
"publicCode": "12"
},
"type": "TRAM",
"color": "0b91ef"
}
],
"location": {
"latitude": 12.33345,
"longitude": 12.33345
}
}
]
}
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/nextstop |
Schema | dpi-nextstop.json |
Next stop on the buss route after leaving a stop.
Accepts the following message:
Notification that vehicle has a new next stop
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"stopPlaceId": "RUT:StopPlace:03012453",
"index": 0
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/eta |
Schema | dpi-eta.json |
Estimated arrival at the remaining stops.
Accepts the following message:
Estimated time of arrival for future stops on a journey
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"estimatedCalls": [
{
"eta": "2017-10-13T12:27:04.416Z",
"stopPlaceId": "RUT:StopPlace:03010510",
"text": "Nå"
},
{
"eta": "2017-10-13T12:27:04.416Z",
"stopPlaceId": "RUT:StopPlace:03010511",
"text": "1 Min"
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/externaldisplay |
Schema | dpi-externaldisplay.json |
Message to be shown on the external destination display. Usually line number (publicCode) and routeName, with support for alternative message.
Accepts the following message:
Notification that the external displays should show new destination information
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"publicCode": "20",
"destination": "Galgeberg",
"alternativeMessage": "Duis aute irure dolor"
}
{
"eventTimestamp": "2021-03-04T15:08:07.519Z",
"destination": "Ikke i trafikk"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/pa |
Schema | dpi-pa.json |
Message to be shown on internal displays. May contain references to videos, html, images, text etc.
Accepts the following message:
{
"eventTimestamp": "2022-05-09T13:27:59.624Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"ref": "757fd8b4-2e57-4ad3-9aee-76e793c514d9",
"content": [
{
"type": "VIDEO",
"duration": 10,
"src": "../media/1080p_Ruter_Takk.mp4"
}
]
}
{
"eventTimestamp": "2022-05-09T13:27:59.624Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"ref": "757fd8b4-2e57-4ad3-9aee-76e793c514d9",
"content": [
{
"type": "IMAGE",
"duration": 5,
"src": "../media/logo.png"
},
{
"type": "HTML",
"duration": 10,
"src": "../media/kampanje.html"
}
]
}
{
"eventTimestamp": "2022-05-09T13:27:59.624Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"ref": "757fd8b4-2e57-4ad3-9aee-76e793c514d9",
"content": [
{
"type": "TEXT",
"duration": 10,
"colorScheme": "INFO",
"icon": "ARROW_UP",
"iconAnchor": "LEFT",
"message": {
"no": {
"title": "Tittel på melding",
"paragraphs": [
"En tekst",
"En annen tekst"
]
}
}
}
]
}
{
"eventTimeStamp": "2022-05-09T13:27:58.772562Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"ref": "CLEAR_SCREEN"
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/arriving |
Schema | dpi-arriving.json |
Notice to passengers that the bus is approaching a stop.
Accepts the following message:
For display of arriving information to passengers
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"expiryTimestamp": "2017-10-31T08:38:47.749Z",
"ref": "RUT:StopPlace:03012453",
"zoneId": "2b-vest",
"message": {
"no": {
"text": "Ankommer Jernbanetorget"
},
"en": {
"text": "Arriving at Jerbanetorget"
}
}
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/connections |
Schema | dpi-connections.json |
List of connections for the remaining stops on a journey with expected departures.
Accepts the following message:
This schema defines the connection message sent as an MQTT message to buses
{
"eventTimestamp": "2020-03-16T14:30:08.762206Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"expiryTimestamp": "2020-03-16T14:35:08.762206Z",
"nextStop": {
"stopPlaceId": "NSR:StopPlace:6498",
"quayId": "NSR:Quay:11950"
},
"journeyId": "RUT:ServiceJourney:60-138542-15631728",
"routeId": "RUT:Route:60-4",
"calls": [
{
"name": "Tøyenkirken",
"stopPlaceId": "NSR:StopPlace:6498",
"quayId": "NSR:Quay:11950",
"index": 4,
"connections": []
},
{
"name": "Tøyen skole",
"stopPlaceId": "NSR:StopPlace:6480",
"quayId": "NSR:Quay:11910",
"index": 5,
"connections": []
},
{
"name": "Tøyen",
"stopPlaceId": "NSR:StopPlace:6478",
"quayId": "NSR:Quay:11908",
"index": 6,
"connections": [
{
"line": {
"id": "RUT:Line:20",
"publicCode": "20",
"transportMode": "bus"
},
"direction": "1",
"departures": [
{
"destination": "Galgeberg",
"text": "5 min",
"departureTime": "2020-03-16T14:35:37Z",
"delay": "PT1M37S",
"journeyId": "RUT:ServiceJourney:20-131531-15685688"
},
{
"destination": "Galgeberg",
"text": "10 min",
"departureTime": "2020-03-16T14:40:58Z",
"delay": "PT1M58S",
"journeyId": "RUT:ServiceJourney:20-131531-15685689"
},
{
"destination": "Galgeberg",
"text": "15:45",
"departureTime": "2020-03-16T14:45:09Z",
"delay": "PT1M9S",
"journeyId": "RUT:ServiceJourney:20-131531-15685690"
}
]
},
{
"line": {
"id": "RUT:Line:20",
"publicCode": "20",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11906",
"description": "i Kjølberggata"
},
"direction": "2",
"departures": [
{
"destination": "Skøyen",
"text": "3 min",
"departureTime": "2020-03-16T14:34:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:20-131531-15685534"
},
{
"destination": "Skøyen",
"text": "8 min",
"departureTime": "2020-03-16T14:39:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:20-131531-15685535"
},
{
"destination": "Skøyen",
"text": "13 min",
"departureTime": "2020-03-16T14:44:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:20-131531-15685536"
}
]
}
]
},
{
"name": "Brinken",
"stopPlaceId": "NSR:StopPlace:6562",
"quayId": "NSR:Quay:12119",
"index": 7,
"connections": []
},
{
"name": "Kampen kirke",
"stopPlaceId": "NSR:StopPlace:6564",
"quayId": "NSR:Quay:12123",
"index": 8,
"connections": []
},
{
"name": "Kampen park",
"stopPlaceId": "NSR:StopPlace:6571",
"quayId": "NSR:Quay:12135",
"index": 9,
"connections": []
},
{
"name": "Ensjøveien",
"stopPlaceId": "NSR:StopPlace:6046",
"quayId": "NSR:Quay:11097",
"index": 10,
"connections": []
},
{
"name": "Tøyen stasjon",
"stopPlaceId": "NSR:StopPlace:6044",
"quayId": "NSR:Quay:11092",
"index": 11,
"connections": []
},
{
"name": "Hasle kirke",
"stopPlaceId": "NSR:StopPlace:6049",
"quayId": "NSR:Quay:11101",
"index": 12,
"connections": []
},
{
"name": "Hasle",
"stopPlaceId": "NSR:StopPlace:6031",
"quayId": "NSR:Quay:11076",
"index": 13,
"connections": [
{
"line": {
"id": "RUT:Line:21",
"publicCode": "21",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11069",
"publicCode": "D"
},
"direction": "1",
"departures": [
{
"destination": "Helsfyr T",
"text": "13 min",
"departureTime": "2020-03-16T14:44:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:21-131531-15685155"
},
{
"destination": "Helsfyr T",
"text": "15:49",
"departureTime": "2020-03-16T14:49:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:21-131531-15685156"
},
{
"destination": "Helsfyr T",
"text": "15:54",
"departureTime": "2020-03-16T14:54:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:21-131531-15685157"
}
]
},
{
"line": {
"id": "RUT:Line:21",
"publicCode": "21",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11070",
"publicCode": "C"
},
"direction": "2",
"departures": [
{
"destination": "Tjuvholmen",
"text": "13 min",
"departureTime": "2020-03-16T14:44:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:21-131531-15685274"
},
{
"destination": "Tjuvholmen",
"text": "15:49",
"departureTime": "2020-03-16T14:49:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:21-131531-15685275"
},
{
"destination": "Tjuvholmen",
"text": "15:54",
"departureTime": "2020-03-16T14:54:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:21-131531-15685276"
}
]
},
{
"line": {
"id": "RUT:Line:28",
"publicCode": "28",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11075",
"publicCode": "B"
},
"direction": "2",
"departures": [
{
"destination": "Fornebu",
"text": "15:47",
"departureTime": "2020-03-16T14:47:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685026"
},
{
"destination": "Fornebu",
"text": "15:54",
"departureTime": "2020-03-16T14:54:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685039"
},
{
"destination": "Fornebu",
"text": "16:02",
"departureTime": "2020-03-16T15:02:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685027"
}
]
},
{
"line": {
"id": "RUT:Line:28",
"publicCode": "28",
"transportMode": "bus"
},
"direction": "1",
"departures": [
{
"destination": "Økern T",
"text": "15:48",
"departureTime": "2020-03-16T14:48:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685014"
},
{
"destination": "Økern T",
"text": "15:57",
"departureTime": "2020-03-16T14:57:43Z",
"delay": "PT1M43S",
"journeyId": "RUT:ServiceJourney:28-131531-15685006"
},
{
"destination": "Økern T",
"text": "16:03",
"departureTime": "2020-03-16T15:03:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685015"
}
]
}
]
},
{
"name": "Haslevangen",
"stopPlaceId": "NSR:StopPlace:6036",
"quayId": "NSR:Quay:11080",
"index": 14,
"connections": [
{
"line": {
"id": "RUT:Line:28",
"publicCode": "28",
"transportMode": "bus"
},
"direction": "1",
"departures": [
{
"destination": "Økern T",
"text": "15:49",
"departureTime": "2020-03-16T14:49:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685014"
},
{
"destination": "Økern T",
"text": "15:58",
"departureTime": "2020-03-16T14:58:43Z",
"delay": "PT1M43S",
"journeyId": "RUT:ServiceJourney:28-131531-15685006"
},
{
"destination": "Økern T",
"text": "16:04",
"departureTime": "2020-03-16T15:04:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685015"
}
]
},
{
"line": {
"id": "RUT:Line:28",
"publicCode": "28",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11079"
},
"direction": "2",
"departures": [
{
"destination": "Fornebu",
"text": "15:46",
"departureTime": "2020-03-16T14:46:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685026"
},
{
"destination": "Fornebu",
"text": "15:53",
"departureTime": "2020-03-16T14:53:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685039"
},
{
"destination": "Fornebu",
"text": "16:01",
"departureTime": "2020-03-16T15:01:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685027"
}
]
}
]
},
{
"name": "Økern",
"stopPlaceId": "NSR:StopPlace:5907",
"quayId": "NSR:Quay:10835",
"index": 15,
"connections": [
{
"line": {
"id": "RUT:Line:23",
"publicCode": "23",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10834",
"publicCode": "B"
},
"direction": "1",
"departures": [
{
"destination": "Simensbråten",
"text": "15:55",
"departureTime": "2020-03-16T14:55:18Z",
"delay": "PT18S",
"journeyId": "RUT:ServiceJourney:23-137908-16794834"
},
{
"destination": "Simensbråten",
"text": "16:05",
"departureTime": "2020-03-16T15:05:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:23-137908-16794835"
},
{
"destination": "Simensbråten",
"text": "16:15",
"departureTime": "2020-03-16T15:15:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:23-137908-16794836"
}
]
},
{
"line": {
"id": "RUT:Line:23",
"publicCode": "23",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10832",
"publicCode": "A"
},
"direction": "2",
"departures": [
{
"destination": "Lysaker",
"text": "16:06",
"departureTime": "2020-03-16T15:06:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:23-137908-16794741"
},
{
"destination": "Lysaker",
"text": "15:56",
"departureTime": "2020-03-16T14:56:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:23-137908-16794740"
},
{
"destination": "Lysaker",
"text": "16:16",
"departureTime": "2020-03-16T15:16:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:23-137908-16794742"
}
]
},
{
"line": {
"id": "RUT:Line:24",
"publicCode": "24",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10834",
"publicCode": "B"
},
"direction": "1",
"departures": [
{
"destination": "Brynseng T",
"text": "15:55",
"departureTime": "2020-03-16T14:55:46Z",
"delay": "PT5M46S",
"journeyId": "RUT:ServiceJourney:24-137908-16794944"
},
{
"destination": "Brynseng T",
"text": "16:00",
"departureTime": "2020-03-16T15:00:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:24-137908-16794945"
},
{
"destination": "Brynseng T",
"text": "16:10",
"departureTime": "2020-03-16T15:10:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:24-137908-16794946"
}
]
},
{
"line": {
"id": "RUT:Line:24",
"publicCode": "24",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10832",
"publicCode": "A"
},
"direction": "2",
"departures": [
{
"destination": "Fornebu",
"text": "16:11",
"departureTime": "2020-03-16T15:11:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:24-137908-16794982"
},
{
"destination": "Fornebu",
"text": "16:41",
"departureTime": "2020-03-16T15:41:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:24-137908-16794985"
},
{
"destination": "Fornebu",
"text": "16:31",
"departureTime": "2020-03-16T15:31:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:24-137908-16794984"
}
]
},
{
"line": {
"id": "RUT:Line:28",
"publicCode": "28",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10832",
"publicCode": "A"
},
"direction": "2",
"departures": [
{
"destination": "Fornebu",
"text": "16:43",
"departureTime": "2020-03-16T15:43:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685030"
},
{
"destination": "Fornebu",
"text": "16:05",
"departureTime": "2020-03-16T15:05:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685040"
},
{
"destination": "Fornebu",
"text": "16:35",
"departureTime": "2020-03-16T15:35:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:28-131531-15685042"
}
]
},
{
"line": {
"id": "RUT:Line:345",
"publicCode": "345",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Vestvollen",
"text": "15:50",
"departureTime": "2020-03-16T14:50:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:345-138458-16752823"
},
{
"destination": "Vestvollen",
"text": "16:00",
"departureTime": "2020-03-16T15:00:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:345-138458-16752806"
},
{
"destination": "Vestvollen",
"text": "16:01",
"departureTime": "2020-03-16T15:01:22Z",
"delay": "PT21M22S",
"journeyId": "RUT:ServiceJourney:345-138458-16752805"
}
]
},
{
"line": {
"id": "RUT:Line:67",
"publicCode": "67",
"transportMode": "bus"
},
"direction": "1",
"departures": [
{
"destination": "Lørenskog sentrum",
"text": "15:51",
"departureTime": "2020-03-16T14:51:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:67-138542-15631987"
},
{
"destination": "Lørenskog sentrum",
"text": "16:01",
"departureTime": "2020-03-16T15:01:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:67-138542-15631988"
},
{
"destination": "Lørenskog sentrum",
"text": "16:11",
"departureTime": "2020-03-16T15:11:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:67-138542-15631989"
}
]
}
]
},
{
"name": "Økern næringspark",
"stopPlaceId": "NSR:StopPlace:5916",
"quayId": "NSR:Quay:10849",
"index": 16,
"connections": []
},
{
"name": "Lånekassen",
"stopPlaceId": "NSR:StopPlace:5918",
"quayId": "NSR:Quay:10852",
"index": 17,
"connections": []
},
{
"name": "Nedre Risløkka",
"stopPlaceId": "NSR:StopPlace:5928",
"quayId": "NSR:Quay:10872",
"index": 18,
"connections": []
},
{
"name": "Rabbeveien",
"stopPlaceId": "NSR:StopPlace:5930",
"quayId": "NSR:Quay:10875",
"index": 19,
"connections": []
},
{
"name": "Anton Tschudis vei",
"stopPlaceId": "NSR:StopPlace:5932",
"quayId": "NSR:Quay:10878",
"index": 20,
"connections": []
},
{
"name": "Kroklia",
"stopPlaceId": "NSR:StopPlace:5941",
"quayId": "NSR:Quay:10894",
"index": 21,
"connections": []
},
{
"name": "Øvre Risløkka",
"stopPlaceId": "NSR:StopPlace:5943",
"quayId": "NSR:Quay:10898",
"index": 22,
"connections": []
},
{
"name": "Økernbråten",
"stopPlaceId": "NSR:StopPlace:5945",
"quayId": "NSR:Quay:10902",
"index": 23,
"connections": [
{
"line": {
"id": "RUT:Line:58",
"publicCode": "58",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10901"
},
"direction": "1",
"departures": [
{
"destination": "Tveita T",
"text": "15:57",
"departureTime": "2020-03-16T14:57:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:58-138542-17261911"
},
{
"destination": "Tveita T",
"text": "16:12",
"departureTime": "2020-03-16T15:12:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:58-138542-17261912"
},
{
"destination": "Tveita T",
"text": "16:27",
"departureTime": "2020-03-16T15:27:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:58-138542-17261913"
}
]
}
]
},
{
"name": "Linne hotell",
"stopPlaceId": "NSR:StopPlace:5952",
"quayId": "NSR:Quay:10916",
"index": 24,
"connections": []
},
{
"name": "Linderud T",
"stopPlaceId": "NSR:StopPlace:5950",
"quayId": "NSR:Quay:10911",
"index": 25,
"connections": []
},
{
"name": "Veitvetstubben",
"stopPlaceId": "NSR:StopPlace:5967",
"quayId": "NSR:Quay:10946",
"index": 26,
"connections": []
},
{
"name": "Linderud senter",
"stopPlaceId": "NSR:StopPlace:5974",
"quayId": "NSR:Quay:10960",
"index": 27,
"connections": [
{
"line": {
"id": "RUT:Line:25",
"publicCode": "25",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10959"
},
"direction": "1",
"departures": [
{
"destination": "Lørenskog stasjon",
"text": "16:02",
"departureTime": "2020-03-16T15:02:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843154"
},
{
"destination": "Lørenskog stasjon",
"text": "16:09",
"departureTime": "2020-03-16T15:09:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843009"
},
{
"destination": "Lørenskog stasjon",
"text": "16:17",
"departureTime": "2020-03-16T15:17:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843010"
}
]
},
{
"line": {
"id": "RUT:Line:31",
"publicCode": "31",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10959"
},
"direction": "1",
"departures": [
{
"destination": "Grorud T",
"text": "16:04",
"departureTime": "2020-03-16T15:04:11Z",
"delay": "PT2M11S",
"journeyId": "RUT:ServiceJourney:31-138571-15639652"
},
{
"destination": "Grorud T",
"text": "16:12",
"departureTime": "2020-03-16T15:12:01Z",
"delay": "PT1H10M1S",
"journeyId": "RUT:ServiceJourney:31-138571-15639647"
},
{
"destination": "Grorud T",
"text": "16:14",
"departureTime": "2020-03-16T15:14:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639653"
}
]
},
{
"line": {
"id": "RUT:Line:33",
"publicCode": "33",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10959"
},
"direction": "1",
"departures": [
{
"destination": "Ellingsrudåsen T",
"text": "16:03",
"departureTime": "2020-03-16T15:03:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632327"
},
{
"destination": "Ellingsrudåsen T",
"text": "16:18",
"departureTime": "2020-03-16T15:18:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632328"
},
{
"destination": "Ellingsrudåsen T",
"text": "16:33",
"departureTime": "2020-03-16T15:33:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632329"
}
]
}
]
},
{
"name": "Linderudsletta",
"stopPlaceId": "NSR:StopPlace:5972",
"quayId": "NSR:Quay:10956",
"index": 28,
"connections": [
{
"line": {
"id": "RUT:Line:25",
"publicCode": "25",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Majorstuen",
"text": "16:01",
"departureTime": "2020-03-16T15:01:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843093"
},
{
"destination": "Majorstuen",
"text": "16:09",
"departureTime": "2020-03-16T15:09:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843094"
},
{
"destination": "Majorstuen",
"text": "16:16",
"departureTime": "2020-03-16T15:16:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843170"
}
]
},
{
"line": {
"id": "RUT:Line:31",
"publicCode": "31",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Snarøya",
"text": "16:07",
"departureTime": "2020-03-16T15:07:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639845"
},
{
"destination": "Snarøya",
"text": "16:19",
"departureTime": "2020-03-16T15:19:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639846"
},
{
"destination": "Snarøya",
"text": "16:27",
"departureTime": "2020-03-16T15:27:31Z",
"delay": "PT56M31S",
"journeyId": "RUT:ServiceJourney:31-138571-15639842"
}
]
},
{
"line": {
"id": "RUT:Line:2031",
"publicCode": "31E",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10950"
},
"direction": "1",
"departures": [
{
"destination": "Kalbakken",
"text": "16:03",
"departureTime": "2020-03-16T15:03:55Z",
"delay": "PT1M55S",
"journeyId": "RUT:ServiceJourney:2031-138571-15640592"
},
{
"destination": "Kalbakken",
"text": "16:12",
"departureTime": "2020-03-16T15:12:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:2031-138571-15640593"
},
{
"destination": "Kalbakken",
"text": "16:22",
"departureTime": "2020-03-16T15:22:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:2031-138571-15640594"
}
]
},
{
"line": {
"id": "RUT:Line:33",
"publicCode": "33",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Filipstad",
"text": "16:09",
"departureTime": "2020-03-16T15:09:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632358"
},
{
"destination": "Filipstad",
"text": "16:24",
"departureTime": "2020-03-16T15:24:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632359"
},
{
"destination": "Filipstad",
"text": "16:39",
"departureTime": "2020-03-16T15:39:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632360"
}
]
},
{
"line": {
"id": "RUT:Line:380",
"publicCode": "380",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10955"
},
"direction": "1",
"departures": [
{
"destination": "Oslo bussterminal",
"text": "16:17",
"departureTime": "2020-03-16T15:17:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:380-136266-16659813"
},
{
"destination": "Oslo bussterminal",
"text": "16:37",
"departureTime": "2020-03-16T15:37:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:380-136266-16659814"
},
{
"destination": "Oslo bussterminal",
"text": "16:57",
"departureTime": "2020-03-16T15:57:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:380-136266-16659815"
}
]
},
{
"line": {
"id": "RUT:Line:380",
"publicCode": "380",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10950"
},
"direction": "2",
"departures": [
{
"destination": "Lillestrøm",
"text": "16:17",
"departureTime": "2020-03-16T15:17:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:380-136266-16659969"
},
{
"destination": "Lillestrøm",
"text": "16:37",
"departureTime": "2020-03-16T15:37:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:380-136266-16659970"
},
{
"destination": "Lillestrøm",
"text": "16:57",
"departureTime": "2020-03-16T15:57:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:380-136266-16659971"
}
]
},
{
"line": {
"id": "RUT:Line:390",
"publicCode": "390",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10950"
},
"direction": "2",
"departures": [
{
"destination": "Kongskog",
"text": "16:08",
"departureTime": "2020-03-16T15:08:19Z",
"delay": "PT42M19S",
"journeyId": "RUT:ServiceJourney:390-136266-16660240"
},
{
"destination": "Nittedal sentrum",
"text": "16:16",
"departureTime": "2020-03-16T15:16:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:390-136266-16660219"
},
{
"destination": "Nittedal sentrum",
"text": "16:46",
"departureTime": "2020-03-16T15:46:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:390-136266-16660220"
}
]
},
{
"line": {
"id": "RUT:Line:390",
"publicCode": "390",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10955"
},
"direction": "1",
"departures": [
{
"destination": "Oslo bussterminal",
"text": "16:03",
"departureTime": "2020-03-16T15:03:04Z",
"delay": "PT1M4S",
"journeyId": "RUT:ServiceJourney:390-136266-16660178"
},
{
"destination": "Oslo bussterminal",
"text": "16:17",
"departureTime": "2020-03-16T15:17:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:390-136266-16660203"
},
{
"destination": "Oslo bussterminal",
"text": "16:32",
"departureTime": "2020-03-16T15:32:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:390-136266-16660179"
}
]
}
]
},
{
"name": "Kolåsbakken",
"stopPlaceId": "NSR:StopPlace:5978",
"quayId": "NSR:Quay:10969",
"index": 29,
"connections": [
{
"line": {
"id": "RUT:Line:25",
"publicCode": "25",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10968"
},
"direction": "1",
"departures": [
{
"destination": "Lørenskog stasjon",
"text": "16:01",
"departureTime": "2020-03-16T15:01:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843154"
},
{
"destination": "Lørenskog stasjon",
"text": "16:08",
"departureTime": "2020-03-16T15:08:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843009"
},
{
"destination": "Lørenskog stasjon",
"text": "16:16",
"departureTime": "2020-03-16T15:16:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843010"
}
]
},
{
"line": {
"id": "RUT:Line:25",
"publicCode": "25",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Majorstuen",
"text": "16:02",
"departureTime": "2020-03-16T15:02:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843093"
},
{
"destination": "Majorstuen",
"text": "16:10",
"departureTime": "2020-03-16T15:10:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843094"
},
{
"destination": "Majorstuen",
"text": "16:17",
"departureTime": "2020-03-16T15:17:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843170"
}
]
},
{
"line": {
"id": "RUT:Line:31",
"publicCode": "31",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10968"
},
"direction": "1",
"departures": [
{
"destination": "Grorud T",
"text": "16:02",
"departureTime": "2020-03-16T15:02:05Z",
"delay": "PT1M5S",
"journeyId": "RUT:ServiceJourney:31-138571-15639652"
},
{
"destination": "Grorud T",
"text": "16:11",
"departureTime": "2020-03-16T15:11:01Z",
"delay": "PT1H10M1S",
"journeyId": "RUT:ServiceJourney:31-138571-15639647"
},
{
"destination": "Grorud T",
"text": "16:14",
"departureTime": "2020-03-16T15:14:24Z",
"delay": "PT1M24S",
"journeyId": "RUT:ServiceJourney:31-138571-15639653"
}
]
},
{
"line": {
"id": "RUT:Line:31",
"publicCode": "31",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Snarøya",
"text": "16:08",
"departureTime": "2020-03-16T15:08:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639845"
},
{
"destination": "Snarøya",
"text": "16:20",
"departureTime": "2020-03-16T15:20:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639846"
},
{
"destination": "Snarøya",
"text": "16:28",
"departureTime": "2020-03-16T15:28:31Z",
"delay": "PT56M31S",
"journeyId": "RUT:ServiceJourney:31-138571-15639842"
}
]
},
{
"line": {
"id": "RUT:Line:33",
"publicCode": "33",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Filipstad",
"text": "16:09",
"departureTime": "2020-03-16T15:09:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632358"
},
{
"destination": "Filipstad",
"text": "16:24",
"departureTime": "2020-03-16T15:24:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632359"
},
{
"destination": "Filipstad",
"text": "16:39",
"departureTime": "2020-03-16T15:39:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632360"
}
]
},
{
"line": {
"id": "RUT:Line:33",
"publicCode": "33",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:10968"
},
"direction": "1",
"departures": [
{
"destination": "Ellingsrudåsen T",
"text": "16:03",
"departureTime": "2020-03-16T15:03:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632327"
},
{
"destination": "Ellingsrudåsen T",
"text": "16:18",
"departureTime": "2020-03-16T15:18:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632328"
},
{
"destination": "Ellingsrudåsen T",
"text": "16:33",
"departureTime": "2020-03-16T15:33:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632329"
}
]
}
]
},
{
"name": "Tonsenhagen",
"stopPlaceId": "NSR:StopPlace:6008",
"quayId": "NSR:Quay:11023",
"index": 30,
"connections": [
{
"line": {
"id": "RUT:Line:25",
"publicCode": "25",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Majorstuen",
"text": "16:19",
"departureTime": "2020-03-16T15:19:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843170"
},
{
"destination": "Majorstuen",
"text": "16:35",
"departureTime": "2020-03-16T15:35:36Z",
"delay": "PT1M36S",
"journeyId": "RUT:ServiceJourney:25-138571-16843096"
},
{
"destination": "Majorstuen",
"text": "16:42",
"departureTime": "2020-03-16T15:42:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843097"
}
]
},
{
"line": {
"id": "RUT:Line:25",
"publicCode": "25",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11024"
},
"direction": "1",
"departures": [
{
"destination": "Lørenskog stasjon",
"text": "16:15",
"departureTime": "2020-03-16T15:15:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843010"
},
{
"destination": "Lørenskog stasjon",
"text": "16:37",
"departureTime": "2020-03-16T15:37:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843012"
},
{
"destination": "Lørenskog stasjon",
"text": "16:45",
"departureTime": "2020-03-16T15:45:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:25-138571-16843013"
}
]
},
{
"line": {
"id": "RUT:Line:31",
"publicCode": "31",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Fornebu",
"text": "16:04",
"departureTime": "2020-03-16T15:04:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639929"
},
{
"destination": "Fornebu",
"text": "17:04",
"departureTime": "2020-03-16T16:04:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639934"
},
{
"destination": "Fornebu",
"text": "16:28",
"departureTime": "2020-03-16T15:28:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639931"
}
]
},
{
"line": {
"id": "RUT:Line:31",
"publicCode": "31",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11024"
},
"direction": "1",
"departures": [
{
"destination": "Grorud T",
"text": "16:48",
"departureTime": "2020-03-16T15:48:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639656"
},
{
"destination": "Grorud T",
"text": "16:12",
"departureTime": "2020-03-16T15:12:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:31-138571-15639653"
},
{
"destination": "Grorud T",
"text": "16:58",
"departureTime": "2020-03-16T15:58:28Z",
"delay": "PT22M28S",
"journeyId": "RUT:ServiceJourney:31-138571-15639655"
}
]
},
{
"line": {
"id": "RUT:Line:33",
"publicCode": "33",
"transportMode": "bus"
},
"quay": {
"id": "NSR:Quay:11024"
},
"direction": "1",
"departures": [
{
"destination": "Ellingsrudåsen T",
"text": "16:17",
"departureTime": "2020-03-16T15:17:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632328"
},
{
"destination": "Ellingsrudåsen T",
"text": "17:02",
"departureTime": "2020-03-16T16:02:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632331"
},
{
"destination": "Ellingsrudåsen T",
"text": "16:32",
"departureTime": "2020-03-16T15:32:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632329"
}
]
},
{
"line": {
"id": "RUT:Line:33",
"publicCode": "33",
"transportMode": "bus"
},
"direction": "2",
"departures": [
{
"destination": "Filipstad",
"text": "16:10",
"departureTime": "2020-03-16T15:10:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632358"
},
{
"destination": "Filipstad",
"text": "16:40",
"departureTime": "2020-03-16T15:40:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632360"
},
{
"destination": "Filipstad",
"text": "16:25",
"departureTime": "2020-03-16T15:25:00Z",
"delay": "PT0S",
"journeyId": "RUT:ServiceJourney:33-138542-15632359"
}
]
}
]
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/key_stops |
Schema | dpi-key_stops.json |
List of X number of most trafficked stops in the rest of the journey. Based on predicted number of passengers leaving on each stop
Accepts the following message:
This schema defines the Key Stops message sent as an MQTT message to vehicles
{
"eventTimestamp": "2022-05-10T10:35:16.708Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"id": "RUT:ServiceJourney:18-164036-22694106",
"lineId": "RUT:Line:18",
"linePublicCode": "18",
"stopPlaces": [
{
"stopPlaceId": "NSR:StopPlace:3986",
"stopPlaceIndex": 11,
"boarding": {
"predictedValue": 0.33333334,
"qualityIndicator": "GOOD"
},
"alighting": {
"predictedValue": 5.233333,
"qualityIndicator": "GOOD"
}
},
{
"stopPlaceId": "NSR:StopPlace:6258",
"stopPlaceIndex": 16,
"boarding": {
"predictedValue": 1.4375,
"qualityIndicator": "GOOD"
},
"alighting": {
"predictedValue": 0.28125,
"qualityIndicator": "GOOD"
}
},
{
"stopPlaceId": "NSR:StopPlace:6269",
"stopPlaceIndex": 20,
"boarding": {
"predictedValue": 6.6968083,
"qualityIndicator": "GOOD"
},
"alighting": {
"predictedValue": 12.484042,
"qualityIndicator": "GOOD"
}
},
{
"stopPlaceId": "NSR:StopPlace:6266",
"stopPlaceIndex": 26,
"boarding": {
"predictedValue": 1.5,
"qualityIndicator": "GOOD"
},
"alighting": {
"predictedValue": 0.4375,
"qualityIndicator": "GOOD"
}
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi_command |
Schema | dpi-command.json |
This channels is reserved for command and control messages originated by Ruter. Typical use cases include:
The payload is defined as an object with no structure to provide flexibility.
Accepts the following message:
Message sent to bus to control DPI functions
{
"eventTimestamp": "2018-10-31T12:45:50Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"type": "DEBUG",
"payload": {
"command": "LOG_TRANSFER",
"arg": {
"level": "ERROR",
"limit": 10,
"page": 0
}
}
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/vehicle/api |
Schema | api.json |
Message used by Ruter to distribute information about the vehicle and it's supported APIs as provided by the PTO.
Accepts the following message:
Vehicle API topic
{
"eventTimestamp": "2021-03-04T15:08:07.519Z",
"traceId": "2ccf77aa-463f-4b98-ad19-61ec5d213e36",
"operatorRef": "nobina",
"vehicleId": "VNE5046N40M039404",
"apiVersion": "2"
}