Specialized APIsEdge Transportation Exchange

MQTT API

Edge Transportation Exchange - MQTT API 1.1.0 documentation

The Edge Transportation Exchange (ETX) MQTT API provides a message exchange for all V2X communications. It allows clients to participate in the V2X ecosystem to build better and safer transportation. This documentation describes how the MQTT connections can be used for V2X communication in the ETX system.

How to connect to the ETX message exchange

  1. Call the ETX Registration services registration endpoint to request a device ID and certificate package. This ID and certificate will be needed to connect to the ETX message exchange through MQTT.

    • Note: This step is only needed for the very first connection attempt, if the client already has a device ID and a valid certificate, the registration endpoint doesn't have to be invoked.
  2. Call the ETX Registration services connection endpoint to request the MQTT URL for the ETX message exchange. This request will provide the right MQTT endpoint based on client location and network connection type.

  3. Use the credentials to create an MQTT connection to the received URL and start using the message exchange.

MQTT Connections details

  • The ETX system uses MQTT 3.1.1 protocol (v4 in most of the client SDKs).
  • The MQTT connection can only be established over TLS 1.2+ using the certificate provided by the ETX Registration service.
  • The MQTT connection requires that the device ID used as the MQTT client ID. The Device ID is provided by the ETX Registration service.
  • The ETX system supports QoS 0 and QoS 1 messages, but QoS 0 is preferred for most of the messages.
  • Please restrict yourself to publish QoS 1 message for messages that are not repeated and has to be delivered only once.
  • The ETX system does not support QoS 2 messages.
  • Only clean sessions connections are accepted, so QoS 1 messages sent to the client after it disconnected will not be collected and will not be delivered upon reconnection.
  • Retained messages are only supported for the RegionalStatic namespace and the client is responsible for clearing the retained messages.
  • Once the MQTT connection is accepted a Session ID is assigned to the client, which can be used to send targeted messages to the client. The Session ID is a 64-bit number that is unique for each client.
  • The Session ID is only valid for one MQTT session, so when the same client creates a new connection new Session ID will be assigned.

Security

MQTT connections to the ETX system are secured with TLS 1.2. The client needs to provide a valid certificate and private key to connect to the system. The certificate and private key are provided by the ETX Registration service.

The ETX system has an Access Control List (ACL) that defines which clients can publish and subscribe to which topics. The ACL is based on mostly the VendorId, but the ClientType and ClientSubtype parameters can also be considered.

  • The ACL rules are determined by the agreement between the Vendor and Verizon.
  • If a client tries to publish to a topic that it is not authorized to do so, its connection will be terminated. This is according to the MQTT V3.1.1 protocol.
  • If a client tries to subscribe to a topic that it is not authorized to do, the subscription request will be denied and the client will receive a SUBACK message with a return code of 128 (0x80). This is according to the MQTT V3.1.1 standard. It is important to implement proper error handling on the client side as that is the fastest way to learn about ACL related issues.
  • If you ran into ACL related issues and you think that it is not compliant with the agreement or you'd like to extend access to the system. Please contact customer support.

Servers

Message Exchange Server

  • URL: mqtt://imp-{area}{zone}.{environment}-{region}.thingspace.verizon.com:8883/
  • Protocol: mqtt

Endpoint for the V2X message exchange in the Edge Transportation Exchange. V2X clients should connect to this endpoint to send or receive V2X messages.

Note: Clients have to call the ETX Registration Service's connection API to receive the exact URL that they need to use for their connection. As the region and zone variables are determined by the client's geolocation. The call also triggers the authorization of the client's device ID and certificate to the location. Without proper authorization the client will not be able to connect to the message exchange.

URL Variables

NameDescriptionDefault valueAllowed values
environmentThe environment where the client needs to connect. It can be one of the following options:
  • development (dev)
  • quality assurance (qa)
  • staging
  • production (prod) | prod | dev, qa, staging, prod | | area | The area where the client needs to connect based on its geolocation. These are geographical areas within the U.S. (e.g 'bos' - Boston, MA) where the ETX processing nodes are deployed. | None | bos, atl, was, nyc, mia, dfw, iah, chi, clt, dtw, msp, tpa, bna, dal, sfo, las, den, sea, phx, lax | | zone | Defines if the connection is to a Edge zone or to a Cloud zone. The Edge zones are signified as "-wl1". For Cloud zones this parameter remains empty. | None | -wl1, | | region | The AWS region where the client needs to connect. It should be one of the following options:
  • US East (us-east-1)
  • US West (us-west-2)

These regions are where the different ETX processing nodes are connected to. | None | us-east-1, us-west-2 |

Operations

SEND vzimp/1/GeoRelevance/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} Operation

Publish location based messages to all the clients within a targeted geohash regions.

  • Operation ID: publishGeoRelevanceData

