Message Header

A message will be sent in realtime whenever a single application has data to report for any of its data channels. Each message will contain a header with information about the device and application sending the message. All messages are in JSON format and all timestamps are reported in ISO 8601 time format and UTC time zone. All IDs are randomly chosen as UUIDv4 and can be expected to be globally unique even between multiple devices. The message layout in this documentation is in an annotated JSON format with comments explaining all included data fields.

General message layout (annotated JSON)
{
    # General information about the device sending the message 
    "device": {
        "uuid":    # UUID of the device
        "name":    # Readable device name (OPTIONAL)
        "version": # Perception software version
    },
    # General information about the application sending the message
    "application": {
        "type":     # Type of application
        "uuid":     # UUID of the application
        "time":     # Time this message was scheduled for sending
        "name":     # Readable name of the application
        "tags":     # List of user-definable tags for this application
        "camera": { # Information about the camera
            "uuid":     # UUID of the camera
            "name":     # Readable name of the camera
            "tags":     # List of user-definable tags for this camera
        }
    },
    # List of data objects
    "data": [
        # ...
    ]
}