You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			209 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Protocol Buffer
		
	
			
		
		
	
	
			209 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Protocol Buffer
		
	
| // 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;
 | |
| }
 |