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.oslogin.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/cloud/oslogin/common/common.proto"; 24*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/empty.proto"; 25*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/field_mask.proto"; 26*d5c09012SAndroid Build Coastguard Worker 27*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.OsLogin.V1"; 28*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/oslogin/apiv1/osloginpb;osloginpb"; 29*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 30*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "OsLoginProto"; 31*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.oslogin.v1"; 32*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\OsLogin\\V1"; 33*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::OsLogin::V1"; 34*d5c09012SAndroid Build Coastguard Worker 35*d5c09012SAndroid Build Coastguard Worker// Cloud OS Login API 36*d5c09012SAndroid Build Coastguard Worker// 37*d5c09012SAndroid Build Coastguard Worker// The Cloud OS Login API allows you to manage users and their associated SSH 38*d5c09012SAndroid Build Coastguard Worker// public keys for logging into virtual machines on Google Cloud Platform. 39*d5c09012SAndroid Build Coastguard Workerservice OsLoginService { 40*d5c09012SAndroid Build Coastguard Worker option (google.api.default_host) = "oslogin.googleapis.com"; 41*d5c09012SAndroid Build Coastguard Worker option (google.api.oauth_scopes) = 42*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/cloud-platform," 43*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/cloud-platform.read-only," 44*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/compute," 45*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/compute.readonly"; 46*d5c09012SAndroid Build Coastguard Worker 47*d5c09012SAndroid Build Coastguard Worker // Create an SSH public key 48*d5c09012SAndroid Build Coastguard Worker rpc CreateSshPublicKey(CreateSshPublicKeyRequest) 49*d5c09012SAndroid Build Coastguard Worker returns (google.cloud.oslogin.common.SshPublicKey) { 50*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 51*d5c09012SAndroid Build Coastguard Worker post: "/v1/{parent=users/*}/sshPublicKeys" 52*d5c09012SAndroid Build Coastguard Worker body: "ssh_public_key" 53*d5c09012SAndroid Build Coastguard Worker }; 54*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "parent,ssh_public_key"; 55*d5c09012SAndroid Build Coastguard Worker } 56*d5c09012SAndroid Build Coastguard Worker 57*d5c09012SAndroid Build Coastguard Worker // Deletes a POSIX account. 58*d5c09012SAndroid Build Coastguard Worker rpc DeletePosixAccount(DeletePosixAccountRequest) 59*d5c09012SAndroid Build Coastguard Worker returns (google.protobuf.Empty) { 60*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 61*d5c09012SAndroid Build Coastguard Worker delete: "/v1/{name=users/*/projects/*}" 62*d5c09012SAndroid Build Coastguard Worker }; 63*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name"; 64*d5c09012SAndroid Build Coastguard Worker } 65*d5c09012SAndroid Build Coastguard Worker 66*d5c09012SAndroid Build Coastguard Worker // Deletes an SSH public key. 67*d5c09012SAndroid Build Coastguard Worker rpc DeleteSshPublicKey(DeleteSshPublicKeyRequest) 68*d5c09012SAndroid Build Coastguard Worker returns (google.protobuf.Empty) { 69*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 70*d5c09012SAndroid Build Coastguard Worker delete: "/v1/{name=users/*/sshPublicKeys/*}" 71*d5c09012SAndroid Build Coastguard Worker }; 72*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name"; 73*d5c09012SAndroid Build Coastguard Worker } 74*d5c09012SAndroid Build Coastguard Worker 75*d5c09012SAndroid Build Coastguard Worker // Retrieves the profile information used for logging in to a virtual machine 76*d5c09012SAndroid Build Coastguard Worker // on Google Compute Engine. 77*d5c09012SAndroid Build Coastguard Worker rpc GetLoginProfile(GetLoginProfileRequest) returns (LoginProfile) { 78*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 79*d5c09012SAndroid Build Coastguard Worker get: "/v1/{name=users/*}/loginProfile" 80*d5c09012SAndroid Build Coastguard Worker }; 81*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name"; 82*d5c09012SAndroid Build Coastguard Worker } 83*d5c09012SAndroid Build Coastguard Worker 84*d5c09012SAndroid Build Coastguard Worker // Retrieves an SSH public key. 85*d5c09012SAndroid Build Coastguard Worker rpc GetSshPublicKey(GetSshPublicKeyRequest) 86*d5c09012SAndroid Build Coastguard Worker returns (google.cloud.oslogin.common.SshPublicKey) { 87*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 88*d5c09012SAndroid Build Coastguard Worker get: "/v1/{name=users/*/sshPublicKeys/*}" 89*d5c09012SAndroid Build Coastguard Worker }; 90*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name"; 91*d5c09012SAndroid Build Coastguard Worker } 92*d5c09012SAndroid Build Coastguard Worker 93*d5c09012SAndroid Build Coastguard Worker // Adds an SSH public key and returns the profile information. Default POSIX 94*d5c09012SAndroid Build Coastguard Worker // account information is set when no username and UID exist as part of the 95*d5c09012SAndroid Build Coastguard Worker // login profile. 96*d5c09012SAndroid Build Coastguard Worker rpc ImportSshPublicKey(ImportSshPublicKeyRequest) 97*d5c09012SAndroid Build Coastguard Worker returns (ImportSshPublicKeyResponse) { 98*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 99*d5c09012SAndroid Build Coastguard Worker post: "/v1/{parent=users/*}:importSshPublicKey" 100*d5c09012SAndroid Build Coastguard Worker body: "ssh_public_key" 101*d5c09012SAndroid Build Coastguard Worker }; 102*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "parent,ssh_public_key"; 103*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "parent,ssh_public_key,project_id"; 104*d5c09012SAndroid Build Coastguard Worker } 105*d5c09012SAndroid Build Coastguard Worker 106*d5c09012SAndroid Build Coastguard Worker // Updates an SSH public key and returns the profile information. This method 107*d5c09012SAndroid Build Coastguard Worker // supports patch semantics. 108*d5c09012SAndroid Build Coastguard Worker rpc UpdateSshPublicKey(UpdateSshPublicKeyRequest) 109*d5c09012SAndroid Build Coastguard Worker returns (google.cloud.oslogin.common.SshPublicKey) { 110*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 111*d5c09012SAndroid Build Coastguard Worker patch: "/v1/{name=users/*/sshPublicKeys/*}" 112*d5c09012SAndroid Build Coastguard Worker body: "ssh_public_key" 113*d5c09012SAndroid Build Coastguard Worker }; 114*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name,ssh_public_key"; 115*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name,ssh_public_key,update_mask"; 116*d5c09012SAndroid Build Coastguard Worker } 117*d5c09012SAndroid Build Coastguard Worker} 118*d5c09012SAndroid Build Coastguard Worker 119*d5c09012SAndroid Build Coastguard Worker// The user profile information used for logging in to a virtual machine on 120*d5c09012SAndroid Build Coastguard Worker// Google Compute Engine. 121*d5c09012SAndroid Build Coastguard Workermessage LoginProfile { 122*d5c09012SAndroid Build Coastguard Worker // Required. A unique user ID. 123*d5c09012SAndroid Build Coastguard Worker string name = 1 [(google.api.field_behavior) = REQUIRED]; 124*d5c09012SAndroid Build Coastguard Worker 125*d5c09012SAndroid Build Coastguard Worker // The list of POSIX accounts associated with the user. 126*d5c09012SAndroid Build Coastguard Worker repeated google.cloud.oslogin.common.PosixAccount posix_accounts = 2; 127*d5c09012SAndroid Build Coastguard Worker 128*d5c09012SAndroid Build Coastguard Worker // A map from SSH public key fingerprint to the associated key object. 129*d5c09012SAndroid Build Coastguard Worker map<string, google.cloud.oslogin.common.SshPublicKey> ssh_public_keys = 3; 130*d5c09012SAndroid Build Coastguard Worker} 131*d5c09012SAndroid Build Coastguard Worker 132*d5c09012SAndroid Build Coastguard Worker// A request message for creating an SSH public key. 133*d5c09012SAndroid Build Coastguard Workermessage CreateSshPublicKeyRequest { 134*d5c09012SAndroid Build Coastguard Worker // Required. The unique ID for the user in format `users/{user}`. 135*d5c09012SAndroid Build Coastguard Worker string parent = 1 [ 136*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 137*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 138*d5c09012SAndroid Build Coastguard Worker child_type: "oslogin.googleapis.com/SshPublicKey" 139*d5c09012SAndroid Build Coastguard Worker } 140*d5c09012SAndroid Build Coastguard Worker ]; 141*d5c09012SAndroid Build Coastguard Worker 142*d5c09012SAndroid Build Coastguard Worker // Required. The SSH public key and expiration time. 143*d5c09012SAndroid Build Coastguard Worker google.cloud.oslogin.common.SshPublicKey ssh_public_key = 2 144*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = REQUIRED]; 145*d5c09012SAndroid Build Coastguard Worker} 146*d5c09012SAndroid Build Coastguard Worker 147*d5c09012SAndroid Build Coastguard Worker// A request message for deleting a POSIX account entry. 148*d5c09012SAndroid Build Coastguard Workermessage DeletePosixAccountRequest { 149*d5c09012SAndroid Build Coastguard Worker // Required. A reference to the POSIX account to update. POSIX accounts are 150*d5c09012SAndroid Build Coastguard Worker // identified by the project ID they are associated with. A reference to the 151*d5c09012SAndroid Build Coastguard Worker // POSIX account is in format `users/{user}/projects/{project}`. 152*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 153*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 154*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 155*d5c09012SAndroid Build Coastguard Worker type: "oslogin.googleapis.com/PosixAccount" 156*d5c09012SAndroid Build Coastguard Worker } 157*d5c09012SAndroid Build Coastguard Worker ]; 158*d5c09012SAndroid Build Coastguard Worker} 159*d5c09012SAndroid Build Coastguard Worker 160*d5c09012SAndroid Build Coastguard Worker// A request message for deleting an SSH public key. 161*d5c09012SAndroid Build Coastguard Workermessage DeleteSshPublicKeyRequest { 162*d5c09012SAndroid Build Coastguard Worker // Required. The fingerprint of the public key to update. Public keys are 163*d5c09012SAndroid Build Coastguard Worker // identified by their SHA-256 fingerprint. The fingerprint of the public key 164*d5c09012SAndroid Build Coastguard Worker // is in format `users/{user}/sshPublicKeys/{fingerprint}`. 165*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 166*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 167*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 168*d5c09012SAndroid Build Coastguard Worker type: "oslogin.googleapis.com/SshPublicKey" 169*d5c09012SAndroid Build Coastguard Worker } 170*d5c09012SAndroid Build Coastguard Worker ]; 171*d5c09012SAndroid Build Coastguard Worker} 172*d5c09012SAndroid Build Coastguard Worker 173*d5c09012SAndroid Build Coastguard Worker// A request message for retrieving the login profile information for a user. 174*d5c09012SAndroid Build Coastguard Workermessage GetLoginProfileRequest { 175*d5c09012SAndroid Build Coastguard Worker // Required. The unique ID for the user in format `users/{user}`. 176*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 177*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 178*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 179*d5c09012SAndroid Build Coastguard Worker child_type: "oslogin.googleapis.com/PosixAccount" 180*d5c09012SAndroid Build Coastguard Worker } 181*d5c09012SAndroid Build Coastguard Worker ]; 182*d5c09012SAndroid Build Coastguard Worker 183*d5c09012SAndroid Build Coastguard Worker // The project ID of the Google Cloud Platform project. 184*d5c09012SAndroid Build Coastguard Worker string project_id = 2; 185*d5c09012SAndroid Build Coastguard Worker 186*d5c09012SAndroid Build Coastguard Worker // A system ID for filtering the results of the request. 187*d5c09012SAndroid Build Coastguard Worker string system_id = 3; 188*d5c09012SAndroid Build Coastguard Worker} 189*d5c09012SAndroid Build Coastguard Worker 190*d5c09012SAndroid Build Coastguard Worker// A request message for retrieving an SSH public key. 191*d5c09012SAndroid Build Coastguard Workermessage GetSshPublicKeyRequest { 192*d5c09012SAndroid Build Coastguard Worker // Required. The fingerprint of the public key to retrieve. Public keys are 193*d5c09012SAndroid Build Coastguard Worker // identified by their SHA-256 fingerprint. The fingerprint of the public key 194*d5c09012SAndroid Build Coastguard Worker // is in format `users/{user}/sshPublicKeys/{fingerprint}`. 195*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 196*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 197*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 198*d5c09012SAndroid Build Coastguard Worker type: "oslogin.googleapis.com/SshPublicKey" 199*d5c09012SAndroid Build Coastguard Worker } 200*d5c09012SAndroid Build Coastguard Worker ]; 201*d5c09012SAndroid Build Coastguard Worker} 202*d5c09012SAndroid Build Coastguard Worker 203*d5c09012SAndroid Build Coastguard Worker// A request message for importing an SSH public key. 204*d5c09012SAndroid Build Coastguard Workermessage ImportSshPublicKeyRequest { 205*d5c09012SAndroid Build Coastguard Worker // Required. The unique ID for the user in format `users/{user}`. 206*d5c09012SAndroid Build Coastguard Worker string parent = 1 [ 207*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 208*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 209*d5c09012SAndroid Build Coastguard Worker child_type: "oslogin.googleapis.com/SshPublicKey" 210*d5c09012SAndroid Build Coastguard Worker } 211*d5c09012SAndroid Build Coastguard Worker ]; 212*d5c09012SAndroid Build Coastguard Worker 213*d5c09012SAndroid Build Coastguard Worker // Optional. The SSH public key and expiration time. 214*d5c09012SAndroid Build Coastguard Worker google.cloud.oslogin.common.SshPublicKey ssh_public_key = 2 215*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 216*d5c09012SAndroid Build Coastguard Worker 217*d5c09012SAndroid Build Coastguard Worker // The project ID of the Google Cloud Platform project. 218*d5c09012SAndroid Build Coastguard Worker string project_id = 3; 219*d5c09012SAndroid Build Coastguard Worker 220*d5c09012SAndroid Build Coastguard Worker // Optional. The regions to which to assert that the key was written. 221*d5c09012SAndroid Build Coastguard Worker // If unspecified, defaults to all regions. 222*d5c09012SAndroid Build Coastguard Worker // Regions are listed at https://cloud.google.com/about/locations#region. 223*d5c09012SAndroid Build Coastguard Worker repeated string regions = 5 [(google.api.field_behavior) = OPTIONAL]; 224*d5c09012SAndroid Build Coastguard Worker} 225*d5c09012SAndroid Build Coastguard Worker 226*d5c09012SAndroid Build Coastguard Worker// A response message for importing an SSH public key. 227*d5c09012SAndroid Build Coastguard Workermessage ImportSshPublicKeyResponse { 228*d5c09012SAndroid Build Coastguard Worker // The login profile information for the user. 229*d5c09012SAndroid Build Coastguard Worker LoginProfile login_profile = 1; 230*d5c09012SAndroid Build Coastguard Worker 231*d5c09012SAndroid Build Coastguard Worker // Detailed information about import results. 232*d5c09012SAndroid Build Coastguard Worker string details = 2; 233*d5c09012SAndroid Build Coastguard Worker} 234*d5c09012SAndroid Build Coastguard Worker 235*d5c09012SAndroid Build Coastguard Worker// A request message for updating an SSH public key. 236*d5c09012SAndroid Build Coastguard Workermessage UpdateSshPublicKeyRequest { 237*d5c09012SAndroid Build Coastguard Worker // Required. The fingerprint of the public key to update. Public keys are 238*d5c09012SAndroid Build Coastguard Worker // identified by their SHA-256 fingerprint. The fingerprint of the public key 239*d5c09012SAndroid Build Coastguard Worker // is in format `users/{user}/sshPublicKeys/{fingerprint}`. 240*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 241*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 242*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 243*d5c09012SAndroid Build Coastguard Worker type: "oslogin.googleapis.com/SshPublicKey" 244*d5c09012SAndroid Build Coastguard Worker } 245*d5c09012SAndroid Build Coastguard Worker ]; 246*d5c09012SAndroid Build Coastguard Worker 247*d5c09012SAndroid Build Coastguard Worker // Required. The SSH public key and expiration time. 248*d5c09012SAndroid Build Coastguard Worker google.cloud.oslogin.common.SshPublicKey ssh_public_key = 2 249*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = REQUIRED]; 250*d5c09012SAndroid Build Coastguard Worker 251*d5c09012SAndroid Build Coastguard Worker // Mask to control which fields get updated. Updates all if not present. 252*d5c09012SAndroid Build Coastguard Worker google.protobuf.FieldMask update_mask = 3; 253*d5c09012SAndroid Build Coastguard Worker} 254