2.15.1.3. Protocol Buffers More Field Types

Oneof Type. 

message AnExampleMessage {
    oneof some_oneof_field {
        int32 some_integer = 1;
        string some_string = 2;
    }
}

Enum Type. 

enum AnEnum {
    INITIAL = 0;
    RED = 1;
    BLUE = 2;
    GREEN = 3;
    WHATEVER = 8;
}

Any Type. 

import "google/protobuf/any.proto";
message AnExampleMessage {
    repeated google.protobuf.Any whatever = 8;
}

Map Type. 

message AnExampleMessage {
    map<int32, string> keywords = 8;
}