syntax = "proto3";

package schema;

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

// Contains the name and content of a *.proto file
message ProtoFile {
    string file_name = 1;  // name of proto file
    string proto = 2;  // content of proto file
    bytes descriptor = 3;  // compiled descriptor for proto (zlib compressed)
}

// Proto files and compiled descriptors for this interface
message Schemas {

    // Proto files
    repeated ProtoFile protos = 1;

    // Proto file name from which swagger.json shall be generated
    string swagger_from = 2;

    // Proto file name from which yang schemas shall be generated
    string yang_from = 3;
}

// Schema services
service SchemaService {

    // Return active grpc schemas
    rpc GetSchema(google.protobuf.Empty) returns (Schemas) {
        option (google.api.http) = {
            get: "/schema"
        };
    }

}
