google/protobuf/type.proto
syntax = "proto3";
package google.protobuf;
import "google/protobuf/any.proto";
import "google/protobuf/source_context.proto";
message Type {
string name = 1;
repeated Field fields = 2;
repeated string oneofs = 3;
repeated Option options = 4;
SourceContext source_context = 5;
Syntax syntax = 6;
}
message Field {
Kind kind = 1;
Cardinality cardinality = 2;
int32 number = 3;
string name = 4;
string type_url = 6;
int32 oneof_index = 7;
bool packed = 8;
repeated Option options = 9;
string json_name = 10;
string default_value = 11;
enum Kind {
TYPE_UNKNOWN = 0;
TYPE_DOUBLE = 1;
TYPE_FLOAT = 2;
TYPE_INT64 = 3;
TYPE_UINT64 = 4;
TYPE_INT32 = 5;
TYPE_FIXED64 = 6;
TYPE_FIXED32 = 7;
TYPE_BOOL = 8;
TYPE_STRING = 9;
TYPE_GROUP = 10;
TYPE_MESSAGE = 11;
TYPE_BYTES = 12;
TYPE_UINT32 = 13;
TYPE_ENUM = 14;
TYPE_SFIXED32 = 15;
TYPE_SFIXED64 = 16;
TYPE_SINT32 = 17;
TYPE_SINT64 = 18;
}
enum Cardinality {
CARDINALITY_UNKNOWN = 0;
CARDINALITY_OPTIONAL = 1;
CARDINALITY_REQUIRED = 2;
CARDINALITY_REPEATED = 3;
}
}
message Enum {
string name = 1;
repeated EnumValue enumvalue = 2;
repeated Option options = 3;
SourceContext source_context = 4;
Syntax syntax = 5;
}
message EnumValue {
string name = 1;
int32 number = 2;
repeated Option options = 3;
}
message Option {
string name = 1;
Any value = 2;
}
enum Syntax {
SYNTAX_PROTO2 = 0;
SYNTAX_PROTO3 = 1;
}