The GeoRelevance topic allows a road user to publish their own location based data (location, speed, status, etc.) and retrieve similar data from all clients in the neighboring geohashes. The GeoRelevance area is defined as a 3-by-3 grid of 7-digit geohashes around the client's geohash covering about a 450m by 450m (1500ft) area.

The GeoRelevance channel should be the main communication channel for most road users in the ETX system. Only stationary clients (e.g. traffic lights, road sensors) should use the Regional channel.

All messages that are sent to this channel has to be in the GeoRoutedMsg protocol buffer format. The message should contain the original message in raw binary format, the timestamp when the message was created, and the GPS position where the message should be routed to.

Publishing to the GeoRelevance namespace is used by the road users (e.g. vehicles, mobile phone user, etc.) to share their current location, status or other information they detected with the rest of the ecosystem. For example:

  • a vehicle publishes a BSM message every 100ms to notify applications in the system about their current location and status, so they can provide alerts to the driver
  • a cyclist publishes a PSM message every second to notify applications about their current location and status, so they can provide alerts to the cyclist.

Parameters

NameTypeDescriptionValueConstraintsNotes
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message Geo Routed Message geoRoutedMsg

A message wrapped in GeoRoutedMsg protocol buffer package.

  • Message ID: geoRoutedMsg
  • Content type: protobuf

The Geo Routed Messages should be packaged in the following protocol buffer schema. The descriptions of the fields are in the payload section.


syntax = "proto3"; 



import "google/protobuf/timestamp.proto"; \

package georoutedmsg;

option go_package = "./proto-gen/georoutedmsg;georoutedmsg";

message Position { \
  double latitude = 1; \
  double longitude = 2; \
}

message GeoRoutedMsg {  
  bytes msgBytes = 1; \
  google.protobuf.Timestamp time = 2; \
  optional Position position = 3; \
}
Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
timestringThe timestamp when the message was created.-format (date-time)required
msgBytesstringThe original J2735 ASN.1 type message in raw binary format.-format (binary)required
positionobjectThe GPS position where the message should be routed to.--additional properties are NOT allowed
position.latitudenumberThe latitude of the position used for geo routing-format (double), [ -90 .. 90 ]-
position.longitudenumberThe latitude of the position used for geo routing-format (double), [ -180 .. 180 ]-

Examples of payload (generated)

{
  "time": "2019-08-24T14:15:22Z",
  "msgBytes": "string",
  "position": {
    "latitude": -90,
    "longitude": -180
  }
}

RECEIVE vzimp/1/GeoRelevance/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} Operation

Subscribe to receive location based messages from the system based on the geohash regions.

  • Operation ID: subscribeGeoRelevanceData

The GeoRelevance topic allows a road user to publish their own location based data (location, speed, status, etc.) and retrieve similar data from all clients in the neighboring geohashes. The GeoRelevance area is defined as a 3-by-3 grid of 7-digit geohashes around the client's geohash covering about a 450m by 450m (1500ft) area.

The GeoRelevance channel should be the main communication channel for most road users in the ETX system. Only stationary clients (e.g. traffic lights, road sensors) should use the Regional channel.

All messages that are sent to this channel has to be in the GeoRoutedMsg protocol buffer format. The message should contain the original message in raw binary format, the timestamp when the message was created, and the GPS position where the message should be routed to.

Subscribing to the GeoRelevance namespace is used by road users (e.g. vehicles, mobile phone users, etc.) to receive location based messages from other road users and backend applications. For example:

  • a traffic light controller is subscribed to the GeoRelevance topic to receive SRM messages from the vehicles in the vicinity, so it can adjust the signal timing to avoid congestion.
  • a vehicle is subscribed to GeoRelevance topic to receive RSA or TIM messages about the dangers on the road ahead, so it can adjust its speed or route.

Parameters

NameTypeDescriptionValueConstraintsNotes
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message Geo Routed Message geoRoutedMsg

A message wrapped in GeoRoutedMsg protocol buffer package.

  • Message ID: geoRoutedMsg
  • Content type: protobuf

The Geo Routed Messages should be packaged in the following protocol buffer schema. The descriptions of the fields are in the payload section.


syntax = "proto3"; 



import "google/protobuf/timestamp.proto"; \

package georoutedmsg;

option go_package = "./proto-gen/georoutedmsg;georoutedmsg";

message Position { \
  double latitude = 1; \
  double longitude = 2; \
}

