xref: /aosp_15_r20/external/googleapis/google/cloud/shell/v1/cloudshell.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC
2*d5c09012SAndroid Build Coastguard Worker//
3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*d5c09012SAndroid Build Coastguard Worker//
7*d5c09012SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*d5c09012SAndroid Build Coastguard Worker//
9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*d5c09012SAndroid Build Coastguard Worker// limitations under the License.
14*d5c09012SAndroid Build Coastguard Worker
15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3";
16*d5c09012SAndroid Build Coastguard Worker
17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.shell.v1;
18*d5c09012SAndroid Build Coastguard Worker
19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto";
20*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto";
21*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto";
22*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto";
23*d5c09012SAndroid Build Coastguard Workerimport "google/longrunning/operations.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
25*d5c09012SAndroid Build Coastguard Worker
26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/shell/apiv1/shellpb;shellpb";
27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "CloudShellProto";
29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.shell.v1";
30*d5c09012SAndroid Build Coastguard Worker
31*d5c09012SAndroid Build Coastguard Worker// API for interacting with Google Cloud Shell. Each user of Cloud Shell has at
32*d5c09012SAndroid Build Coastguard Worker// least one environment, which has the ID "default". Environment consists of a
33*d5c09012SAndroid Build Coastguard Worker// Docker image defining what is installed on the environment and a home
34*d5c09012SAndroid Build Coastguard Worker// directory containing the user's data that will remain across sessions.
35*d5c09012SAndroid Build Coastguard Worker// Clients use this API to start and fetch information about their environment,
36*d5c09012SAndroid Build Coastguard Worker// which can then be used to connect to that environment via a separate SSH
37*d5c09012SAndroid Build Coastguard Worker// client.
38*d5c09012SAndroid Build Coastguard Workerservice CloudShellService {
39*d5c09012SAndroid Build Coastguard Worker  option (google.api.default_host) = "cloudshell.googleapis.com";
40*d5c09012SAndroid Build Coastguard Worker  option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
41*d5c09012SAndroid Build Coastguard Worker
42*d5c09012SAndroid Build Coastguard Worker  // Gets an environment. Returns NOT_FOUND if the environment does not exist.
43*d5c09012SAndroid Build Coastguard Worker  rpc GetEnvironment(GetEnvironmentRequest) returns (Environment) {
44*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
45*d5c09012SAndroid Build Coastguard Worker      get: "/v1/{name=users/*/environments/*}"
46*d5c09012SAndroid Build Coastguard Worker    };
47*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
48*d5c09012SAndroid Build Coastguard Worker  }
49*d5c09012SAndroid Build Coastguard Worker
50*d5c09012SAndroid Build Coastguard Worker  // Starts an existing environment, allowing clients to connect to it. The
51*d5c09012SAndroid Build Coastguard Worker  // returned operation will contain an instance of StartEnvironmentMetadata in
52*d5c09012SAndroid Build Coastguard Worker  // its metadata field. Users can wait for the environment to start by polling
53*d5c09012SAndroid Build Coastguard Worker  // this operation via GetOperation. Once the environment has finished starting
54*d5c09012SAndroid Build Coastguard Worker  // and is ready to accept connections, the operation will contain a
55*d5c09012SAndroid Build Coastguard Worker  // StartEnvironmentResponse in its response field.
56*d5c09012SAndroid Build Coastguard Worker  rpc StartEnvironment(StartEnvironmentRequest) returns (google.longrunning.Operation) {
57*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
58*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{name=users/*/environments/*}:start"
59*d5c09012SAndroid Build Coastguard Worker      body: "*"
60*d5c09012SAndroid Build Coastguard Worker    };
61*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
62*d5c09012SAndroid Build Coastguard Worker      response_type: "StartEnvironmentResponse"
63*d5c09012SAndroid Build Coastguard Worker      metadata_type: "StartEnvironmentMetadata"
64*d5c09012SAndroid Build Coastguard Worker    };
65*d5c09012SAndroid Build Coastguard Worker  }
66*d5c09012SAndroid Build Coastguard Worker
67*d5c09012SAndroid Build Coastguard Worker  // Sends OAuth credentials to a running environment on behalf of a user. When
68*d5c09012SAndroid Build Coastguard Worker  // this completes, the environment will be authorized to run various Google
69*d5c09012SAndroid Build Coastguard Worker  // Cloud command line tools without requiring the user to manually
70*d5c09012SAndroid Build Coastguard Worker  // authenticate.
71*d5c09012SAndroid Build Coastguard Worker  rpc AuthorizeEnvironment(AuthorizeEnvironmentRequest) returns (google.longrunning.Operation) {
72*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
73*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{name=users/*/environments/*}:authorize"
74*d5c09012SAndroid Build Coastguard Worker      body: "*"
75*d5c09012SAndroid Build Coastguard Worker    };
76*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
77*d5c09012SAndroid Build Coastguard Worker      response_type: "AuthorizeEnvironmentResponse"
78*d5c09012SAndroid Build Coastguard Worker      metadata_type: "AuthorizeEnvironmentMetadata"
79*d5c09012SAndroid Build Coastguard Worker    };
80*d5c09012SAndroid Build Coastguard Worker  }
81*d5c09012SAndroid Build Coastguard Worker
82*d5c09012SAndroid Build Coastguard Worker  // Adds a public SSH key to an environment, allowing clients with the
83*d5c09012SAndroid Build Coastguard Worker  // corresponding private key to connect to that environment via SSH. If a key
84*d5c09012SAndroid Build Coastguard Worker  // with the same content already exists, this will error with ALREADY_EXISTS.
85*d5c09012SAndroid Build Coastguard Worker  rpc AddPublicKey(AddPublicKeyRequest) returns (google.longrunning.Operation) {
86*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
87*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{environment=users/*/environments/*}:addPublicKey"
88*d5c09012SAndroid Build Coastguard Worker      body: "*"
89*d5c09012SAndroid Build Coastguard Worker    };
90*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
91*d5c09012SAndroid Build Coastguard Worker      response_type: "AddPublicKeyResponse"
92*d5c09012SAndroid Build Coastguard Worker      metadata_type: "AddPublicKeyMetadata"
93*d5c09012SAndroid Build Coastguard Worker    };
94*d5c09012SAndroid Build Coastguard Worker  }
95*d5c09012SAndroid Build Coastguard Worker
96*d5c09012SAndroid Build Coastguard Worker  // Removes a public SSH key from an environment. Clients will no longer be
97*d5c09012SAndroid Build Coastguard Worker  // able to connect to the environment using the corresponding private key.
98*d5c09012SAndroid Build Coastguard Worker  // If a key with the same content is not present, this will error with
99*d5c09012SAndroid Build Coastguard Worker  // NOT_FOUND.
100*d5c09012SAndroid Build Coastguard Worker  rpc RemovePublicKey(RemovePublicKeyRequest) returns (google.longrunning.Operation) {
101*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
102*d5c09012SAndroid Build Coastguard Worker      post: "/v1/{environment=users/*/environments/*}:removePublicKey"
103*d5c09012SAndroid Build Coastguard Worker      body: "*"
104*d5c09012SAndroid Build Coastguard Worker    };
105*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
106*d5c09012SAndroid Build Coastguard Worker      response_type: "RemovePublicKeyResponse"
107*d5c09012SAndroid Build Coastguard Worker      metadata_type: "RemovePublicKeyMetadata"
108*d5c09012SAndroid Build Coastguard Worker    };
109*d5c09012SAndroid Build Coastguard Worker  }
110*d5c09012SAndroid Build Coastguard Worker}
111*d5c09012SAndroid Build Coastguard Worker
112*d5c09012SAndroid Build Coastguard Worker// A Cloud Shell environment, which is defined as the combination of a Docker
113*d5c09012SAndroid Build Coastguard Worker// image specifying what is installed on the environment and a home directory
114*d5c09012SAndroid Build Coastguard Worker// containing the user's data that will remain across sessions. Each user has
115*d5c09012SAndroid Build Coastguard Worker// at least an environment with the ID "default".
116*d5c09012SAndroid Build Coastguard Workermessage Environment {
117*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
118*d5c09012SAndroid Build Coastguard Worker    type: "cloudshell.googleapis.com/Environment"
119*d5c09012SAndroid Build Coastguard Worker    pattern: "users/{user}/environments/{environment}"
120*d5c09012SAndroid Build Coastguard Worker  };
121*d5c09012SAndroid Build Coastguard Worker
122*d5c09012SAndroid Build Coastguard Worker  // Possible execution states for an environment.
123*d5c09012SAndroid Build Coastguard Worker  enum State {
124*d5c09012SAndroid Build Coastguard Worker    // The environment's states is unknown.
125*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
126*d5c09012SAndroid Build Coastguard Worker
127*d5c09012SAndroid Build Coastguard Worker    // The environment is not running and can't be connected to. Starting the
128*d5c09012SAndroid Build Coastguard Worker    // environment will transition it to the PENDING state.
129*d5c09012SAndroid Build Coastguard Worker    SUSPENDED = 1;
130*d5c09012SAndroid Build Coastguard Worker
131*d5c09012SAndroid Build Coastguard Worker    // The environment is being started but is not yet ready to accept
132*d5c09012SAndroid Build Coastguard Worker    // connections.
133*d5c09012SAndroid Build Coastguard Worker    PENDING = 2;
134*d5c09012SAndroid Build Coastguard Worker
135*d5c09012SAndroid Build Coastguard Worker    // The environment is running and ready to accept connections. It will
136*d5c09012SAndroid Build Coastguard Worker    // automatically transition back to DISABLED after a period of inactivity or
137*d5c09012SAndroid Build Coastguard Worker    // if another environment is started.
138*d5c09012SAndroid Build Coastguard Worker    RUNNING = 3;
139*d5c09012SAndroid Build Coastguard Worker
140*d5c09012SAndroid Build Coastguard Worker    // The environment is being deleted and can't be connected to.
141*d5c09012SAndroid Build Coastguard Worker    DELETING = 4;
142*d5c09012SAndroid Build Coastguard Worker  }
143*d5c09012SAndroid Build Coastguard Worker
144*d5c09012SAndroid Build Coastguard Worker  // Immutable. Full name of this resource, in the format
145*d5c09012SAndroid Build Coastguard Worker  // `users/{owner_email}/environments/{environment_id}`. `{owner_email}` is the
146*d5c09012SAndroid Build Coastguard Worker  // email address of the user to whom this environment belongs, and
147*d5c09012SAndroid Build Coastguard Worker  // `{environment_id}` is the identifier of this environment. For example,
148*d5c09012SAndroid Build Coastguard Worker  // `users/someone@example.com/environments/default`.
149*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = IMMUTABLE];
150*d5c09012SAndroid Build Coastguard Worker
151*d5c09012SAndroid Build Coastguard Worker  // Output only. The environment's identifier, unique among the user's
152*d5c09012SAndroid Build Coastguard Worker  // environments.
153*d5c09012SAndroid Build Coastguard Worker  string id = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
154*d5c09012SAndroid Build Coastguard Worker
155*d5c09012SAndroid Build Coastguard Worker  // Required. Immutable. Full path to the Docker image used to run this environment, e.g.
156*d5c09012SAndroid Build Coastguard Worker  // "gcr.io/dev-con/cloud-devshell:latest".
157*d5c09012SAndroid Build Coastguard Worker  string docker_image = 3 [
158*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
159*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = IMMUTABLE
160*d5c09012SAndroid Build Coastguard Worker  ];
161*d5c09012SAndroid Build Coastguard Worker
162*d5c09012SAndroid Build Coastguard Worker  // Output only. Current execution state of this environment.
163*d5c09012SAndroid Build Coastguard Worker  State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
164*d5c09012SAndroid Build Coastguard Worker
165*d5c09012SAndroid Build Coastguard Worker  // Output only. Host to which clients can connect to initiate HTTPS or WSS
166*d5c09012SAndroid Build Coastguard Worker  // connections with the environment.
167*d5c09012SAndroid Build Coastguard Worker  string web_host = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
168*d5c09012SAndroid Build Coastguard Worker
169*d5c09012SAndroid Build Coastguard Worker  // Output only. Username that clients should use when initiating SSH sessions
170*d5c09012SAndroid Build Coastguard Worker  // with the environment.
171*d5c09012SAndroid Build Coastguard Worker  string ssh_username = 5 [(google.api.field_behavior) = OUTPUT_ONLY];
172*d5c09012SAndroid Build Coastguard Worker
173*d5c09012SAndroid Build Coastguard Worker  // Output only. Host to which clients can connect to initiate SSH sessions
174*d5c09012SAndroid Build Coastguard Worker  // with the environment.
175*d5c09012SAndroid Build Coastguard Worker  string ssh_host = 6 [(google.api.field_behavior) = OUTPUT_ONLY];
176*d5c09012SAndroid Build Coastguard Worker
177*d5c09012SAndroid Build Coastguard Worker  // Output only. Port to which clients can connect to initiate SSH sessions
178*d5c09012SAndroid Build Coastguard Worker  // with the environment.
179*d5c09012SAndroid Build Coastguard Worker  int32 ssh_port = 7 [(google.api.field_behavior) = OUTPUT_ONLY];
180*d5c09012SAndroid Build Coastguard Worker
181*d5c09012SAndroid Build Coastguard Worker  // Output only. Public keys associated with the environment. Clients can
182*d5c09012SAndroid Build Coastguard Worker  // connect to this environment via SSH only if they possess a private key
183*d5c09012SAndroid Build Coastguard Worker  // corresponding to at least one of these public keys. Keys can be added to or
184*d5c09012SAndroid Build Coastguard Worker  // removed from the environment using the AddPublicKey and RemovePublicKey
185*d5c09012SAndroid Build Coastguard Worker  // methods.
186*d5c09012SAndroid Build Coastguard Worker  repeated string public_keys = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
187*d5c09012SAndroid Build Coastguard Worker}
188*d5c09012SAndroid Build Coastguard Worker
189*d5c09012SAndroid Build Coastguard Worker// Request message for
190*d5c09012SAndroid Build Coastguard Worker// [GetEnvironment][google.cloud.shell.v1.CloudShellService.GetEnvironment].
191*d5c09012SAndroid Build Coastguard Workermessage GetEnvironmentRequest {
192*d5c09012SAndroid Build Coastguard Worker  // Required. Name of the requested resource, for example `users/me/environments/default`
193*d5c09012SAndroid Build Coastguard Worker  // or `users/someone@example.com/environments/default`.
194*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
195*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
196*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
197*d5c09012SAndroid Build Coastguard Worker      type: "cloudshell.googleapis.com/Environment"
198*d5c09012SAndroid Build Coastguard Worker    }
199*d5c09012SAndroid Build Coastguard Worker  ];
200*d5c09012SAndroid Build Coastguard Worker}
201*d5c09012SAndroid Build Coastguard Worker
202*d5c09012SAndroid Build Coastguard Worker// Message included in the metadata field of operations returned from
203*d5c09012SAndroid Build Coastguard Worker// [CreateEnvironment][google.cloud.shell.v1.CloudShellService.CreateEnvironment].
204*d5c09012SAndroid Build Coastguard Workermessage CreateEnvironmentMetadata {
205*d5c09012SAndroid Build Coastguard Worker
206*d5c09012SAndroid Build Coastguard Worker}
207*d5c09012SAndroid Build Coastguard Worker
208*d5c09012SAndroid Build Coastguard Worker// Message included in the metadata field of operations returned from
209*d5c09012SAndroid Build Coastguard Worker// [DeleteEnvironment][google.cloud.shell.v1.CloudShellService.DeleteEnvironment].
210*d5c09012SAndroid Build Coastguard Workermessage DeleteEnvironmentMetadata {
211*d5c09012SAndroid Build Coastguard Worker
212*d5c09012SAndroid Build Coastguard Worker}
213*d5c09012SAndroid Build Coastguard Worker
214*d5c09012SAndroid Build Coastguard Worker// Request message for
215*d5c09012SAndroid Build Coastguard Worker// [StartEnvironment][google.cloud.shell.v1.CloudShellService.StartEnvironment].
216*d5c09012SAndroid Build Coastguard Workermessage StartEnvironmentRequest {
217*d5c09012SAndroid Build Coastguard Worker  // Name of the resource that should be started, for example
218*d5c09012SAndroid Build Coastguard Worker  // `users/me/environments/default` or
219*d5c09012SAndroid Build Coastguard Worker  // `users/someone@example.com/environments/default`.
220*d5c09012SAndroid Build Coastguard Worker  string name = 1;
221*d5c09012SAndroid Build Coastguard Worker
222*d5c09012SAndroid Build Coastguard Worker  // The initial access token passed to the environment. If this is present and
223*d5c09012SAndroid Build Coastguard Worker  // valid, the environment will be pre-authenticated with gcloud so that the
224*d5c09012SAndroid Build Coastguard Worker  // user can run gcloud commands in Cloud Shell without having to log in. This
225*d5c09012SAndroid Build Coastguard Worker  // code can be updated later by calling AuthorizeEnvironment.
226*d5c09012SAndroid Build Coastguard Worker  string access_token = 2;
227*d5c09012SAndroid Build Coastguard Worker
228*d5c09012SAndroid Build Coastguard Worker  // Public keys that should be added to the environment before it is started.
229*d5c09012SAndroid Build Coastguard Worker  repeated string public_keys = 3;
230*d5c09012SAndroid Build Coastguard Worker}
231*d5c09012SAndroid Build Coastguard Worker
232*d5c09012SAndroid Build Coastguard Worker// Request message for
233*d5c09012SAndroid Build Coastguard Worker// [AuthorizeEnvironment][google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment].
234*d5c09012SAndroid Build Coastguard Workermessage AuthorizeEnvironmentRequest {
235*d5c09012SAndroid Build Coastguard Worker  // Name of the resource that should receive the credentials, for example
236*d5c09012SAndroid Build Coastguard Worker  // `users/me/environments/default` or
237*d5c09012SAndroid Build Coastguard Worker  // `users/someone@example.com/environments/default`.
238*d5c09012SAndroid Build Coastguard Worker  string name = 1;
239*d5c09012SAndroid Build Coastguard Worker
240*d5c09012SAndroid Build Coastguard Worker  // The OAuth access token that should be sent to the environment.
241*d5c09012SAndroid Build Coastguard Worker  string access_token = 2;
242*d5c09012SAndroid Build Coastguard Worker
243*d5c09012SAndroid Build Coastguard Worker  // The OAuth ID token that should be sent to the environment.
244*d5c09012SAndroid Build Coastguard Worker  string id_token = 4;
245*d5c09012SAndroid Build Coastguard Worker
246*d5c09012SAndroid Build Coastguard Worker  // The time when the credentials expire. If not set, defaults to one hour from
247*d5c09012SAndroid Build Coastguard Worker  // when the server received the request.
248*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp expire_time = 3;
249*d5c09012SAndroid Build Coastguard Worker}
250*d5c09012SAndroid Build Coastguard Worker
251*d5c09012SAndroid Build Coastguard Worker// Response message for
252*d5c09012SAndroid Build Coastguard Worker// [AuthorizeEnvironment][google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment].
253*d5c09012SAndroid Build Coastguard Workermessage AuthorizeEnvironmentResponse {
254*d5c09012SAndroid Build Coastguard Worker
255*d5c09012SAndroid Build Coastguard Worker}
256*d5c09012SAndroid Build Coastguard Worker
257*d5c09012SAndroid Build Coastguard Worker// Message included in the metadata field of operations returned from
258*d5c09012SAndroid Build Coastguard Worker// [AuthorizeEnvironment][google.cloud.shell.v1.CloudShellService.AuthorizeEnvironment].
259*d5c09012SAndroid Build Coastguard Workermessage AuthorizeEnvironmentMetadata {
260*d5c09012SAndroid Build Coastguard Worker
261*d5c09012SAndroid Build Coastguard Worker}
262*d5c09012SAndroid Build Coastguard Worker
263*d5c09012SAndroid Build Coastguard Worker// Message included in the metadata field of operations returned from
264*d5c09012SAndroid Build Coastguard Worker// [StartEnvironment][google.cloud.shell.v1.CloudShellService.StartEnvironment].
265*d5c09012SAndroid Build Coastguard Workermessage StartEnvironmentMetadata {
266*d5c09012SAndroid Build Coastguard Worker  // Possible states an environment might transition between during startup.
267*d5c09012SAndroid Build Coastguard Worker  // These states are not normally actionable by clients, but may be used to
268*d5c09012SAndroid Build Coastguard Worker  // show a progress message to the user. An environment won't necessarily go
269*d5c09012SAndroid Build Coastguard Worker  // through all of these states when starting. More states are likely to be
270*d5c09012SAndroid Build Coastguard Worker  // added in the future.
271*d5c09012SAndroid Build Coastguard Worker  enum State {
272*d5c09012SAndroid Build Coastguard Worker    // The environment's start state is unknown.
273*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
274*d5c09012SAndroid Build Coastguard Worker
275*d5c09012SAndroid Build Coastguard Worker    // The environment is in the process of being started, but no additional
276*d5c09012SAndroid Build Coastguard Worker    // details are available.
277*d5c09012SAndroid Build Coastguard Worker    STARTING = 1;
278*d5c09012SAndroid Build Coastguard Worker
279*d5c09012SAndroid Build Coastguard Worker    // Startup is waiting for the user's disk to be unarchived. This can happen
280*d5c09012SAndroid Build Coastguard Worker    // when the user returns to Cloud Shell after not having used it for a
281*d5c09012SAndroid Build Coastguard Worker    // while, and suggests that startup will take longer than normal.
282*d5c09012SAndroid Build Coastguard Worker    UNARCHIVING_DISK = 2;
283*d5c09012SAndroid Build Coastguard Worker
284*d5c09012SAndroid Build Coastguard Worker    // Startup is waiting for compute resources to be assigned to the
285*d5c09012SAndroid Build Coastguard Worker    // environment. This should normally happen very quickly, but an environment
286*d5c09012SAndroid Build Coastguard Worker    // might stay in this state for an extended period of time if the system is
287*d5c09012SAndroid Build Coastguard Worker    // experiencing heavy load.
288*d5c09012SAndroid Build Coastguard Worker    AWAITING_COMPUTE_RESOURCES = 4;
289*d5c09012SAndroid Build Coastguard Worker
290*d5c09012SAndroid Build Coastguard Worker    // Startup has completed. If the start operation was successful, the user
291*d5c09012SAndroid Build Coastguard Worker    // should be able to establish an SSH connection to their environment.
292*d5c09012SAndroid Build Coastguard Worker    // Otherwise, the operation will contain details of the failure.
293*d5c09012SAndroid Build Coastguard Worker    FINISHED = 3;
294*d5c09012SAndroid Build Coastguard Worker  }
295*d5c09012SAndroid Build Coastguard Worker
296*d5c09012SAndroid Build Coastguard Worker  // Current state of the environment being started.
297*d5c09012SAndroid Build Coastguard Worker  State state = 1;
298*d5c09012SAndroid Build Coastguard Worker}
299*d5c09012SAndroid Build Coastguard Worker
300*d5c09012SAndroid Build Coastguard Worker// Message included in the response field of operations returned from
301*d5c09012SAndroid Build Coastguard Worker// [StartEnvironment][google.cloud.shell.v1.CloudShellService.StartEnvironment]
302*d5c09012SAndroid Build Coastguard Worker// once the operation is complete.
303*d5c09012SAndroid Build Coastguard Workermessage StartEnvironmentResponse {
304*d5c09012SAndroid Build Coastguard Worker  // Environment that was started.
305*d5c09012SAndroid Build Coastguard Worker  Environment environment = 1;
306*d5c09012SAndroid Build Coastguard Worker}
307*d5c09012SAndroid Build Coastguard Worker
308*d5c09012SAndroid Build Coastguard Worker// Request message for
309*d5c09012SAndroid Build Coastguard Worker// [AddPublicKey][google.cloud.shell.v1.CloudShellService.AddPublicKey].
310*d5c09012SAndroid Build Coastguard Workermessage AddPublicKeyRequest {
311*d5c09012SAndroid Build Coastguard Worker  // Environment this key should be added to, e.g.
312*d5c09012SAndroid Build Coastguard Worker  // `users/me/environments/default`.
313*d5c09012SAndroid Build Coastguard Worker  string environment = 1;
314*d5c09012SAndroid Build Coastguard Worker
315*d5c09012SAndroid Build Coastguard Worker  // Key that should be added to the environment. Supported formats are
316*d5c09012SAndroid Build Coastguard Worker  // `ssh-dss` (see RFC4253), `ssh-rsa` (see RFC4253), `ecdsa-sha2-nistp256`
317*d5c09012SAndroid Build Coastguard Worker  // (see RFC5656), `ecdsa-sha2-nistp384` (see RFC5656) and
318*d5c09012SAndroid Build Coastguard Worker  // `ecdsa-sha2-nistp521` (see RFC5656). It should be structured as
319*d5c09012SAndroid Build Coastguard Worker  // <format> <content>, where <content> part is encoded with
320*d5c09012SAndroid Build Coastguard Worker  // Base64.
321*d5c09012SAndroid Build Coastguard Worker  string key = 2;
322*d5c09012SAndroid Build Coastguard Worker}
323*d5c09012SAndroid Build Coastguard Worker
324*d5c09012SAndroid Build Coastguard Worker// Response message for
325*d5c09012SAndroid Build Coastguard Worker// [AddPublicKey][google.cloud.shell.v1.CloudShellService.AddPublicKey].
326*d5c09012SAndroid Build Coastguard Workermessage AddPublicKeyResponse {
327*d5c09012SAndroid Build Coastguard Worker  // Key that was added to the environment.
328*d5c09012SAndroid Build Coastguard Worker  string key = 1;
329*d5c09012SAndroid Build Coastguard Worker}
330*d5c09012SAndroid Build Coastguard Worker
331*d5c09012SAndroid Build Coastguard Worker// Message included in the metadata field of operations returned from
332*d5c09012SAndroid Build Coastguard Worker// [AddPublicKey][google.cloud.shell.v1.CloudShellService.AddPublicKey].
333*d5c09012SAndroid Build Coastguard Workermessage AddPublicKeyMetadata {
334*d5c09012SAndroid Build Coastguard Worker
335*d5c09012SAndroid Build Coastguard Worker}
336*d5c09012SAndroid Build Coastguard Worker
337*d5c09012SAndroid Build Coastguard Worker// Request message for
338*d5c09012SAndroid Build Coastguard Worker// [RemovePublicKey][google.cloud.shell.v1.CloudShellService.RemovePublicKey].
339*d5c09012SAndroid Build Coastguard Workermessage RemovePublicKeyRequest {
340*d5c09012SAndroid Build Coastguard Worker  // Environment this key should be removed from, e.g.
341*d5c09012SAndroid Build Coastguard Worker  // `users/me/environments/default`.
342*d5c09012SAndroid Build Coastguard Worker  string environment = 1;
343*d5c09012SAndroid Build Coastguard Worker
344*d5c09012SAndroid Build Coastguard Worker  // Key that should be removed from the environment.
345*d5c09012SAndroid Build Coastguard Worker  string key = 2;
346*d5c09012SAndroid Build Coastguard Worker}
347*d5c09012SAndroid Build Coastguard Worker
348*d5c09012SAndroid Build Coastguard Worker// Response message for
349*d5c09012SAndroid Build Coastguard Worker// [RemovePublicKey][google.cloud.shell.v1.CloudShellService.RemovePublicKey].
350*d5c09012SAndroid Build Coastguard Workermessage RemovePublicKeyResponse {
351*d5c09012SAndroid Build Coastguard Worker
352*d5c09012SAndroid Build Coastguard Worker}
353*d5c09012SAndroid Build Coastguard Worker
354*d5c09012SAndroid Build Coastguard Worker// Message included in the metadata field of operations returned from
355*d5c09012SAndroid Build Coastguard Worker// [RemovePublicKey][google.cloud.shell.v1.CloudShellService.RemovePublicKey].
356*d5c09012SAndroid Build Coastguard Workermessage RemovePublicKeyMetadata {
357*d5c09012SAndroid Build Coastguard Worker
358*d5c09012SAndroid Build Coastguard Worker}
359*d5c09012SAndroid Build Coastguard Worker
360*d5c09012SAndroid Build Coastguard Worker// Cloud-shell specific information that will be included as details in failure
361*d5c09012SAndroid Build Coastguard Worker// responses.
362*d5c09012SAndroid Build Coastguard Workermessage CloudShellErrorDetails {
363*d5c09012SAndroid Build Coastguard Worker  // Set of possible errors returned from API calls.
364*d5c09012SAndroid Build Coastguard Worker  enum CloudShellErrorCode {
365*d5c09012SAndroid Build Coastguard Worker    // An unknown error occurred.
366*d5c09012SAndroid Build Coastguard Worker    CLOUD_SHELL_ERROR_CODE_UNSPECIFIED = 0;
367*d5c09012SAndroid Build Coastguard Worker
368*d5c09012SAndroid Build Coastguard Worker    // The image used by the Cloud Shell environment either does not exist or
369*d5c09012SAndroid Build Coastguard Worker    // the user does not have access to it.
370*d5c09012SAndroid Build Coastguard Worker    IMAGE_UNAVAILABLE = 1;
371*d5c09012SAndroid Build Coastguard Worker
372*d5c09012SAndroid Build Coastguard Worker    // Cloud Shell has been disabled by an administrator for the user making the
373*d5c09012SAndroid Build Coastguard Worker    // request.
374*d5c09012SAndroid Build Coastguard Worker    CLOUD_SHELL_DISABLED = 2;
375*d5c09012SAndroid Build Coastguard Worker
376*d5c09012SAndroid Build Coastguard Worker    // Cloud Shell has been permanently disabled due to a Terms of Service
377*d5c09012SAndroid Build Coastguard Worker    // violation by the user.
378*d5c09012SAndroid Build Coastguard Worker    TOS_VIOLATION = 4;
379*d5c09012SAndroid Build Coastguard Worker
380*d5c09012SAndroid Build Coastguard Worker    // The user has exhausted their weekly Cloud Shell quota, and Cloud Shell
381*d5c09012SAndroid Build Coastguard Worker    // will be disabled until the quota resets.
382*d5c09012SAndroid Build Coastguard Worker    QUOTA_EXCEEDED = 5;
383*d5c09012SAndroid Build Coastguard Worker
384*d5c09012SAndroid Build Coastguard Worker    // The Cloud Shell environment is unavailable and cannot be connected to at
385*d5c09012SAndroid Build Coastguard Worker    // the moment.
386*d5c09012SAndroid Build Coastguard Worker    ENVIRONMENT_UNAVAILABLE = 6;
387*d5c09012SAndroid Build Coastguard Worker  }
388*d5c09012SAndroid Build Coastguard Worker
389*d5c09012SAndroid Build Coastguard Worker  // Code indicating the specific error the occurred.
390*d5c09012SAndroid Build Coastguard Worker  CloudShellErrorCode code = 1;
391*d5c09012SAndroid Build Coastguard Worker}
392