Skip to content

Compiler: protobuf.proto

Al Beebe edited this page Nov 3, 2015 · 2 revisions
syntax = "proto3";

package protobuf;

message Enum {
  repeated EnumField fields  = 1;
}

message Extension {
  optional string message      = 1;
  optional MessageField field  = 2;
  repeated Option options      = 3;
}

message EnumField {
  optional string name  = 1;
  optional int32 tag    = 2;
}

message Map {
  optional string key_type    = 1;
  optional string value_type  = 2;
  optional string field       = 3;
  optional int32 tag          = 4;
}

message Message {
  optional string name          = 1;
  repeated MessageField fields  = 2;
  repeated Oneof oneofs        = 3;
  repeated Map maps             = 4;
  repeated Option options       = 5;
  repeated Reserved reserved    = 6;
  repeated int32 extensions     = 7;
}

message MessageField {
  message Rule {
    OPTIONAL = 0;
    REPEATED = 1;
    REQUIRED = 2;
  }

  optional Rule rule         = 1;
  optional string type       = 2;
  optional string name       = 3;
  optional int32 tag         = 4;
  repeated Option options    = 5;
}

message Oneof {
  optional string name          = 1;
  repeated MessageField fields  = 2;
}

message Option {
  optional string key   = 1;
  optional string value  = 2;
}

message Reserved {
  repeated int32 tags    = 1;
  repeated string names  = 2;
}

message ProtoFile {
  optional string syntax      = 1;
  optional string package     = 2;
  repeated Import imports     = 3;
  repeated Option options     = 4;
  repeated Enum enums         = 5;
  repeated Message messages   = 6;
  repeated Extension extends  = 7;
  repeated Service services   = 8;
}

message RPC {
  optional string method    = 1;
  optional string request   = 2;
  optional string response  = 3;
}

message Service {
  optional string name     = 1;
  optional RPC rpc         = 2;
  repeated Option options  = 3;
}
Clone this wiki locally