message GeoRoutedMsg {  
  bytes msgBytes = 1; \
  google.protobuf.Timestamp time = 2; \
  optional Position position = 3; \
}
Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
timestringThe timestamp when the message was created.-format (date-time)required
msgBytesstringThe original J2735 ASN.1 type message in raw binary format.-format (binary)required
positionobjectThe GPS position where the message should be routed to.--additional properties are NOT allowed
position.latitudenumberThe latitude of the position used for geo routing-format (double), [ -90 .. 90 ]-
position.longitudenumberThe latitude of the position used for geo routing-format (double), [ -180 .. 180 ]-

Examples of payload (generated)

{
  "time": "2019-08-24T14:15:22Z",
  "msgBytes": "string",
  "position": {
    "latitude": -90,
    "longitude": -180
  }
}

SEND vzimp/1/GeoRelevance/Small/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} Operation

Publish location based messages to all the clients within a targeted geohash regions.

  • Operation ID: publishGeoRelevanceSmallData

The GeoRelevance/Small topic is exactly the same as the GeoRelevance topic, but it provides a smaller coverage area by providing 3-by-3 grid of 8-digit geohashes around the client's geohash covering about a 115m by 57m (380ft by 187ft) area.

Slow moving road user like pedestrians, cyclists, and scooters can use this channel to reduce the number of messages they receive.

Publishing to the GeoRelevance/Small namespace is used by the road users (e.g. pedestrians, cyclists, scooter riders, etc.) to share their current location, status or other information they detected with the rest of the ecosystem. For example:

  • a pedestrian publishes a PSM message every second to notify applications in the system about their current location and status, so they can provide alerts to the pedestrian.

Parameters

NameTypeDescriptionValueConstraintsNotes
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message Geo Routed Message geoRoutedMsg

A message wrapped in GeoRoutedMsg protocol buffer package.

  • Message ID: geoRoutedMsg
  • Content type: protobuf

The Geo Routed Messages should be packaged in the following protocol buffer schema. The descriptions of the fields are in the payload section.


syntax = "proto3"; 



import "google/protobuf/timestamp.proto"; \

package georoutedmsg;

option go_package = "./proto-gen/georoutedmsg;georoutedmsg";

message Position { \
  double latitude = 1; \
  double longitude = 2; \
}

message GeoRoutedMsg {  
  bytes msgBytes = 1; \
  google.protobuf.Timestamp time = 2; \
  optional Position position = 3; \
}
Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
timestringThe timestamp when the message was created.-format (date-time)required
msgBytesstringThe original J2735 ASN.1 type message in raw binary format.-format (binary)required
positionobjectThe GPS position where the message should be routed to.--additional properties are NOT allowed
position.latitudenumberThe latitude of the position used for geo routing-format (double), [ -90 .. 90 ]-
position.longitudenumberThe latitude of the position used for geo routing-format (double), [ -180 .. 180 ]-

Examples of payload (generated)

{
  "time": "2019-08-24T14:15:22Z",
  "msgBytes": "string",
  "position": {
    "latitude": -90,
    "longitude": -180
  }
}

RECEIVE vzimp/1/GeoRelevance/Small/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} Operation

Subscribe to receive location based messages from the system based on the geohash regions.

  • Operation ID: subscribeGeoRelevanceSmallData

The GeoRelevance/Small topic is exactly the same as the GeoRelevance topic, but it provides a smaller coverage area by providing 3-by-3 grid of 8-digit geohashes around the client's geohash covering about a 115m by 57m (380ft by 187ft) area.

Slow moving road user like pedestrians, cyclists, and scooters can use this channel to reduce the number of messages they receive.

Subscribing to the GeoRelevance/Small namespace is used by road users (e.g. pedestrians, cyclists, scooter riders, etc.) to receive location based messages from other road users and backend applications. For example:

  • a pedestrian is subscribed to GeoRelevance/Small topic to receive RSA or TIM messages about the dangers on the road ahead, so it can adjust its speed or route.

Parameters

NameTypeDescriptionValueConstraintsNotes
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message Geo Routed Message geoRoutedMsg

A message wrapped in GeoRoutedMsg protocol buffer package.

  • Message ID: geoRoutedMsg
  • Content type: protobuf

The Geo Routed Messages should be packaged in the following protocol buffer schema. The descriptions of the fields are in the payload section.


syntax = "proto3"; 



import "google/protobuf/timestamp.proto"; \

package georoutedmsg;

option go_package = "./proto-gen/georoutedmsg;georoutedmsg";

message Position { \
  double latitude = 1; \
  double longitude = 2; \
}

message GeoRoutedMsg {  
  bytes msgBytes = 1; \
  google.protobuf.Timestamp time = 2; \
  optional Position position = 3; \
}
Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
timestringThe timestamp when the message was created.-format (date-time)required
msgBytesstringThe original J2735 ASN.1 type message in raw binary format.-format (binary)required
positionobjectThe GPS position where the message should be routed to.--additional properties are NOT allowed
position.latitudenumberThe latitude of the position used for geo routing-format (double), [ -90 .. 90 ]-
position.longitudenumberThe latitude of the position used for geo routing-format (double), [ -180 .. 180 ]-

