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