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.
The diagram below shows an overview of the most important messages that manage the assignment and journey of a vehicle.
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}/itxpt/ota/signon/json |
Schema | signon.json |
Notify PTA BO that the bus is starting a block. |
Accepts the following message:
Notification to PTA BO that a block is being started or resumed, or completed
{
"eventTimestamp": "2017-10-31T12:45:50Z",
"vehicleNumber": "12345",
"blockId": "1234:34",
"vehicleJourneyId": "35:ABC"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/itxpt/ota/signoff/json |
Schema | signon.json |
Notify PTA BO that the bus has completed a block. |
The content of signoff is the same as signon and uses the same schema.
Accepts the following message:
Notification to PTA BO that a block is being started or resumed, or completed
{
"eventTimestamp": "2017-10-31T12:45:50Z",
"vehicleNumber": "12345",
"blockId": "1234:34",
"vehicleJourneyId": "35:ABC"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/itxpt/ota/avl/json |
Schema | avl.json |
Automatic Vehicle Location. Reporting of the buss position, course and speed to PTA BO.
Accepts the following message:
Automatic Vehicle Location
{
"eventTimestamp": "2017-10-31T12:45:50Z",
"seqNumber": 0,
"latitude": 60.25255,
"longitude": 11.0567,
"heading": 0.5,
"speedOverGround": 34.5,
"signalQuality": "AGPS",
"numberOfSatellites": 4,
"gnssType": "GPS",
"gnssCoordinateSystem": "WGS84",
"deadReckoning": false,
"positionIsSimulated": false
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/itxpt/ota/telemetry/{telemetryId}/json |
Schema | avl.json |
Vehicle telemetry from systems on the bus.
Several different kinds of telemetry are available varying by vehicle type. For traditional busses, FMS is the standard defines what data about the vehicle is published on the FMS bus and out by FMStoIP. For trams VehicleToIP defines a a different and more limited set of data. In addition, electrical and hydrogen have proprietary data that is not captured by either.
This topic generalizes all such data as telemetry defined by a unique id. We will use FMS PGN ids (4-digit hex values) but otherwise use unique ids to identify data from other sources.
If we define the ids along the lines of FMS we can have 32-bit ids that use the following pattern:
Bytes | Description |
---|---|
1 | Source identifier |
2-4 | Source-specific id, e.g. FMS PGNs |
Source identifiers will be:
Id | Description |
---|---|
0x00 | FMS |
0x01 | non-FMS |
... | new sources |
Therefore all FMS PGNs become "0000" + 4-digit hex PGN.
Learn more about the telemetry concept in this wiki article.
Each of the available data points is defined with a Parameter Group Number (PGN) with fields defined by Suspect Parameter Number (SPN).
The FMS-to-IP service in the ITxPT standard makes the desired data available on the bus's own network over UDP (multicast broadcast). It sends out only the PGNs previously requested by calling a service. The messages are sent every second, according to ITxPT, and includes all the requested PGNs. The format is in XML.
We therefore define which PGNs are needed by Ruter and that the XML message should be broken up per PGN and forwarded as JSON.
This is the list of required PGNs. It should be possible to expand this over time.
Code | Description | PGN | SPN | Purpose | ID | Local topic |
---|---|---|---|---|---|---|
DC1 | Door Control 1 | FE4E | 3411 Status 2 of doors 1820 Ramp/Wheel chairlift 1821 Position of doors |
Doors open / closed | 0000FE4E | telemetry/0000fe4e/json |
DC2 | Door Control 2 | FDA5 | XXXX Lock Status Door N XXXX Enable Status Door N XXXX Open Status Door N |
Alternative to DC1? | 0000FDA5 | telemetry/0000fda5/json |
VDHR | High Resolution Vehicle Distance | FEC1 | 917 High resolution total vehicle distance | Supplements position | 0000FEC1 | telemetry/0000fec1/json |
The telemetry / sensor ID.
Accepts the following message:
Translation of FMS data to MQTT messages
{
"eventTimestamp": "2017-10-31T12:45:50Z",
"id": "0000FEF1",
"payloads": [
{
"subid": 84,
"name": "Wheel-Based Vehicle Speed",
"unit": "km/h",
"value": 55.3
},
{
"subid": 597,
"name": "Wheel-Based Vehicle Speed",
"value": "released"
}
]
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/itxpt/ota/apc/{sensorId}/json |
Schema | apc-sensors.json |
The sensor ID.
Accepts the following message:
Automatic Passaneger Count
{
"eventTimestamp": "2017-10-31T12:45:50Z",
"doorId": 1,
"passengerCounting": [
{
"objectClass": "ADULT",
"doorPassengerIn": 1,
"doorPassengerOut": 1
},
{
"objectClass": "CHILD",
"doorPassengerIn": 0,
"doorPassengerOut": 0
},
{
"objectClass": "PRAM",
"doorPassengerIn": 0,
"doorPassengerOut": 0
},
{
"objectClass": "WHEELCHAIR",
"doorPassengerIn": 0,
"doorPassengerOut": 0
}
],
"doorCountQuality": "REGULAR"
}
Field | Value |
---|---|
Central Topic | - |
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}/sensors/door |
Schema | door.json |
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/doorlock/json |
Schema | door-lock.json |
This message is used to track if the vehicle doors are locked or unlocked.
Accepts the following message:
Door lock event
{
"eventTimestamp": "2020-10-31T08:38:02.749Z",
"locked": false
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/itxpt/ota/stopsignal/json |
Schema | stopsignal.json |
This message should be produced whenever the stop signal is turned on or off.
Accepts the following message:
Notification that passengers have requested a stop
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"stopSignalled": true
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/adt/v1/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": "2019-10-09T10:16:07.000Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"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",
"nfcReaderConnected": false,
"printerConnected": true,
"nodAvailable": true,
"sapiAvailable": false,
"loggedIn": true,
"journeyRef": "42911-2020-05-25T16:42:00+02:00",
"stopPlaceId": "NSR:StopPlace:59734"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/pe/sales/diagnostics |
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/{operatorId}/{vehicleId}/infohub/dpi/emergency/json |
Schema | dpi-emergency.json |
Topic used to trigger the displays to show the emergency message instead of the regular passenger information.
⚠️ Notice! The MADT is to send this message every X sec while the emergency is in progress. This is to make sure the message reaches all the displays in case of package loss on the network.
Accepts the following message:
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"enabled": true,
"icon": "EXCLAMATION_CIRCLE",
"title": {
"no": "Tur avbrutt",
"en": "Journey termination"
}
}
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"enabled": false
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/infohub/dpi/diagnostics/json |
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.
⚠️ Deprecated! Will be removed in a later release.
Accepts the following message:
{
"eventTimestamp": "2019-10-09T10:16:07.000Z",
"traceId": "3841a268-0c03-4588-b476-211be0f26a0d",
"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}/itxpt/ota/sales/diagnostics/json |
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.
⚠️ Deprecated! Will be removed in a later release. Use pe/sales/diagnostics instead.
Accepts the following message:
{
"eventTimestamp": "2020-04-28T13:49:50.814Z",
"nfcReaderConnected": false,
"printerConnected": true,
"nodAvailable": true,
"sapiAvailable": false,
"loggedIn": true,
"journeyRef": "42911-2020-05-25T16:42:00+02:00",
"stopPlaceId": "NSR:StopPlace:59734"
}
Field | Value |
---|---|
Central Topic | ruter/{operatorId}/{vehicleId}/itxpt/ota/sales/saleresult/json |
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.
⚠️ Deprecated! Will be removed in a later release. Use pe/sales/saleresult instead.
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}/itxpt/ota/sales/validationresult/json |
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.
⚠️ Deprecated! Will be removed in a later release. Use pe/sales/validationresult instead.
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 | {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",
"cancelled": false,
"connections": [],
"location": {
"latitude": 12.33345,
"longitude": 12.33345
},
"tariffZones": [
"OST:TariffZone:227",
"RUT:TariffZone:1"
]
},
{
"id": "RUT:StopPlace:03010013",
"name": "Jernbanetorget",
"cancelled": false,
"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",
"order": 29,
"journeyRef": "RUT:ServiceJourney:011578-018334-132500-31-2-Weekday-125",
"zoneId": "2b-vest",
"message": {
"no": {
"text": "Ankommer Jernbanetorget"
},
"en": {
"text": "Arriving at Jerbanetorget"
}
}
}
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",
"args": {
"level": "ERROR",
"limit": 10,
"page": 0
}
}
}
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/deviation |
Schema | deviation.json |
Notice to passengers that the bus is approaching a stop.
⚠️ Deprecated! No longer in use. Replaced with Passenger Announcement message.
Accepts the following message:
For display of deviation information to passengers
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"expiryTimestamp": "2017-10-31T08:38:47.749Z",
"message": {
"no": {
"title": "Siste stopp",
"text": "Ruten ender ved Jerbanetorget grunnet parade"
},
"en": {
"title": "Last stop",
"text": "The route ends at Jerbanetorget due to a parade"
}
},
"ref": [
"RUT:Line:31"
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/pe/dpi/announcement |
Schema | announcement.json |
Announcement to the passengers (ad hoc). Message contains a reference to the scope of the message, if applicable. Typically NSR stopplaceid / lineId or similar.
⚠️ Deprecated! No longer in use.
Accepts the following message:
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"expiryTimestamp": "2017-10-31T08:38:47.749Z",
"ref": [
"RUT:StopPlace:03012453"
],
"message": {
"no": {
"text": "afsdf"
},
"en": {
"text": "Lorem ipsum dolor sit amet"
}
}
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/itxpt/ota/tsp/json |
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}/itxpt/ota/dpi/audio/json |
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:
All audio is sent over one topic and message may contain multiple audio segments that must be played in the order listed
{
"eventTimestamp": "2018-11-13T11:40:02.749Z",
"expiryTimestamp": "2018-11-13T08:40:32.749Z",
"type": "ARRIVING",
"ref": "RUT:StopPlace:03012453",
"value": [
{
"encoding": "MP3",
"content": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3...",
"speaker": "PASSENGERS",
"volume": 70
},
{
"encoding": "MP3",
"content": "SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3...",
"speaker": "PASSENGERS",
"volume": 70
}
]
}
Field | Value |
---|---|
Central Topic | {operatorId}/ruter/{vehicleId}/itxpt/ota/dpi/externaldisplay/json |
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}/itxpt/ota/madt/notification/json |
Schema | notification.json |
Notification message sent to the MADT (Multi-Application Driver Terminal) device inside the bus. To be used to inform the bus driver from the Ruter backoffice. The text message may contain the "Line Feed" character (\n), indicating line breaks.
Accepts the following message:
Message to driver
{
"eventTimestamp": "2017-10-31T08:38:02.749Z",
"urgency": "MEDIUM",
"subject": "Lorem ipsum",
"content": "Duis aute irure dolor"
}
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": "1"
}