Examples of payload (generated)

{
  "time": "2019-08-24T14:15:22Z",
  "msgBytes": "string",
  "position": {
    "latitude": -90,
    "longitude": -180
  }
}

SEND vzimp/1/Private/{receiverSessionID}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} Operation

⚠️ [DEPRECATED] Send personalized messages to a specific client. Use publishDirectData instead.

  • Operation ID: publishPrivateData

⚠️ Deprecated. Use the Direct topic instead. The Private namespace has been replaced by the Direct namespace, which provides identical functionality with a clearer name. New integrations should use the Direct topic.

The Private namespace is a dedicated one way channel of communication between two registered ETX clients. It is used for sending targeted messages to specific clients that do not need to be broadcasted. It is mainly intended for downstream communication (e.g. from backend software to roadside clients). The messages that are sent to this channel are only delivered to the client that is specified in the topic parameter.

⚠️ Deprecated. Use the publishDirectData operation and the Direct topic instead. The Direct topic provides identical functionality and is the preferred channel for all new integrations.

Publishing to the Private namespace is used by backend services to send personalized alerts to road users. For example:

  • a collision avoidance application is subscribed to a Regional topic when it discovers an accident is about to occur, so it sends an emergency message through the private channel to the vehicles involved.

Parameters

NameTypeDescriptionValueConstraintsNotes
receiverSessionIDstringThe session ID of the receiving party. The receiver's session ID can be acquired from a subscription topic. For example subscribe to "vzimp/1/GeoRelevance/+/+/+/j2735_gr/BSM/+" and the session ID will be the last part of the topic. If you want to send a message to your own client please use the ClientInfo topic subscription.--required
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Channel extensions

NameTypeDescriptionValueConstraintsNotes
x-deprecated--"true"--

Operation extensions

NameTypeDescriptionValueConstraintsNotes
x-deprecated--"true"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

RECEIVE vzimp/1/Private/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} Operation

⚠️ [DEPRECATED] Subscribe to receive personalized messages from a specific client. Use subscribeDirectData instead.

  • Operation ID: subscribePrivateData

⚠️ Deprecated. Use the Direct topic instead. The Private namespace has been replaced by the Direct namespace, which provides identical functionality with a clearer name. New integrations should use the Direct topic.

The Private namespace is a dedicated one way channel of communication between two registered ETX clients. It is used for sending targeted messages to specific clients that do not need to be broadcasted. It is mainly intended for downstream communication (e.g. from backend software to roadside clients). The messages that are sent to this channel are only delivered to the client that is specified in the topic parameter.

⚠️ Deprecated. Use the subscribeDirectData operation and the Direct topic instead. The Direct topic provides identical functionality and is the preferred channel for all new integrations.

Subscribing to the Private namespace is used by the ETX clients to receive personalized messages from the backend services. For example:

  • a vehicle is subscribed to the private topic when it receives a message from the collision avoidance application that a collision might occur if you follow the current trajectory.

Parameters

NameTypeDescriptionValueConstraintsNotes
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Channel extensions

NameTypeDescriptionValueConstraintsNotes
x-deprecated--"true"--

Operation extensions

NameTypeDescriptionValueConstraintsNotes
x-deprecated--"true"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

SEND vzimp/1/Direct/{receiverSessionID}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} Operation

Send targeted messages directly to a specific client.

  • Operation ID: publishDirectData

The Direct namespace is the preferred channel for sending targeted messages to a specific ETX client. It replaces the deprecated Private namespace and provides the same functionality with a clearer name.

The Direct namespace is a dedicated one way channel of communication between two registered ETX clients. It is used for sending targeted messages to specific clients that do not need to be broadcasted. It is mainly intended for downstream communication (e.g. from backend software to roadside clients). The messages that are sent to this channel are only delivered to the client that is specified in the topic parameter.

Publishing to the Direct namespace is used by backend services to send targeted messages to a specific road user. This is the preferred channel for all new integrations, replacing the deprecated Private topic.

The Direct topic works by addressing the receiver's session ID in the topic, ensuring the message is delivered only to that specific client. For example:

  • a collision avoidance application discovers an imminent accident and sends an emergency alert directly to the vehicles involved via their session IDs.
  • a backend application sends a route update or personalized instruction to a specific vehicle without broadcasting to all clients in a region.

Parameters

NameTypeDescriptionValueConstraintsNotes
receiverSessionIDstringThe session ID of the receiving party. The receiver's session ID can be acquired from a subscription topic. For example subscribe to "vzimp/1/GeoRelevance/+/+/+/j2735_gr/BSM/+" and the session ID will be the last part of the topic. If you want to send a message to your own client please use the ClientInfo topic subscription.--required
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

