| // 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/protobuf/empty.proto"; |
| import "google/protobuf/field_mask.proto"; |
| import "google/protobuf/timestamp.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; |
| |
| // A simple identity service. |
| service Identity { |
| // 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"; |
| |
| // Creates a user. |
| rpc CreateUser(CreateUserRequest) returns (User) { |
| option (google.api.http) = { |
| post: "/v1beta1/{parent=users}" |
| body: "*" |
| }; |
| option (google.api.method_signature) = |
| "parent,user.display_name,user.email"; |
| option (google.api.method_signature) = |
| "parent,user.display_name,user.email,user.age,user.nickname,user.enable_notifications,user.height_feet"; |
| // Test nested method arguments and ensure that order doesn't matter. |
| option (google.api.method_signature) = |
| "parent,user.display_name,user.email,user.hobby.hobby_name,user.song.song_name,user.hobby.weekly_frequency,user.song.song_artist.recording_company.company_name,user.hobby.instruction_manual.title,user.hobby.instruction_manual.subject,user.song.song_artist.artist_name"; |
| } |
| |
| // Retrieves the User with the given uri. |
| rpc GetUser(GetUserRequest) returns (User) { |
| option (google.api.http) = { |
| get: "/v1beta1/{name=users/*}" |
| }; |
| option (google.api.method_signature) = "name"; |
| } |
| |
| // Updates a user. |
| rpc UpdateUser(UpdateUserRequest) returns (User) { |
| option (google.api.http) = { |
| patch: "/v1beta1/{user.name=users/*}" |
| body: "*" |
| }; |
| } |
| |
| // Deletes a user, their profile, and all of their authored messages. |
| rpc DeleteUser(DeleteUserRequest) returns (google.protobuf.Empty) { |
| option (google.api.http) = { |
| delete: "/v1beta1/{name=users/*}" |
| }; |
| option (google.api.method_signature) = "name"; |
| } |
| |
| // Lists all users. |
| rpc ListUsers(ListUsersRequest) returns (ListUsersResponse) { |
| option (google.api.http) = { |
| get: "/v1beta1/users" |
| }; |
| } |
| } |
| |
| // A user. |
| message User { |
| option (google.api.resource) = { |
| type: "showcase.googleapis.com/User" |
| pattern: "users/{user}" |
| }; |
| |
| // The resource name of the user. |
| string name = 1; |
| |
| // The display_name of the user. |
| string display_name = 2 [(google.api.field_behavior) = REQUIRED]; |
| |
| // The email address of the user. |
| string email = 3 [(google.api.field_behavior) = REQUIRED]; |
| |
| // The timestamp at which the user was created. |
| google.protobuf.Timestamp create_time = 4 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| |
| // The latest timestamp at which the user was updated. |
| google.protobuf.Timestamp update_time = 5 |
| [(google.api.field_behavior) = OUTPUT_ONLY]; |
| |
| // The age of the use in years. |
| optional int32 age = 6; |
| |
| // The height of the user in feet. |
| optional double height_feet = 7; |
| |
| // The nickname of the user. |
| // |
| // (-- aip.dev/not-precedent: An empty string is a valid nickname. |
| // Ordinarily, proto3_optional should not be used on a `string` field. --) |
| optional string nickname = 8; |
| |
| // Enables the receiving of notifications. The default is true if unset. |
| // |
| // (-- aip.dev/not-precedent: The default for the feature is true. |
| // Ordinarily, the default for a `bool` field should be false. --) |
| optional bool enable_notifications = 9; |
| |
| // The user's favorite hobby. |
| optional Hobby hobby = 10; |
| |
| // The user's song. |
| optional Song song = 11; |
| } |
| |
| message Hobby { |
| // The name of the hobby. |
| string hobby_name = 1; |
| |
| // Weekly frequency this hobby is performed. |
| int32 weekly_frequency = 2; |
| |
| // The instruction manual for the hobby. |
| Book instruction_manual = 3; |
| } |
| |
| message Book { |
| // The title of the instruction manual. |
| string title = 1; |
| |
| // The subject of the instruction manual. |
| string subject = 2; |
| } |
| |
| message Song { |
| // The name of the song. |
| string song_name = 1; |
| |
| // The song's artist. |
| Artist song_artist = 2; |
| } |
| |
| message Artist { |
| // The name of the artist. |
| string artist_name = 1; |
| |
| // The artist's recording company. |
| RecordingCompany recording_company = 2; |
| } |
| |
| message RecordingCompany { |
| // The recording company's name |
| string company_name = 1; |
| |
| // The year the company was founded. |
| int32 founding_year = 2; |
| } |
| |
| // The request message for the google.showcase.v1beta1.Identity\CreateUser |
| // method. |
| message CreateUserRequest { |
| string parent = 1 [ |
| (google.api.resource_reference).child_type = "showcase.googleapis.com/User", |
| (google.api.field_behavior) = REQUIRED |
| ]; |
| // The user to create. |
| User user = 2 [(google.api.field_behavior) = REQUIRED]; |
| } |
| |
| // The request message for the google.showcase.v1beta1.Identity\GetUser |
| // method. |
| message GetUserRequest { |
| // The resource name of the requested user. |
| string name = 1 [ |
| (google.api.resource_reference).type = "showcase.googleapis.com/User", |
| (google.api.field_behavior) = REQUIRED |
| ]; |
| } |
| |
| // The request message for the google.showcase.v1beta1.Identity\UpdateUser |
| // method. |
| message UpdateUserRequest { |
| // The user to update. |
| User user = 1; |
| |
| // The field mask to determine wich fields are to be updated. If empty, the |
| // server will assume all fields are to be updated. |
| google.protobuf.FieldMask update_mask = 2; |
| } |
| |
| // The request message for the google.showcase.v1beta1.Identity\DeleteUser |
| // method. |
| message DeleteUserRequest { |
| // The resource name of the user to delete. |
| string name = 1 [ |
| (google.api.resource_reference).type = "showcase.googleapis.com/User", |
| (google.api.field_behavior) = REQUIRED |
| ]; |
| } |
| |
| // The request message for the google.showcase.v1beta1.Identity\ListUsers |
| // method. |
| message ListUsersRequest { |
| // The maximum number of users to return. Server may return fewer users |
| // than requested. If unspecified, server will pick an appropriate default. |
| int32 page_size = 1; |
| |
| // The value of google.showcase.v1beta1.ListUsersResponse.next_page_token |
| // returned from the previous call to |
| // `google.showcase.v1beta1.Identity\ListUsers` method. |
| string page_token = 2; |
| } |
| |
| // The response message for the google.showcase.v1beta1.Identity\ListUsers |
| // method. |
| message ListUsersResponse { |
| // The list of users. |
| repeated User users = 1; |
| |
| // A token to retrieve next page of results. |
| // Pass this value in ListUsersRequest.page_token field in the subsequent |
| // call to `google.showcase.v1beta1.Message\ListUsers` method to retrieve the |
| // next page of results. |
| string next_page_token = 2; |
| } |