# Protocol Documentation ## Table of Contents {{range .Files}} {{$file_name := .Name}}- [{{.Name}}](#{{.Name | anchor}}) {{- if .Messages }} {{range .Messages}} - [{{.LongName}}](#{{.FullName | anchor}}) {{end}} {{- end -}} {{- if .Enums }} {{range .Enums}} - [{{.LongName}}](#{{.FullName | anchor}}) {{end}} {{- end -}} {{- if .Extensions }} {{range .Extensions}} - [File-level Extensions](#{{$file_name | anchor}}-extensions) {{end}} {{- end -}} {{- if .Services }} {{range .Services}} - [{{.Name}}](#{{.FullName | anchor}}) {{end}} {{- end -}} {{end}} - [Scalar Value Types](#scalar-value-types) {{range .Files}} {{$file_name := .Name}}
## {{.Name}} {{ .Name | anchor}} {{.Description}} {{range .Messages}} ### {{.LongName}} {{"{#"}}{{ .FullName | anchor}}{{"}"}} {{.Description}} {{if .HasFields}} #| || *Field* | *Type* | *Label* | *Description* || {{range .Fields -}} || {{.Name}} | [{{.LongType}}](#{{.FullType | anchor}}) | {{.Label}} | {{if (index .Options "deprecated"|default false)}}**Deprecated.** {{end}}{{nobr .Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}} || {{end}} |# {{end}} {{if .HasExtensions}} #{ || *Extension* | *Type* | *Base* | *Number* | *Description* || {{range .Extensions -}} || {{.Name}} | {{.LongType}} | {{.ContainingLongType}} | {{.Number}} | {{nobr .Description}}{{if .DefaultValue}} Default: {{.DefaultValue}}{{end}} || {{end}} |# {{end}} {{end}} {{range .Enums}} ### {{.LongName}} {{.Description}} #| || *Name* | *Number* | *Description* || {{range .Values -}} || {{.Name}} | {{.Number}} | {{nobr .Description}} || {{end}} |# {{end}} {{if .HasExtensions}} ### File-level Extensions #| || *Extension* | *Type* | *Base* | *Number* | *Description* || {{range .Extensions -}} || {{.Name}} | {{.LongType}} | {{.ContainingLongType}} | {{.Number}} | {{nobr .Description}}{{if .DefaultValue}} Default: `{{.DefaultValue}}`{{end}} || {{end}} |# {{end}} {{range .Services}} ### {{.Name}} {{.Description}} #| || *Method Name* | *Request Type* | *Response Type* | *Description* || {{range .Methods -}} || {{.Name}} | [{{.RequestLongType}}](#{{.RequestFullType | anchor}}){{if .RequestStreaming}} stream{{end}} | [{{.ResponseLongType}}](#{{.ResponseFullType | anchor}}){{if .ResponseStreaming}} stream{{end}} | {{nobr .Description }} || {{end}} |# {{end}} {{end}} ## Scalar Value Types #| || .proto Type | Notes | C++ | Java | Python | Go | C# | PHP | Ruby || {{range .Scalars -}} || {{.ProtoType}} | {{.Notes}} | {{.CppType}} | {{.JavaType}} | {{.PythonType}} | {{.GoType}} | {{.CSharp}} | {{.PhpType}} | {{.RubyType}} || {{end}} |#