RECEIVE vzimp/1/Direct/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} Operation

Subscribe to receive targeted messages sent directly to this client.

  • Operation ID: subscribeDirectData

The Direct namespace is the preferred channel for receiving targeted messages sent to this client. It replaces the deprecated Private namespace and provides the same functionality with a clearer name.

The Direct namespace is a dedicated one way channel of communication between two registered ETX clients. It is used for sending targeted messages to specific clients that do not need to be broadcasted. It is mainly intended for downstream communication (e.g. from backend software to roadside clients). The messages that are sent to this channel are only delivered to the client that is specified in the topic parameter.

Subscribing to the Direct namespace is used by ETX clients to receive targeted messages sent specifically to them by backend services. This is the preferred channel for all new integrations, replacing the deprecated Private topic.

A client's session ID is included in the publish topic by the sender to address a message to that specific client. For example:

  • a vehicle subscribes to the Direct topic to receive emergency alerts from a collision avoidance application when a collision risk is detected.
  • a roadside unit subscribes to the Direct topic to receive configuration updates or instructions from a backend management service.

Parameters

NameTypeDescriptionValueConstraintsNotes
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

RECEIVE vzimp/1/ClientInfo Operation

Subscribe to receive the session ID of the client.

  • Operation ID: subscribeClientInfo

The ClientInfo namespace is a dedicated one way channel for clients to receive their session ID after their connection has been established. The session ID is a 64-bit number that is unique for each client and each MQTT session, so it is different every time a client creates a connection.

Note: The session ID can help to debug any connection or message related issues. So it is recommended to implement the session ID retrieval in the your client code.

Subscribing to the ClientInfo namespace is used by the clients to receive their session ID. Upon subscription the client will receive a JSON message containing the session ID. The message is not repeated, so after it was received the subscription can be closed.

Message Client Info Message ClientInfoMessage

The message that contains the session ID of the client.

This message contains a JSON object with a single key-value pair containing the session ID of the client.

Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
sessionIDinteger--format (int64)required

Examples of payload (generated)

{
  "sessionID": 0
}

SEND vzimp/1/Regional/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} Operation

Publish real time location based messages to all the clients within a targeted geohash regions.

  • Operation ID: publishRegionalData

The Regional namespace is a communal topic where all the location based, real-time messages from clients get shared in the ecosystem. The messages here are partitioned into a rectangular grid based on Geohashes.

The Regional namespace allows clients to send any type of messages to any Geohash, which can be specified in the topic parameter. These messages will be routed to all of the subscribers in that region.

Publishing to the Regional namespace is commonly used for infrastructure services to send messages that need to be broadcasted to a region. For example:

  • a traffic light service might want to send a SPAT message to all the cars within a Geohash region that surrounds an intersection;
  • a local road authority might want to send RSA messages to all the cars to notify them of an evolving roadside situation (e.g. congestion, accidents).

Note: The message sent through the Regional namespace should be in QoS 0 or QoS 1 and should not be retained.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

RECEIVE vzimp/1/Regional/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} Operation

Subscribe to receive real time data from the system based on the geohash regions.

  • Operation ID: subscribeRegionalData

The Regional namespace is a communal topic where all the location based, real-time messages from clients get shared in the ecosystem. The messages here are partitioned into a rectangular grid based on Geohashes.

The Regional namespace allows clients to send any type of messages to any Geohash, which can be specified in the topic parameter. These messages will be routed to all of the subscribers in that region.

Subscribing to the Regional namespace is commonly used for backend services to perform real-time analysis of all the messages within a region. For example:

  • a collision avoidance application might want to analyze all the messages coming into an intersection to calculate the likelihood of an accident occurring in real-time.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

SEND vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VehicleDensity Operation

Write real time vehicle density messages to all the clients within a targeted geohash regions.

  • Operation ID: publishVehicleDensityData

This is a subtopic within the Regional namespace where the vehicle density messages are published. The vehicle density messages are in JSON format containing the number of vehicles (the number of BSM providers) in the given geohash.

The vehicle density messages are generated for 6, 7, and 8-digit geohashes, where vehicles are present in the ETX system (BSM messages are published within the geohash). If there are no vehicle in a given geohash, 0 count message will not be sent out.

The VehicleDensity topic is used by the Density application to publish the vehicle density messages. These messages contain the number of vehicles (the number of BSM providers) in a given geohash.

Writing to the topic is only allowed for the Density application.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message Vehicle Density Message vehicleDensityMessage

The vehicle density message. It contains the number of BSM providers (vehicles) within a geohash.

Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
GeoHashstring--pattern (^\w{6,8}$)required
VehicleCountinteger--format (int32), [ 1 .. 100000 ]required

