Messages
Chat
Free-text and structured operator communication.
Broadcast
Body —
catl_chat_synthesized.json
MessageTypeEnum_CHAT
Free-text and structured operator communication.
| Direction | any ↔ any |
| Cadence | On demand. |
| Delivery | Broadcast — telemetry plane (QoS 0) |
| Schema | catl/hibw/messages/chat/Chat.json |
| Worked examples | 1 |
Purpose
Operator-level text communication alongside the machine protocol. The model is intentionally extensible; the current draft ships no official JSON example, so a maintained supplementary example demonstrates the shape.
When to send it
- To carry human-readable messages between nodes / operators.
- For out-of-band coordination that isn't a task or world-model change.
Where it fits
Loading diagram…
Message header
Every CATL message carries this envelope header.
| Field | Type | Multiplicity | Description |
|---|---|---|---|
message_type | MessageTypeEnum | [1..1] | An enumeration. |
source | GUID | [1..1] | Source that send this message. Often same as source of information, but different when relaying. |
version | string | [1..1] | Version of the schema used to create and validate this message. Has to follow major.minor.patch notation. For study draft 3 it should be 0.3.0. |
time_sent | Time | [1..1] |
Body — ChatBody
Inherits from catl::hibw::core::chat_model::ChatModel.
| Field | Type | Multiplicity | Description |
|---|---|---|---|
source_of_information (inherited) | GUID | [0..1] | Holds source of information. Its a identifier of a node that provided that information. It can be a node that created a region, task. It can be a node that detected contact or is maintaining track. For self reports it should be same as identifier. |
external_identifiers (inherited) | ExternalSystemIdentifier [] | [0..*] | Holds identifiers of this entity in other systems. |
identifier (inherited) | GUID | [1..1] | Unique identifier for this entity. |
description (inherited) | EntityDescription | [0..1] | Description of this entity. Contains APP6 symbol definition and human readable description. |
extra (inherited) | Any | [0..1] | Placeholder for experimentation. |
timestamp (inherited) | Time | [1..1] | Time in which this entity was last updated. |
time_of_initiation (inherited) | Time | [0..1] | Time when this entity was created or spotted. |
time_of_validity (inherited) | Time | [0..1] | |
reference (inherited) | GUID | [0..1] | Reference to previous chat message, to form threads and replay to stuff. |
text (inherited) | Description | [1..1] | |
author (inherited) | Name | [1..1] | |
destination (inherited) | GUID | [0..1] | Destination identifier. Optional - when not set its to all. |
binding (inherited) | BindingInformationType | [0..1] | |
message_context (inherited) | Reference [] | [0..*] |
Key fields
(extensible)— ChatBody delegates to the ChatModel; structure is defined by the chat model subtypes rather than fixed fields.
Worked examples
Chat Synthesized (supplementary)
✅ validates against catl/hibw/messages/chat/Chat.json. Routes to 4817/exercise-alpha/v0.3.0/src/a895f8f5-46b0-5603-bdf0-b270a2867c09/chat (QoS 0).
{
"header": {
"message_type": "MessageTypeEnum_CHAT",
"source": "a895f8f5-46b0-5603-bdf0-b270a2867c09",
"version": "0.3.0",
"time_sent": "2025-03-18T12:05:00+00:00"
},
"body": {
"identifier": "73efad3c-8336-597c-a3f3-f6ae5b3b3f8e",
"timestamp": "2025-03-18T12:05:00+00:00",
"author": "C2-WATCH",
"text": "All callsigns, RTB now — weather closing in."
}
}Integrate it
The two calls every integrator needs — validate the message, then resolve its MQTT route:
# 1 · fetch a worked Chat example
curl -s https://4817.r2d2.office.ilab.zone/examples/catl_chat_synthesized.json | jq '.message' > msg.json
# 2 · validate it against the 0.3.0 schema
curl -s https://4817.r2d2.office.ilab.zone/validate -H 'content-type: application/json' \
-d "{\"message\": $(cat msg.json)}" | jq '{valid, schema_ref, errors}'
# 3 · resolve where it publishes on MQTT
curl -s "https://4817.r2d2.office.ilab.zone/route" -H 'content-type: application/json' \
-d "{\"message\": $(cat msg.json)}" | jqTry them interactively in the Integration API reference.