Skip to main content
Module

x/pbkit/vendor/google/protobuf/api.proto

Protobuf toolkit for modern web development
Go to Latest
File
// Protocol Buffers - Google's data interchange format// Copyright 2008 Google Inc. All rights reserved.// https://developers.google.com/protocol-buffers///// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met://// * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.// * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.// * Neither the name of Google Inc. nor the names of its// contributors may be used to endorse or promote products derived from// this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
syntax = "proto3";
package google.protobuf;
import "google/protobuf/source_context.proto";import "google/protobuf/type.proto";
option csharp_namespace = "Google.Protobuf.WellKnownTypes";option java_package = "com.google.protobuf";option java_outer_classname = "ApiProto";option java_multiple_files = true;option objc_class_prefix = "GPB";option go_package = "google.golang.org/protobuf/types/known/apipb";
// 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.message Api { // The fully qualified name of this interface, including package name // followed by the interface's simple name. string name = 1; // The methods of this interface, in unspecified order. repeated Method methods = 2; // Any metadata attached to the interface. repeated Option options = 3; // 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. // // string version = 4; // Source context for the protocol buffer service represented by this // message. SourceContext source_context = 5; // Included interfaces. See [Mixin][]. repeated Mixin mixins = 6; // The source syntax of the service. Syntax syntax = 7;}
// Method represents a method of an API interface.message Method { // The simple name of this method. string name = 1; // A URL of the input message type. string request_type_url = 2; // If true, the request is streamed. bool request_streaming = 3; // The URL of the output message type. string response_type_url = 4; // If true, the response is streamed. bool response_streaming = 5; // Any metadata attached to the method. repeated Option options = 6; // The source syntax of this method. Syntax syntax = 7;}
// 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 inheriting// 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";// }// ...// }message Mixin { // The fully qualified name of the interface which is included. string name = 1; // If non-empty specifies a path under which inherited HTTP paths // are rooted. string root = 2;}