xref: /aosp_15_r20/external/googleapis/google/cloud/oslogin/v1/oslogin.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.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