Skip to content

This IDL is used as part of the protocol for downloading data from the REST API.

Each request transfers data in chunks.

Wire format for each chunk (concatenated in a stream):

Field Bytes Data type Description
prefix 4 signed little-endian int length of header
header prefix protobuf ChunkTransferHeader — including packed_length (of the payload)
payload from header protobuf data list


syntax = "proto3";


option csharp_namespace = "MAT.OCS.RTA.Model.Net.Chunks";

// Header for wire transfer of chunks with the 'application/vnd.mat.protobuf+chunked' media type.
message ChunkTransferHeader {

    // Chunk start time (ns since unix epoch) compared to the previous chunk.
    sint64 chunk_start_time_delta = 1;

    // Chunk duration (nanoseconds) compared to the previous chunk duration.
    // Equal-sized chunks will result in all zeros except for the first chunk, but
    // chunks can also be variable size - in which case this will be negative.
    sint64 chunk_duration_delta = 2;

    // Channel ids, if applicable.
    repeated uint32 channel_ids = 3;

    // Compression mode difference compared to the previous chunk.
    // Chunks are usually compressed-alike so in practice should always be zero after the first chunk.
    int32 compression_delta = 4;

    // Uncompressed length of payload.
    // This indicates the buffer size that should be allocated when unpacking the chunk data.
    int32 unpacked_length = 5;

    // Compressed length of payload.
    // This indicates the length of the data following the header on the wire.
    int32 packed_length = 6;


The compression_delta indicates LZ4=1 on the first chunk if it is used (strongly recommended).