Examples of payload (generated)

{
  "GeoHash": "string",
  "VehicleCount": 1
}

RECEIVE vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VehicleDensity/{sessionID} Operation

Receive real time vehicle density data from clients based on subscribed geohash regions.

  • Operation ID: subscribeVehicleDensityData

This is a subtopic within the Regional namespace where the vehicle density messages are published. The vehicle density messages are in JSON format containing the number of vehicles (the number of BSM providers) in the given geohash.

The vehicle density messages are generated for 6, 7, and 8-digit geohashes, where vehicles are present in the ETX system (BSM messages are published within the geohash). If there are no vehicle in a given geohash, 0 count message will not be sent out.

Subscribing to the VehicleDensity topic is used by the ETX clients to receive the vehicle density messages. These messages contain the number of vehicles (the number of BSM providers) in the given geohash.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message Vehicle Density Message vehicleDensityMessage

The vehicle density message. It contains the number of BSM providers (vehicles) within a geohash.

Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
GeoHashstring--pattern (^\w{6,8}$)required
VehicleCountinteger--format (int32), [ 1 .. 100000 ]required

Examples of payload (generated)

{
  "GeoHash": "string",
  "VehicleCount": 1
}

SEND vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VruDensity Operation

Write real time VRU density messages to all the clients within a targeted geohash regions.

  • Operation ID: publishVRUDensityData

This is a subtopic within the Regional topic group where the vulnerable road user (VRU) density messages are published. The VRU density messages are JSON messages containing the number of VRUs (the number of PSM providers) in the given geohash.

The VRU density messages are generated for 6, 7, and 8-digit geohashes, where vehicles are present in the ETX system (PSM messages are published within the geohash). If there are no VRUs in a given geohash, 0 count message will not be sent out.

The VRUDensity topic is used by the Density application to publish the VRU density messages. These messages contain the number of VRUs (the number of PSM providers) in a given geohash.

Writing to the topic is only allowed for the Density application.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message VRU Density Message vruDensityMessage

The vulnerable road user (VRU) density message. It contains the number of PSM providers (VRU) within a geohash.

Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
GeoHashstring--pattern (^\w{6,8}$)required
VruCountinteger--format (int32), [ 1 .. 100000 ]required

Examples of payload (generated)

{
  "GeoHash": "string",
  "VruCount": 1
}

RECEIVE vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VruDensity/{sessionID} Operation

Receive real time VRU density data from clients based on subscribed geohash regions.

  • Operation ID: subscribeVRUDensityData

This is a subtopic within the Regional topic group where the vulnerable road user (VRU) density messages are published. The VRU density messages are JSON messages containing the number of VRUs (the number of PSM providers) in the given geohash.

The VRU density messages are generated for 6, 7, and 8-digit geohashes, where vehicles are present in the ETX system (PSM messages are published within the geohash). If there are no VRUs in a given geohash, 0 count message will not be sent out.

Subscribing to the VRUDensity topic is used by the ETX clients to receive the VRU density messages. These messages contain the number of VRUs (the number of PSM providers) in the given geohash.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required
sessionIDstringThe session ID associated with the sender of the message. Note: Please use '+' for this parameter. Since the session ID can change frequently it is not recommended to use a specific session ID in a subscription topic.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"0"--
retain--"false"--

Message VRU Density Message vruDensityMessage

The vulnerable road user (VRU) density message. It contains the number of PSM providers (VRU) within a geohash.

Payload
NameTypeDescriptionValueConstraintsNotes
(root)object---additional properties are NOT allowed
GeoHashstring--pattern (^\w{6,8}$)required
VruCountinteger--format (int32), [ 1 .. 100000 ]required

Examples of payload (generated)

{
  "GeoHash": "string",
  "VruCount": 1
}

SEND vzimp/1/RegionalStatic/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} Operation

Publish persistent messages to all the clients within a targeted geohash regions.

  • Operation ID: publishRegionalStaticData

The RegionalStatic namespace is a communal topic used to share persistent messages in the ecosystem. Persistence here refers to the MQTT retain feature where messages will be stored on a topic permanently, so that subscribers to the topic can retrieve the message at any point of time. The RegionalStatic namespace allows clients to publish any type of messages to any Geohash, which can be specified in the topic parameter. These messages will be routed to all the subscribers in that region.

Publishing to the RegionalStatic namespace is commonly used for backend services to broadcast messages that are relevant for a longer period of time. For example:

  • a map vendor service might want to send lane level MAP messages to all the cars to notify them how to maneuver;
  • a local road authority might want to send RSA messages to alert them of a scheduled road maintenance.

The publisher must also track of the retain messages it has published as the message is kept in the system forever if no further action is taken. A publisher to the RegionalStatic namespace can remove the message from the topic by sending an empty message to the topic where the message resides.

