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