syntax = "proto3";
package org.example;
message SomeMessage {
// Field identifiers reserved after message changes.
reserved 8, 100;
// Many integer types with specific encodings.
int32 aMostlyPositiveInteger = 1;
sint64 aSignedInteger = 2;
uint64 anUnsignedInteger = 3;
fixed32 anOftenBigUnsignedInteger = 4;
sfixed32 anOftenBigSignedInteger = 5;
// String always with UTF 8 encoding.
string aString = 10;
// Another message type.
AnotherMessage aMessage = 111;
// Variable length content supported.
repeated string aStringList = 200;
map <int32, string> aMap = 222;
}
A spectrum of basic types
Packages and nested types
Fields can be repeated
Fields are optional
Explicit field identifiers for versioning