Note: When publishing to the RegionalStatic namespace, the session ID segment of the topic is automatically set to 0 by the ETX system, regardless of the sender's actual session ID. This ensures retained messages are not duplicated when the publisher reconnects with a new session ID and stops clients from trying to reach publishers that are no longer connected to the system. Retained messages allow publishers to disconnect because the system persists their messages.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

RECEIVE vzimp/1/RegionalStatic/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} Operation

Subscribe to receive persistent data from the system based on the geohash regions.

  • Operation ID: subscribeRegionalStaticData

The RegionalStatic namespace is a communal topic used to share persistent messages in the ecosystem. Persistence here refers to the MQTT retain feature where messages will be stored on a topic permanently, so that subscribers to the topic can retrieve the message at any point of time.

The RegionalStatic namespace allows clients to publish any type of messages to any Geohash, which can be specified in the topic parameter. These messages will be routed to all the subscribers in that region.

Note: For RegionalStatic topics, the session ID in the topic is fixed to 0 instead of the sender's actual session ID. This prevents duplicate retained entries from being created when the sender's session ID changes between connections and stops clients from trying to reach publishers that are no longer connected to the system. Retained messages allow the publishers to disconnect because the system persists their messages.

Subscribing to the RegionalStatic namespace is commonly used for backend services to receive messages that are relevant for a longer period of time. For example:

  • a map vendor service might want to receive lane level MAP messages to all the cars to notify them how to maneuver;
  • a local road authority might want to receive RSA messages to alert them of a scheduled road maintenance.

Parameters

NameTypeDescriptionValueConstraintsNotes
geohashstringThe Geohashes that the message is associated with. This is a slash delimited topic string with 8 geohash characters (e.g. 1/2/3/4/5/6/7/8). Wildcard subscriptions are supported on the 7- and 8-digit geohash level, so a client can subscribe to all 32 8-digit geohashes within a 7-digit geohash by using the standard MQTT '+' wildcard: 1/2/3/4/5/6/7/+. This can also be done for the 6-digit geohash and subscribe to all 1024 geohashes: 1/2/3/4/5/6/+/+. These type of subscriptions also include the wide area messages (see the definition below). Note that wildcard publishing is not supported. Wide area publishing or subscription are supported on the 6- and 7-digit geohash level. This function allows the client to send or receive messages at a specific geohash level. For this the client needs to use the dash '-' character in the geohash. For example, messages published with 1/2/3/4/5/6/7/- geohash will only be available with subscriptions to 1/2/3/4/5/6/7/+ or 1/2/3/4/5/6/7/-. The same can be done for 6-digit geohash messages: 1/2/3/4/5/6/-/-. Note the wide area publishing and subscription is hierarchical. If a dash '-' is included in the geohash description all further geohash levels are need to be dash as well. So, publishing or subscribing to 1/2/3/4/5/6/-/8 it not supported.--required
clientTypestringThe type of the client that is to be registered. This is one of the major traffic participant groups considered in V2X communication. The system uses this value to define which topics the client will be able to publish and subscribe to. Values: - Vehicle - Vehicle with an enclosure around the passengers. (Subtypes: PassengerCar, Truck, Bus, EmergencyVehicle, SchoolBus, MaintenanceVehicle) - VulnerableRoadUser - Traffic participants without a protecting enclosure. (Subtypes: Motorcycle, Bicycle, Pedestrian, Scooter) - TrafficLightController - A Traffic light controller system. (Subtypes: NA) - InfrastructureSensor - Sensors that are deployed in the infrastructure. (Subtypes: RoadSideUnit, Camera, Lidar, Radar, InductiveLoop, MagneticSensor) - OnboardSensor - Sensors that are onboard on a vehicle(Subtypes: Camera, Lidar, Radar) - Software - A software system or application. (Subtypes: Platform, Application, NA)allowed ("Vehicle", "VulnerableRoadUser", "TrafficLightController", "InfrastructureSensor", "OnboardSensor", "Software")-required
clientSubtypestringThe subtype or subgroup of the client type. This further specifies the client type. For example it will specify if the client is a passenger car or a truck. See the ClientType description for the supported Subtypes for each client type.allowed ("PassengerCar", "Truck", "Bus", "EmergencyVehicle", "SchoolBus", "MaintenanceVehicle", "Pedestrian", "Bicycle", "Scooter", "Motorcycle", "RoadSideUnit", "Camera", "Lidar", "Radar", "InductiveLoop", "MagneticSensor", "Platform", "Application", "NA")-required
vendorIdstringThe vendor ID that the client belongs to or "Public". E.g. Verizon, GM, Ford, etc. The "Public" vendor ID should be used for messages that are meant to be available for all clients in the system. This is used for messages that are not specific to a vendor and typically carry safety information such as BSM, PSM, RSA, or TIM messages. PLease note that this is the typical usage, but there is no restriction on what message types can be published under the "Public" vendor, so other messages like SPAT and MAP messages can also be delivered under the "Public" vendor ID. All clients that are part of the ETX ecosystem can Publish and Subscribe to the "Public" vendor ID messages.--required
messageFormatstringThe encoding of the message (e.g. j2735, protobuf, json, Avro, etc.). If the message is encapsulated within a GeoRoutedMsg protocol buffer wrapper, append _gr to the message format (e.g. j2735 => j2735_gr). Note: ETX prefers the j2735_gr encoding and only vendor specific message types are allowed to be published in different message formats.--required
messageTypestringThe type of message. This can be any of the standard V2X messages specified in the SAE J2735 standard (e.g. BSM, PSM, RSA, TIM, MAP, SPAT, etc.), or it can be a vendor specific message type that is not defined by the standard.--required
sessionIDstringFor RegionalStatic topics, the session ID is fixed to 0 instead of the sender's actual session ID. This prevents duplicate retained entries from being created when the sender's session ID changes between connections and stops clients from trying to reach publishers that are no longer connected to the system. Retained messages allow publishers to disconnect because the system persists their messages. Note: Please use '+' or '0' for this parameter when subscribing to RegionalStatic topics.--required

