chirpstack_api 3.11.1

ChirpStack Protobuf / gRPC API definitions.
Documentation
syntax = "proto3";

package api;

option go_package = "github.com/brocaar/chirpstack-api/go/v3/as/external/api";
option java_package = "io.chirpstack.api.as.external.api";
option java_multiple_files = true;
option java_outer_classname = "MulticastGroupProto";

import "google/api/annotations.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";


// MulticastGroupService is the service managing multicast-groups.
service MulticastGroupService {
    // Create creates the given multicast-group.
    rpc Create(CreateMulticastGroupRequest) returns (CreateMulticastGroupResponse) {
        option(google.api.http) = {
            post: "/api/multicast-groups"
            body: "*"
        };
    }

    // Get returns a multicast-group given an ID.
    rpc Get(GetMulticastGroupRequest) returns (GetMulticastGroupResponse) {
        option(google.api.http) = {
            get: "/api/multicast-groups/{id}"
        };
    }

    // Update updates the given multicast-group.
    rpc Update(UpdateMulticastGroupRequest) returns (google.protobuf.Empty) {
        option(google.api.http) = {
            put: "/api/multicast-groups/{multicast_group.id}"
            body: "*"
        };
    }

    // Delete deletes a multicast-group given an ID.
    rpc Delete(DeleteMulticastGroupRequest) returns (google.protobuf.Empty) {
        option(google.api.http) = {
            delete: "/api/multicast-groups/{id}"
        };
    }

    // List lists the available multicast-groups.
    rpc List(ListMulticastGroupRequest) returns (ListMulticastGroupResponse) {
        option(google.api.http) = {
            get: "/api/multicast-groups"
        };
    }

    // AddDevice adds the given device to the multicast-group.
    rpc AddDevice(AddDeviceToMulticastGroupRequest) returns (google.protobuf.Empty) {
        option(google.api.http) = {
            post: "/api/multicast-groups/{multicast_group_id}/devices"
            body: "*"
        };
    }

    // RemoveDevice removes the given device from the multicast-group.
    rpc RemoveDevice(RemoveDeviceFromMulticastGroupRequest) returns (google.protobuf.Empty) {
        option(google.api.http) = {
            delete: "/api/multicast-groups/{multicast_group_id}/devices/{dev_eui}"
        };
    }

    // Enqueue adds the given item to the multicast-queue.
    rpc Enqueue(EnqueueMulticastQueueItemRequest) returns (EnqueueMulticastQueueItemResponse) {
        option(google.api.http) = {
            post: "/api/multicast-groups/{multicast_queue_item.multicast_group_id}/queue"
            body: "*"
        };
    }

    // FlushQueue flushes the multicast-group queue.
    rpc FlushQueue(FlushMulticastGroupQueueItemsRequest) returns (google.protobuf.Empty) {
        option(google.api.http) = {
            delete: "/api/multicast-groups/{multicast_group_id}/queue"
        };
    }

    // ListQueue lists the items in the multicast-group queue.
    rpc ListQueue(ListMulticastGroupQueueItemsRequest) returns (ListMulticastGroupQueueItemsResponse) {
        option(google.api.http) = {
            get: "/api/multicast-groups/{multicast_group_id}/queue"
        };
    }
}

enum MulticastGroupType {
    // Class-C.
    CLASS_C = 0;

    // Class-B.
    CLASS_B = 1;
}

message MulticastGroup {
    // ID (string formatted UUID).
    // This will be generated automatically on create.
    string id = 1;

    // Multicast-group name.
    string name = 2;

    // Multicast address (HEX encoded DevAddr).
    string mc_addr = 3;

    // Multicast network session key (HEX encoded AES128 key).
    string mc_nwk_s_key = 4;

    // Multicast application session key (HEX encoded AES128 key).
    string mc_app_s_key = 5;

    // Frame-counter.
    uint32 f_cnt = 6;

    // Multicast type.
    MulticastGroupType group_type = 7;

    // Data-rate.
    uint32 dr = 8;

    // Frequency (Hz).
    uint32 frequency = 9;

    // Ping-slot period.
    // Mandatory for Class-B multicast groups.
    uint32 ping_slot_period = 10;

    // Application ID.
    // After creation, this can not be updated.
    int64 application_id = 12 [json_name = "applicationID"];
}

