| // Copyright 2018 Google LLC |
| // |
| // Licensed under the Apache License, Version 2.0 (the "License"); |
| // you may not use this file except in compliance with the License. |
| // You may obtain a copy of the License at |
| // |
| // https://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, software |
| // distributed under the License is distributed on an "AS IS" BASIS, |
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| // See the License for the specific language governing permissions and |
| // limitations under the License. |
| |
| syntax = "proto3"; |
| |
| import "google/api/annotations.proto"; |
| import "google/api/client.proto"; |
| import "google/api/field_behavior.proto"; |
| import "google/api/resource.proto"; |
| import "google/longrunning/operations.proto"; |
| import "google/protobuf/duration.proto"; |
| import "google/protobuf/timestamp.proto"; |
| import "google/rpc/status.proto"; |
| |
| package google.showcase.v1beta1; |
| |
| option go_package = "github.com/googleapis/gapic-showcase/server/genproto"; |
| option java_package = "com.google.showcase.v1beta1"; |
| option java_multiple_files = true; |
| |
| option (google.api.resource_definition) = { |
| type: "showcase.googleapis.com/AnythingGoes" |
| pattern: "*" |
| }; |
| |
| // This service is used showcase the four main types of rpcs - unary, server |
| // side streaming, client side streaming, and bidirectional streaming. This |
| // service also exposes methods that explicitly implement server delay, and |
| // paginated calls. Set the 'showcase-trailer' metadata key on any method |
| // to have the values echoed in the response trailers. |
| service Echo { |
| // This service is meant to only run locally on the port 7469 (keypad digits |
| // for "show"). |
| option (google.api.default_host) = "localhost:7469"; |
| option (google.api.oauth_scopes) = |
| "https://www.googleapis.com/auth/cloud-platform"; |
| |
| // This method simply echos the request. This method is showcases unary rpcs. |
| rpc Echo(EchoRequest) returns (EchoResponse) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:echo" |
| body: "*" |
| }; |
| option (google.api.method_signature) = "content"; |
| option (google.api.method_signature) = "error"; |
| option (google.api.method_signature) = "content,severity"; |
| option (google.api.method_signature) = "name"; |
| option (google.api.method_signature) = "parent"; |
| option (google.api.method_signature) = ""; |
| } |
| |
| // This method split the given content into words and will pass each word back |
| // through the stream. This method showcases server-side streaming rpcs. |
| rpc Expand(ExpandRequest) returns (stream EchoResponse) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:expand" |
| body: "*" |
| }; |
| option (google.api.method_signature) = "content,error"; |
| } |
| |
| // This method will collect the words given to it. When the stream is closed |
| // by the client, this method will return the a concatenation of the strings |
| // passed to it. This method showcases client-side streaming rpcs. |
| rpc Collect(stream EchoRequest) returns (EchoResponse) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:collect" |
| body: "*" |
| }; |
| } |
| |
| // This method, upon receiving a request on the stream, the same content will |
| // be passed back on the stream. This method showcases bidirectional |
| // streaming rpcs. |
| rpc Chat(stream EchoRequest) returns (stream EchoResponse); |
| |
| rpc ChatAgain(stream EchoRequest) returns (stream EchoResponse) { |
| option (google.api.method_signature) = "content"; |
| } |
| |
| // This is similar to the Expand method but instead of returning a stream of |
| // expanded words, this method returns a paged list of expanded words. |
| rpc PagedExpand(PagedExpandRequest) returns (PagedExpandResponse) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:pagedExpand" |
| body: "*" |
| }; |
| } |
| |
| rpc SimplePagedExpand(PagedExpandRequest) returns (PagedExpandResponse) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:pagedExpand" |
| body: "*" |
| }; |
| option (google.api.method_signature) = ""; |
| } |
| |
| // This method will wait the requested amount of and then return. |
| // This method showcases how a client handles a request timing out. |
| rpc Wait(WaitRequest) returns (google.longrunning.Operation) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:wait" |
| body: "*" |
| }; |
| option (google.longrunning.operation_info) = { |
| response_type: "WaitResponse" |
| metadata_type: "WaitMetadata" |
| }; |
| option (google.api.method_signature) = "end_time"; |
| option (google.api.method_signature) = "ttl"; |
| } |
| |
| // This method will block (wait) for the requested amount of time |
| // and then return the response or error. |
| // This method showcases how a client handles delays or retries. |
| rpc Block(BlockRequest) returns (BlockResponse) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:block" |
| body: "*" |
| }; |
| }; |
| |
| // This method primarily tests Java name collisions by using the Object |
| // message. |
| rpc CollideName(EchoRequest) returns (Object) { |
| option (google.api.http) = { |
| post: "/v1beta1/echo:foo" |
| body: "*" |
| }; |
| } |
| } |
| |
| // A severity enum used to test enum capabilities in GAPIC surfaces |
| enum Severity { |
| UNNECESSARY = 0; |
| NECESSARY = 1; |
| URGENT = 2; |
| CRITICAL = 3; |
| } |
| |
| message Foobar { |
| option (google.api.resource) = { |
| type: "showcase.googleapis.com/Foobar" |
| pattern: "projects/{project}/foobars/{foobar}" |
| pattern: "projects/{project}/chocolate/variants/{variant}/foobars/{foobar}" |
| pattern: "foobars/{foobar}" |
| pattern: "bar_foos/{bar_foo}/foobars/{foobar}" |
| pattern: "*" |
| }; |
| |
| string name = 1; |
| string info = 2; |
| } |
| |
| // The request message used for the Echo, Collect and Chat methods. |
| // If content or opt are set in this message then the request will succeed. |
| // If status is set in this message |
| // then the status will be returned as an error. |
| message EchoRequest { |
| string name = 5 [ |
| (google.api.resource_reference).type = "showcase.googleapis.com/Foobar", |
| (google.api.field_behavior) = REQUIRED |
| ]; |
| |
| string parent = 6 [ |
| (google.api.resource_reference).child_type = |
| "showcase.googleapis.com/AnythingGoes", |
| (google.api.field_behavior) = REQUIRED |
| ]; |
| |
| oneof response { |
| // The content to be echoed by the server. |
| string content = 1; |
| |
| // The error to be thrown by the server. |
| google.rpc.Status error = 2; |
| } |
| |
| // The severity to be echoed by the server. |
| Severity severity = 3; |
| |
| Foobar foobar = 4; |
| } |
| |
| // The response message for the Echo methods. |
| message EchoResponse { |
| // The content specified in the request. |
| string content = 1; |
| |
| // The severity specified in the request. |
| Severity severity = 2; |
| } |
| |
| // Tests name collisions with java.lang.Object. |
| message Object { |
| // The content specified in the request. |
| string content = 1; |
| } |
| |
| // The request message for the Expand method. |
| message ExpandRequest { |
| // The content that will be split into words and returned on the stream. |
| string content = 1; |
| |
| // The error that is thrown after all words are sent on the stream. |
| google.rpc.Status error = 2; |
| |
| string info = 3; |
| } |
| |
| // The request for the PagedExpand method. |
| message PagedExpandRequest { |
| // The string to expand. |
| string content = 1 [(google.api.field_behavior) = REQUIRED]; |
| |
| // The amount of words to returned in each page. |
| int32 page_size = 2; |
| |
| // The position of the page to be returned. |
| string page_token = 3; |
| } |
| |
| // The response for the PagedExpand method. |
| message PagedExpandResponse { |
| // The words that were expanded. |
| repeated EchoResponse responses = 1; |
| |
| // The next page token. |
| string next_page_token = 2; |
| } |
| |
| // The request for Wait method. |
| message WaitRequest { |
| oneof end { |
| // The time that this operation will complete. |
| google.protobuf.Timestamp end_time = 1; |
| |
| // The duration of this operation. |
| google.protobuf.Duration ttl = 4; |
| } |
| |
| oneof response { |
| // The error that will be returned by the server. If this code is specified |
| // to be the OK rpc code, an empty response will be returned. |
| google.rpc.Status error = 2; |
| |
| // The response to be returned on operation completion. |
| WaitResponse success = 3; |
| } |
| } |
| |
| // The result of the Wait operation. |
| message WaitResponse { |
| // This content of the result. |
| string content = 1; |
| } |
| |
| // The metadata for Wait operation. |
| message WaitMetadata { |
| // The time that this operation will complete. |
| google.protobuf.Timestamp end_time = 1; |
| } |
| |
| // The request for Block method. |
| message BlockRequest { |
| // The amount of time to block before returning a response. |
| google.protobuf.Duration response_delay = 1; |
| |
| oneof response { |
| // The error that will be returned by the server. If this code is specified |
| // to be the OK rpc code, an empty response will be returned. |
| google.rpc.Status error = 2; |
| |
| // The response to be returned that will signify successful method call. |
| BlockResponse success = 3; |
| } |
| } |
| |
| // The response for Block method. |
| message BlockResponse { |
| // This content can contain anything, the server will not depend on a value |
| // here. |
| string content = 1; |
| } |