mqtt Operation specific information

NameTypeDescriptionValueConstraintsNotes
qos--"1"--
retain--"true"--

Message V2X Message V2xMessage

The V2X message that is transferred through the ETX system. It is encoded in the format specified in the {messageFormat} topic parameter.

Most V2X standards uses ASN.1 encoding, but the ETX system can support any other encoding type that the sender and receiver are agreed upon.

The message can be a standard V2X message for example:

  • BSM, PSM, RSA, SPAT, etc. from the SAE standard
  • CAM, DENM from the ETSI standard These should be in ASN.1 formatted required by the standard.

However, the message can also be a vendor specific message type.

On this page

How to connect to the ETX message exchangeMQTT Connections detailsSecurityServersMessage Exchange ServerURL VariablesOperationsSEND vzimp/1/GeoRelevance/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} OperationParametersmqtt Operation specific informationMessage Geo Routed Message geoRoutedMsgPayloadRECEIVE vzimp/1/GeoRelevance/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} OperationParametersmqtt Operation specific informationMessage Geo Routed Message geoRoutedMsgPayloadSEND vzimp/1/GeoRelevance/Small/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} OperationParametersmqtt Operation specific informationMessage Geo Routed Message geoRoutedMsgPayloadRECEIVE vzimp/1/GeoRelevance/Small/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} OperationParametersmqtt Operation specific informationMessage Geo Routed Message geoRoutedMsgPayloadSEND vzimp/1/Private/{receiverSessionID}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} OperationParametersmqtt Operation specific informationChannel extensionsOperation extensionsMessage V2X Message V2xMessageRECEIVE vzimp/1/Private/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} OperationParametersmqtt Operation specific informationChannel extensionsOperation extensionsMessage V2X Message V2xMessageSEND vzimp/1/Direct/{receiverSessionID}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} OperationParametersmqtt Operation specific informationMessage V2X Message V2xMessageRECEIVE vzimp/1/Direct/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} OperationParametersmqtt Operation specific informationMessage V2X Message V2xMessageRECEIVE vzimp/1/ClientInfo OperationMessage Client Info Message ClientInfoMessagePayloadSEND vzimp/1/Regional/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} OperationParametersmqtt Operation specific informationMessage V2X Message V2xMessageRECEIVE vzimp/1/Regional/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} OperationParametersmqtt Operation specific informationMessage V2X Message V2xMessageSEND vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VehicleDensity OperationParametersmqtt Operation specific informationMessage Vehicle Density Message vehicleDensityMessagePayloadRECEIVE vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VehicleDensity/{sessionID} OperationParametersmqtt Operation specific informationMessage Vehicle Density Message vehicleDensityMessagePayloadSEND vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VruDensity OperationParametersmqtt Operation specific informationMessage VRU Density Message vruDensityMessagePayloadRECEIVE vzimp/1/Regional/{geohash}/Software/Application/Public/JSON/VruDensity/{sessionID} OperationParametersmqtt Operation specific informationMessage VRU Density Message vruDensityMessagePayloadSEND vzimp/1/RegionalStatic/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType} OperationParametersMessage V2X Message V2xMessageRECEIVE vzimp/1/RegionalStatic/{geohash}/{clientType}/{clientSubtype}/{vendorId}/{messageFormat}/{messageType}/{sessionID} OperationParametersmqtt Operation specific informationMessage V2X Message V2xMessage