message MulticastGroupListItem {
    // ID (string formatted UUID).
    string id = 1;

    // Multicast-group name.
    string name = 2;

    // Application ID.
    int64 application_id = 5 [json_name = "applicationID"];

    // Application name.
    string application_name = 6;
}

message CreateMulticastGroupRequest {
    // Multicast-group object to create.
    MulticastGroup multicast_group = 1;
}

message CreateMulticastGroupResponse {
    // ID of created group (string formatted UUID).
    string id = 1;
}

message GetMulticastGroupRequest {
    // ID (string formatted UUID).
    string id = 1;
}

message GetMulticastGroupResponse {
    // Multicast-group object.
    MulticastGroup multicast_group = 1;

    // Created at timestamp.
    google.protobuf.Timestamp created_at = 2;

    // Last update timestamp.
    google.protobuf.Timestamp updated_at = 3;
}

message UpdateMulticastGroupRequest {
    // Multicast-group object to update.
    MulticastGroup multicast_group = 1;
}

message DeleteMulticastGroupRequest {
    // ID (string formatted UUID).
    string id = 1;
}

message AddDeviceToMulticastGroupRequest {
    // Multicast-group ID (string formatted UUID).
    string multicast_group_id = 1 [json_name = "multicastGroupID"];

    // Device EUI (HEX encoded string).
    // Note that the device and the multicast-group must share the same
    // application ID.
    string dev_eui = 2 [json_name = "devEUI"];
}

message RemoveDeviceFromMulticastGroupRequest {
    // Multicast-group ID (string formatted UUID).
    string multicast_group_id = 1 [json_name = "multicastGroupID"];

    // Device EUI (HEX encoded string).
    string dev_eui = 2 [json_name = "devEUI"];
}

message ListMulticastGroupRequest {
    // Max number of items to return.
    int64 limit = 1;

    // Offset in the result-set (for pagination).
    int64 offset = 2;

    // Organization id to filter on.
    int64 organization_id = 3 [json_name = "organizationID"];

    // Device EUI (HEX encoded string) to filter on.
    string dev_eui = 4 [json_name = "devEUI"];

    // Search can be used to search on the multicast-group name.
    string search = 6;

    // Application ID to filter on.
    int64 application_id = 7 [json_name = "applicationID"];
}

message ListMulticastGroupResponse {
    // Total number of multicast-groups.
    int64 total_count = 1;

    repeated MulticastGroupListItem result = 2;
}

message MulticastQueueItem {
    // Multicast-group ID (string formatted UUID).
    string multicast_group_id = 1 [json_name = "multicastGroupID"];

    // Downlink frame-counter.
    // This will be automatically set on enqueue.
    uint32 f_cnt = 2;

    // FPort used (must be > 0).
    uint32 f_port = 3;

    // Base64 encoded data.
    bytes data = 4;
}

message EnqueueMulticastQueueItemRequest {
    // Multicast queue-item object to enqueue.
    MulticastQueueItem multicast_queue_item = 1;
}

message EnqueueMulticastQueueItemResponse {
    // Frame-counter for the enqueued payload.
    uint32 f_cnt = 1;
}

message FlushMulticastGroupQueueItemsRequest {
    // Multicast-group ID (string formatted UUID).
    string multicast_group_id = 1 [json_name = "multicastGroupID"];
}

message ListMulticastGroupQueueItemsRequest {
    // Multicast-group ID (string formatted UUID).
    string multicast_group_id = 1 [json_name = "multicastGroupID"];
}

message ListMulticastGroupQueueItemsResponse {
    repeated MulticastQueueItem multicast_queue_items = 1;
}