Documentation ¶
Index ¶
- Variables
- type Api
- func (*Api) Descriptor() ([]byte, []int)deprecated
- func (x *Api) GetMethods() []*Method
- func (x *Api) GetMixins() []*Mixin
- func (x *Api) GetName() string
- func (x *Api) GetOptions() []*typepb.Option
- func (x *Api) GetSourceContext() *sourcecontextpb.SourceContext
- func (x *Api) GetSyntax() typepb.Syntax
- func (x *Api) GetVersion() string
- func (*Api) ProtoMessage()
- func (x *Api) ProtoReflect() protoreflect.Message
- func (x *Api) Reset()
- func (x *Api) String() string
- type Method
- func (*Method) Descriptor() ([]byte, []int)deprecated
- func (x *Method) GetName() string
- func (x *Method) GetOptions() []*typepb.Option
- func (x *Method) GetRequestStreaming() bool
- func (x *Method) GetRequestTypeUrl() string
- func (x *Method) GetResponseStreaming() bool
- func (x *Method) GetResponseTypeUrl() string
- func (x *Method) GetSyntax() typepb.Syntax
- func (*Method) ProtoMessage()
- func (x *Method) ProtoReflect() protoreflect.Message
- func (x *Method) Reset()
- func (x *Method) String() string
- type Mixin
Constants ¶
This section is empty.
Variables ¶
var File_google_protobuf_api_proto protoreflect.FileDescriptor
Functions ¶
This section is empty.
Types ¶
type Api ¶
type Api struct { // The fully qualified name of this interface, including package name // followed by the interface's simple name. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // The methods of this interface, in unspecified order. Methods []*Method `protobuf:"bytes,2,rep,name=methods,proto3" json:"methods,omitempty"` // Any metadata attached to the interface. Options []*typepb.Option `protobuf:"bytes,3,rep,name=options,proto3" json:"options,omitempty"` // A version string for this interface. If specified, must have the form // `major-version.minor-version`, as in `1.10`. If the minor version is // omitted, it defaults to zero. If the entire version field is empty, the // major version is derived from the package name, as outlined below. If the // field is not empty, the version in the package name will be verified to be // consistent with what is provided here. // // The versioning schema uses [semantic // versioning](http://semver.org) where the major version number // indicates a breaking change and the minor version an additive, // non-breaking change. Both version numbers are signals to users // what to expect from different versions, and should be carefully // chosen based on the product plan. // // The major version is also reflected in the package name of the // interface, which must end in `v<major-version>`, as in // `google.feature.v1`. For major versions 0 and 1, the suffix can // be omitted. Zero major versions must only be used for // experimental, non-GA interfaces. // // Version string `protobuf:"bytes,4,opt,name=version,proto3" json:"version,omitempty"` // Source context for the protocol buffer service represented by this // message. SourceContext *sourcecontextpb.SourceContext `protobuf:"bytes,5,opt,name=source_context,json=sourceContext,proto3" json:"source_context,omitempty"` // Included interfaces. See [Mixin][]. Mixins []*Mixin `protobuf:"bytes,6,rep,name=mixins,proto3" json:"mixins,omitempty"` // The source syntax of the service. Syntax typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"` // contains filtered or unexported fields }
Api is a light-weight descriptor for an API Interface.
Interfaces are also described as "protocol buffer services" in some contexts, such as by the "service" keyword in a .proto file, but they are different from API Services, which represent a concrete implementation of an interface as opposed to simply a description of methods and bindings. They are also sometimes simply referred to as "APIs" in other contexts, such as the name of this message itself. See https://cloud.google.com/apis/design/glossary for detailed terminology.
func (*Api) Descriptor
deprecated
func (*Api) GetMethods ¶
func (*Api) GetOptions ¶
func (*Api) GetSourceContext ¶
func (x *Api) GetSourceContext() *sourcecontextpb.SourceContext
func (*Api) GetVersion ¶
func (*Api) ProtoMessage ¶
func (*Api) ProtoMessage()
func (*Api) ProtoReflect ¶
func (x *Api) ProtoReflect() protoreflect.Message
type Method ¶
type Method struct { // The simple name of this method. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // A URL of the input message type. RequestTypeUrl string `protobuf:"bytes,2,opt,name=request_type_url,json=requestTypeUrl,proto3" json:"request_type_url,omitempty"` // If true, the request is streamed. RequestStreaming bool `protobuf:"varint,3,opt,name=request_streaming,json=requestStreaming,proto3" json:"request_streaming,omitempty"` // The URL of the output message type. ResponseTypeUrl string `protobuf:"bytes,4,opt,name=response_type_url,json=responseTypeUrl,proto3" json:"response_type_url,omitempty"` // If true, the response is streamed. ResponseStreaming bool `protobuf:"varint,5,opt,name=response_streaming,json=responseStreaming,proto3" json:"response_streaming,omitempty"` // Any metadata attached to the method. Options []*typepb.Option `protobuf:"bytes,6,rep,name=options,proto3" json:"options,omitempty"` // The source syntax of this method. Syntax typepb.Syntax `protobuf:"varint,7,opt,name=syntax,proto3,enum=google.protobuf.Syntax" json:"syntax,omitempty"` // contains filtered or unexported fields }
Method represents a method of an API interface.
func (*Method) Descriptor
deprecated
func (*Method) GetOptions ¶
func (*Method) GetRequestStreaming ¶
func (*Method) GetRequestTypeUrl ¶
func (*Method) GetResponseStreaming ¶
func (*Method) GetResponseTypeUrl ¶
func (*Method) ProtoMessage ¶
func (*Method) ProtoMessage()
func (*Method) ProtoReflect ¶
func (x *Method) ProtoReflect() protoreflect.Message
type Mixin ¶
type Mixin struct { // The fully qualified name of the interface which is included. Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` // If non-empty specifies a path under which inherited HTTP paths // are rooted. Root string `protobuf:"bytes,2,opt,name=root,proto3" json:"root,omitempty"` // contains filtered or unexported fields }
Declares an API Interface to be included in this interface. The including interface must redeclare all the methods from the included interface, but documentation and options are inherited as follows:
- If after comment and whitespace stripping, the documentation string of the redeclared method is empty, it will be inherited from the original method.
- Each annotation belonging to the service config (http, visibility) which is not set in the redeclared method will be inherited.
- If an http annotation is inherited, the path pattern will be modified as follows. Any version prefix will be replaced by the version of the including interface plus the [root][] path if specified.
Example of a simple mixin:
package google.acl.v1; service AccessControl { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v1/{resource=**}:getAcl"; } } package google.storage.v2; service Storage { rpc GetAcl(GetAclRequest) returns (Acl); // Get a data record. rpc GetData(GetDataRequest) returns (Data) { option (google.api.http).get = "/v2/{resource=**}"; } }
Example of a mixin configuration:
apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl
The mixin construct implies that all methods in `AccessControl` are also declared with same name and request/response types in `Storage`. A documentation generator or annotation processor will see the effective `Storage.GetAcl` method after inherting documentation and annotations as follows:
service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v2/{resource=**}:getAcl"; } ... }
Note how the version in the path pattern changed from `v1` to `v2`.
If the `root` field in the mixin is specified, it should be a relative path under which inherited HTTP paths are placed. Example:
apis: - name: google.storage.v2.Storage mixins: - name: google.acl.v1.AccessControl root: acls
This implies the following inherited HTTP annotation:
service Storage { // Get the underlying ACL object. rpc GetAcl(GetAclRequest) returns (Acl) { option (google.api.http).get = "/v2/acls/{resource=**}:getAcl"; } ... }
func (*Mixin) Descriptor
deprecated
func (*Mixin) ProtoMessage ¶
func (*Mixin) ProtoMessage()
func (*Mixin) ProtoReflect ¶
func (x *Mixin) ProtoReflect() protoreflect.Message