syntax = "proto3";

import "google/protobuf/any.proto";
import "openflow_13.proto";
import public "logical_device.proto";


option go_package = "github.com/opencord/voltha-go/protos/inter_container";

package voltha;

message StrType {
    string val = 1;
}

message IntType {
    int64 val = 1;
}

message BoolType {
    bool val = 1;
}

message Packet {
    bytes payload = 1;
}

message ErrorCode {
    enum codes {
        UNSUPPORTED_REQUEST = 0;
        INVALID_PARAMETERS = 1;
    }
}

message Error {
    ErrorCode code = 1;
    string reason = 2;
}

enum MessageType {
    REQUEST = 0;
    RESPONSE = 1;
    DEVICE_DISCOVERED=2;
}

message Header {
    string id = 1;
    MessageType type = 2;
    string from_topic = 3;
    string to_topic = 4;
    int64 timestamp = 5;
}

message Argument {
    string key = 1;
    google.protobuf.Any value = 2;
}

message InterContainerMessage {
    Header header = 1;
    google.protobuf.Any body = 2;
}

message InterContainerRequestBody {
    string rpc = 2;
    repeated Argument args = 3;
    bool response_required = 4;
    string reply_to_topic = 5;
}

message InterContainerResponseBody {
    bool success = 1;
    google.protobuf.Any result = 3;
}

message SwitchCapability {
    openflow_13.ofp_desc desc = 1;
    openflow_13.ofp_switch_features switch_features = 2;
}

message PortCapability {
    LogicalPort port = 1;
}

message DeviceDiscovered {
    string id = 1;
    string parent_id = 2;
    string device_type = 3;
}

message InterAdapterMessageType {
    enum Types {
        FLOW_REQUEST = 0;
        FLOW_RESPONSE = 1;
        OMCI_REQUEST = 2;
        OMCI_RESPONSE = 3;
        METRICS_REQUEST = 4;
        METRICS_RESPONSE = 5;
    }
}

message InterAdapterHeader {
    string id = 1;
    InterAdapterMessageType.Types type = 2;
    string from_topic = 3;
    string to_topic = 4;
    string to_device_id = 5;
    string proxy_device_id = 6;
    int64 timestamp = 7;
}

message InterAdapterResponseBody {
    bool status = 1;
    google.protobuf.Any body = 2;
}

message InterAdapterMessage {
    InterAdapterHeader header = 1;
    google.protobuf.Any body = 2;
}