ratman 0.5.0

Ratman types, client, and interface library
// SPDX-FileCopyrightText: 2019-2022 Katharina Fey <kookie@spacekookie.de>
//
// SPDX-License-Identifier: AGPL-3.0-or-later WITH LicenseRef-AppStore

syntax = "proto3";

import "proto/message.proto";

/// A wrapper type for all API messages
message ApiMessage {
        oneof inner {
                Send send = 1;
                Receive recv = 2;
                Setup setup = 3;
                Peers peers = 5;
        }
}

/// API payload to send messages
message Send {
        enum Type {
                DEFAULT = 0;
                FLOOD = 1;
        }

        Type type = 1;
        Message msg = 2;
        bytes scope = 3;
        bool mirror = 4;
}

/// API payload to receive messages
message Receive {
        enum Type {
                DEFAULT = 0;
                FLOOD = 1;
        }
        Type type = 1;
        Message msg = 2;
}

/// API payload to configure Ratman session
message Setup {
        enum Type {
                ONLINE = 0;
                OFFLINE = 1;
                /// Response type sent for a previous Setup message
                ACK = 2;
                ANONYMOUS = 3;
        }
        Type type = 1;
        bytes id = 2;
        bytes token = 3;
}

// API payload to request and fetch current peer list
message Peers {
        enum Type {
                REQ = 0;
                RESP = 1;
                DISCOVER = 2;
        }
        Type type = 1;
        repeated bytes peers = 2;
}