xref: /aosp_15_r20/external/googleapis/google/cloud/resourcemanager/v3/projects.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.resourcemanager.v3;
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/iam/v1/iam_policy.proto";
24*d5c09012SAndroid Build Coastguard Workerimport "google/iam/v1/policy.proto";
25*d5c09012SAndroid Build Coastguard Workerimport "google/longrunning/operations.proto";
26*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/field_mask.proto";
27*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto";
28*d5c09012SAndroid Build Coastguard Worker
29*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.ResourceManager.V3";
30*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/resourcemanager/apiv3/resourcemanagerpb;resourcemanagerpb";
31*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true;
32*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ProjectsProto";
33*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.resourcemanager.v3";
34*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\ResourceManager\\V3";
35*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::ResourceManager::V3";
36*d5c09012SAndroid Build Coastguard Worker
37*d5c09012SAndroid Build Coastguard Worker// Manages Google Cloud Projects.
38*d5c09012SAndroid Build Coastguard Workerservice Projects {
39*d5c09012SAndroid Build Coastguard Worker  option (google.api.default_host) = "cloudresourcemanager.googleapis.com";
40*d5c09012SAndroid Build Coastguard Worker  option (google.api.oauth_scopes) =
41*d5c09012SAndroid Build Coastguard Worker      "https://www.googleapis.com/auth/cloud-platform,"
42*d5c09012SAndroid Build Coastguard Worker      "https://www.googleapis.com/auth/cloud-platform.read-only";
43*d5c09012SAndroid Build Coastguard Worker
44*d5c09012SAndroid Build Coastguard Worker  // Retrieves the project identified by the specified `name` (for example,
45*d5c09012SAndroid Build Coastguard Worker  // `projects/415104041262`).
46*d5c09012SAndroid Build Coastguard Worker  //
47*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.projects.get` permission
48*d5c09012SAndroid Build Coastguard Worker  // for this project.
49*d5c09012SAndroid Build Coastguard Worker  rpc GetProject(GetProjectRequest) returns (Project) {
50*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
51*d5c09012SAndroid Build Coastguard Worker      get: "/v3/{name=projects/*}"
52*d5c09012SAndroid Build Coastguard Worker    };
53*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
54*d5c09012SAndroid Build Coastguard Worker  }
55*d5c09012SAndroid Build Coastguard Worker
56*d5c09012SAndroid Build Coastguard Worker  // Lists projects that are direct children of the specified folder or
57*d5c09012SAndroid Build Coastguard Worker  // organization resource. `list()` provides a strongly consistent view of the
58*d5c09012SAndroid Build Coastguard Worker  // projects underneath the specified parent resource. `list()` returns
59*d5c09012SAndroid Build Coastguard Worker  // projects sorted based upon the (ascending) lexical ordering of their
60*d5c09012SAndroid Build Coastguard Worker  // `display_name`. The caller must have `resourcemanager.projects.list`
61*d5c09012SAndroid Build Coastguard Worker  // permission on the identified parent.
62*d5c09012SAndroid Build Coastguard Worker  rpc ListProjects(ListProjectsRequest) returns (ListProjectsResponse) {
63*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
64*d5c09012SAndroid Build Coastguard Worker      get: "/v3/projects"
65*d5c09012SAndroid Build Coastguard Worker    };
66*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "parent";
67*d5c09012SAndroid Build Coastguard Worker  }
68*d5c09012SAndroid Build Coastguard Worker
69*d5c09012SAndroid Build Coastguard Worker  // Search for projects that the caller has both `resourcemanager.projects.get`
70*d5c09012SAndroid Build Coastguard Worker  // permission on, and also satisfy the specified query.
71*d5c09012SAndroid Build Coastguard Worker  //
72*d5c09012SAndroid Build Coastguard Worker  // This method returns projects in an unspecified order.
73*d5c09012SAndroid Build Coastguard Worker  //
74*d5c09012SAndroid Build Coastguard Worker  // This method is eventually consistent with project mutations; this means
75*d5c09012SAndroid Build Coastguard Worker  // that a newly created project may not appear in the results or recent
76*d5c09012SAndroid Build Coastguard Worker  // updates to an existing project may not be reflected in the results. To
77*d5c09012SAndroid Build Coastguard Worker  // retrieve the latest state of a project, use the
78*d5c09012SAndroid Build Coastguard Worker  // [GetProject][google.cloud.resourcemanager.v3.Projects.GetProject] method.
79*d5c09012SAndroid Build Coastguard Worker  rpc SearchProjects(SearchProjectsRequest) returns (SearchProjectsResponse) {
80*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
81*d5c09012SAndroid Build Coastguard Worker      get: "/v3/projects:search"
82*d5c09012SAndroid Build Coastguard Worker    };
83*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "query";
84*d5c09012SAndroid Build Coastguard Worker  }
85*d5c09012SAndroid Build Coastguard Worker
86*d5c09012SAndroid Build Coastguard Worker  // Request that a new project be created. The result is an `Operation` which
87*d5c09012SAndroid Build Coastguard Worker  // can be used to track the creation process. This process usually takes a few
88*d5c09012SAndroid Build Coastguard Worker  // seconds, but can sometimes take much longer. The tracking `Operation` is
89*d5c09012SAndroid Build Coastguard Worker  // automatically deleted after a few hours, so there is no need to call
90*d5c09012SAndroid Build Coastguard Worker  // `DeleteOperation`.
91*d5c09012SAndroid Build Coastguard Worker  rpc CreateProject(CreateProjectRequest)
92*d5c09012SAndroid Build Coastguard Worker      returns (google.longrunning.Operation) {
93*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
94*d5c09012SAndroid Build Coastguard Worker      post: "/v3/projects"
95*d5c09012SAndroid Build Coastguard Worker      body: "project"
96*d5c09012SAndroid Build Coastguard Worker    };
97*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "project";
98*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
99*d5c09012SAndroid Build Coastguard Worker      response_type: "Project"
100*d5c09012SAndroid Build Coastguard Worker      metadata_type: "CreateProjectMetadata"
101*d5c09012SAndroid Build Coastguard Worker    };
102*d5c09012SAndroid Build Coastguard Worker  }
103*d5c09012SAndroid Build Coastguard Worker
104*d5c09012SAndroid Build Coastguard Worker  // Updates the `display_name` and labels of the project identified by the
105*d5c09012SAndroid Build Coastguard Worker  // specified `name` (for example, `projects/415104041262`). Deleting all
106*d5c09012SAndroid Build Coastguard Worker  // labels requires an update mask for labels field.
107*d5c09012SAndroid Build Coastguard Worker  //
108*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.projects.update` permission for this
109*d5c09012SAndroid Build Coastguard Worker  // project.
110*d5c09012SAndroid Build Coastguard Worker  rpc UpdateProject(UpdateProjectRequest)
111*d5c09012SAndroid Build Coastguard Worker      returns (google.longrunning.Operation) {
112*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
113*d5c09012SAndroid Build Coastguard Worker      patch: "/v3/{project.name=projects/*}"
114*d5c09012SAndroid Build Coastguard Worker      body: "project"
115*d5c09012SAndroid Build Coastguard Worker    };
116*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "project,update_mask";
117*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
118*d5c09012SAndroid Build Coastguard Worker      response_type: "Project"
119*d5c09012SAndroid Build Coastguard Worker      metadata_type: "UpdateProjectMetadata"
120*d5c09012SAndroid Build Coastguard Worker    };
121*d5c09012SAndroid Build Coastguard Worker  }
122*d5c09012SAndroid Build Coastguard Worker
123*d5c09012SAndroid Build Coastguard Worker  // Move a project to another place in your resource hierarchy, under a new
124*d5c09012SAndroid Build Coastguard Worker  // resource parent.
125*d5c09012SAndroid Build Coastguard Worker  //
126*d5c09012SAndroid Build Coastguard Worker  // Returns an operation which can be used to track the process of the project
127*d5c09012SAndroid Build Coastguard Worker  // move workflow.
128*d5c09012SAndroid Build Coastguard Worker  // Upon success, the `Operation.response` field will be populated with the
129*d5c09012SAndroid Build Coastguard Worker  // moved project.
130*d5c09012SAndroid Build Coastguard Worker  //
131*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.projects.move` permission on the
132*d5c09012SAndroid Build Coastguard Worker  // project, on the project's current and proposed new parent.
133*d5c09012SAndroid Build Coastguard Worker  //
134*d5c09012SAndroid Build Coastguard Worker  // If project has no current parent, or it currently does not have an
135*d5c09012SAndroid Build Coastguard Worker  // associated organization resource, you will also need the
136*d5c09012SAndroid Build Coastguard Worker  // `resourcemanager.projects.setIamPolicy` permission in the project.
137*d5c09012SAndroid Build Coastguard Worker  //
138*d5c09012SAndroid Build Coastguard Worker  //
139*d5c09012SAndroid Build Coastguard Worker  rpc MoveProject(MoveProjectRequest) returns (google.longrunning.Operation) {
140*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
141*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{name=projects/*}:move"
142*d5c09012SAndroid Build Coastguard Worker      body: "*"
143*d5c09012SAndroid Build Coastguard Worker    };
144*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name, destination_parent";
145*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
146*d5c09012SAndroid Build Coastguard Worker      response_type: "Project"
147*d5c09012SAndroid Build Coastguard Worker      metadata_type: "MoveProjectMetadata"
148*d5c09012SAndroid Build Coastguard Worker    };
149*d5c09012SAndroid Build Coastguard Worker  }
150*d5c09012SAndroid Build Coastguard Worker
151*d5c09012SAndroid Build Coastguard Worker  // Marks the project identified by the specified
152*d5c09012SAndroid Build Coastguard Worker  // `name` (for example, `projects/415104041262`) for deletion.
153*d5c09012SAndroid Build Coastguard Worker  //
154*d5c09012SAndroid Build Coastguard Worker  // This method will only affect the project if it has a lifecycle state of
155*d5c09012SAndroid Build Coastguard Worker  // [ACTIVE][google.cloud.resourcemanager.v3.Project.State.ACTIVE].
156*d5c09012SAndroid Build Coastguard Worker  //
157*d5c09012SAndroid Build Coastguard Worker  // This method changes the Project's lifecycle state from
158*d5c09012SAndroid Build Coastguard Worker  // [ACTIVE][google.cloud.resourcemanager.v3.Project.State.ACTIVE]
159*d5c09012SAndroid Build Coastguard Worker  // to
160*d5c09012SAndroid Build Coastguard Worker  // [DELETE_REQUESTED][google.cloud.resourcemanager.v3.Project.State.DELETE_REQUESTED].
161*d5c09012SAndroid Build Coastguard Worker  // The deletion starts at an unspecified time,
162*d5c09012SAndroid Build Coastguard Worker  // at which point the Project is no longer accessible.
163*d5c09012SAndroid Build Coastguard Worker  //
164*d5c09012SAndroid Build Coastguard Worker  // Until the deletion completes, you can check the lifecycle state
165*d5c09012SAndroid Build Coastguard Worker  // checked by retrieving the project with [GetProject]
166*d5c09012SAndroid Build Coastguard Worker  // [google.cloud.resourcemanager.v3.Projects.GetProject],
167*d5c09012SAndroid Build Coastguard Worker  // and the project remains visible to [ListProjects]
168*d5c09012SAndroid Build Coastguard Worker  // [google.cloud.resourcemanager.v3.Projects.ListProjects].
169*d5c09012SAndroid Build Coastguard Worker  // However, you cannot update the project.
170*d5c09012SAndroid Build Coastguard Worker  //
171*d5c09012SAndroid Build Coastguard Worker  // After the deletion completes, the project is not retrievable by
172*d5c09012SAndroid Build Coastguard Worker  // the  [GetProject]
173*d5c09012SAndroid Build Coastguard Worker  // [google.cloud.resourcemanager.v3.Projects.GetProject],
174*d5c09012SAndroid Build Coastguard Worker  // [ListProjects]
175*d5c09012SAndroid Build Coastguard Worker  // [google.cloud.resourcemanager.v3.Projects.ListProjects], and
176*d5c09012SAndroid Build Coastguard Worker  // [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects]
177*d5c09012SAndroid Build Coastguard Worker  // methods.
178*d5c09012SAndroid Build Coastguard Worker  //
179*d5c09012SAndroid Build Coastguard Worker  // This method behaves idempotently, such that deleting a `DELETE_REQUESTED`
180*d5c09012SAndroid Build Coastguard Worker  // project will not cause an error, but also won't do anything.
181*d5c09012SAndroid Build Coastguard Worker  //
182*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.projects.delete` permissions for this
183*d5c09012SAndroid Build Coastguard Worker  // project.
184*d5c09012SAndroid Build Coastguard Worker  rpc DeleteProject(DeleteProjectRequest)
185*d5c09012SAndroid Build Coastguard Worker      returns (google.longrunning.Operation) {
186*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
187*d5c09012SAndroid Build Coastguard Worker      delete: "/v3/{name=projects/*}"
188*d5c09012SAndroid Build Coastguard Worker    };
189*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
190*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
191*d5c09012SAndroid Build Coastguard Worker      response_type: "Project"
192*d5c09012SAndroid Build Coastguard Worker      metadata_type: "DeleteProjectMetadata"
193*d5c09012SAndroid Build Coastguard Worker    };
194*d5c09012SAndroid Build Coastguard Worker  }
195*d5c09012SAndroid Build Coastguard Worker
196*d5c09012SAndroid Build Coastguard Worker  // Restores the project identified by the specified
197*d5c09012SAndroid Build Coastguard Worker  // `name` (for example, `projects/415104041262`).
198*d5c09012SAndroid Build Coastguard Worker  // You can only use this method for a project that has a lifecycle state of
199*d5c09012SAndroid Build Coastguard Worker  // [DELETE_REQUESTED]
200*d5c09012SAndroid Build Coastguard Worker  // [Projects.State.DELETE_REQUESTED].
201*d5c09012SAndroid Build Coastguard Worker  // After deletion starts, the project cannot be restored.
202*d5c09012SAndroid Build Coastguard Worker  //
203*d5c09012SAndroid Build Coastguard Worker  // The caller must have `resourcemanager.projects.undelete` permission for
204*d5c09012SAndroid Build Coastguard Worker  // this project.
205*d5c09012SAndroid Build Coastguard Worker  rpc UndeleteProject(UndeleteProjectRequest)
206*d5c09012SAndroid Build Coastguard Worker      returns (google.longrunning.Operation) {
207*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
208*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{name=projects/*}:undelete"
209*d5c09012SAndroid Build Coastguard Worker      body: "*"
210*d5c09012SAndroid Build Coastguard Worker    };
211*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "name";
212*d5c09012SAndroid Build Coastguard Worker    option (google.longrunning.operation_info) = {
213*d5c09012SAndroid Build Coastguard Worker      response_type: "Project"
214*d5c09012SAndroid Build Coastguard Worker      metadata_type: "UndeleteProjectMetadata"
215*d5c09012SAndroid Build Coastguard Worker    };
216*d5c09012SAndroid Build Coastguard Worker  }
217*d5c09012SAndroid Build Coastguard Worker
218*d5c09012SAndroid Build Coastguard Worker  // Returns the IAM access control policy for the specified project, in the
219*d5c09012SAndroid Build Coastguard Worker  // format `projects/{ProjectIdOrNumber}` e.g. projects/123.
220*d5c09012SAndroid Build Coastguard Worker  // Permission is denied if the policy or the resource do not exist.
221*d5c09012SAndroid Build Coastguard Worker  rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest)
222*d5c09012SAndroid Build Coastguard Worker      returns (google.iam.v1.Policy) {
223*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
224*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{resource=projects/*}:getIamPolicy"
225*d5c09012SAndroid Build Coastguard Worker      body: "*"
226*d5c09012SAndroid Build Coastguard Worker    };
227*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "resource";
228*d5c09012SAndroid Build Coastguard Worker  }
229*d5c09012SAndroid Build Coastguard Worker
230*d5c09012SAndroid Build Coastguard Worker  // Sets the IAM access control policy for the specified project, in the
231*d5c09012SAndroid Build Coastguard Worker  // format `projects/{ProjectIdOrNumber}` e.g. projects/123.
232*d5c09012SAndroid Build Coastguard Worker  //
233*d5c09012SAndroid Build Coastguard Worker  // CAUTION: This method will replace the existing policy, and cannot be used
234*d5c09012SAndroid Build Coastguard Worker  // to append additional IAM settings.
235*d5c09012SAndroid Build Coastguard Worker  //
236*d5c09012SAndroid Build Coastguard Worker  // Note: Removing service accounts from policies or changing their roles can
237*d5c09012SAndroid Build Coastguard Worker  // render services completely inoperable. It is important to understand how
238*d5c09012SAndroid Build Coastguard Worker  // the service account is being used before removing or updating its roles.
239*d5c09012SAndroid Build Coastguard Worker  //
240*d5c09012SAndroid Build Coastguard Worker  // The following constraints apply when using `setIamPolicy()`:
241*d5c09012SAndroid Build Coastguard Worker  //
242*d5c09012SAndroid Build Coastguard Worker  // + Project does not support `allUsers` and `allAuthenticatedUsers` as
243*d5c09012SAndroid Build Coastguard Worker  // `members` in a `Binding` of a `Policy`.
244*d5c09012SAndroid Build Coastguard Worker  //
245*d5c09012SAndroid Build Coastguard Worker  // + The owner role can be granted to a `user`, `serviceAccount`, or a group
246*d5c09012SAndroid Build Coastguard Worker  // that is part of an organization. For example,
247*d5c09012SAndroid Build Coastguard Worker  // [email protected] could be added as an owner to a project in
248*d5c09012SAndroid Build Coastguard Worker  // the myownpersonaldomain.com organization, but not the examplepetstore.com
249*d5c09012SAndroid Build Coastguard Worker  // organization.
250*d5c09012SAndroid Build Coastguard Worker  //
251*d5c09012SAndroid Build Coastguard Worker  // + Service accounts can be made owners of a project directly
252*d5c09012SAndroid Build Coastguard Worker  // without any restrictions. However, to be added as an owner, a user must be
253*d5c09012SAndroid Build Coastguard Worker  // invited using the Cloud Platform console and must accept the invitation.
254*d5c09012SAndroid Build Coastguard Worker  //
255*d5c09012SAndroid Build Coastguard Worker  // + A user cannot be granted the owner role using `setIamPolicy()`. The user
256*d5c09012SAndroid Build Coastguard Worker  // must be granted the owner role using the Cloud Platform Console and must
257*d5c09012SAndroid Build Coastguard Worker  // explicitly accept the invitation.
258*d5c09012SAndroid Build Coastguard Worker  //
259*d5c09012SAndroid Build Coastguard Worker  // + Invitations to grant the owner role cannot be sent using
260*d5c09012SAndroid Build Coastguard Worker  // `setIamPolicy()`;
261*d5c09012SAndroid Build Coastguard Worker  // they must be sent only using the Cloud Platform Console.
262*d5c09012SAndroid Build Coastguard Worker  //
263*d5c09012SAndroid Build Coastguard Worker  // + If the project is not part of an organization, there must be at least
264*d5c09012SAndroid Build Coastguard Worker  // one owner who has accepted the Terms of Service (ToS) agreement in the
265*d5c09012SAndroid Build Coastguard Worker  // policy. Calling `setIamPolicy()` to remove the last ToS-accepted owner
266*d5c09012SAndroid Build Coastguard Worker  // from the policy will fail. This restriction also applies to legacy
267*d5c09012SAndroid Build Coastguard Worker  // projects that no longer have owners who have accepted the ToS. Edits to
268*d5c09012SAndroid Build Coastguard Worker  // IAM policies will be rejected until the lack of a ToS-accepting owner is
269*d5c09012SAndroid Build Coastguard Worker  // rectified. If the project is part of an organization, you can remove all
270*d5c09012SAndroid Build Coastguard Worker  // owners, potentially making the organization inaccessible.
271*d5c09012SAndroid Build Coastguard Worker  rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest)
272*d5c09012SAndroid Build Coastguard Worker      returns (google.iam.v1.Policy) {
273*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
274*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{resource=projects/*}:setIamPolicy"
275*d5c09012SAndroid Build Coastguard Worker      body: "*"
276*d5c09012SAndroid Build Coastguard Worker    };
277*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "resource, policy";
278*d5c09012SAndroid Build Coastguard Worker  }
279*d5c09012SAndroid Build Coastguard Worker
280*d5c09012SAndroid Build Coastguard Worker  // Returns permissions that a caller has on the specified project, in the
281*d5c09012SAndroid Build Coastguard Worker  // format `projects/{ProjectIdOrNumber}` e.g. projects/123..
282*d5c09012SAndroid Build Coastguard Worker  rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest)
283*d5c09012SAndroid Build Coastguard Worker      returns (google.iam.v1.TestIamPermissionsResponse) {
284*d5c09012SAndroid Build Coastguard Worker    option (google.api.http) = {
285*d5c09012SAndroid Build Coastguard Worker      post: "/v3/{resource=projects/*}:testIamPermissions"
286*d5c09012SAndroid Build Coastguard Worker      body: "*"
287*d5c09012SAndroid Build Coastguard Worker    };
288*d5c09012SAndroid Build Coastguard Worker    option (google.api.method_signature) = "resource, permissions";
289*d5c09012SAndroid Build Coastguard Worker  }
290*d5c09012SAndroid Build Coastguard Worker}
291*d5c09012SAndroid Build Coastguard Worker
292*d5c09012SAndroid Build Coastguard Worker// A project is a high-level Google Cloud entity. It is a
293*d5c09012SAndroid Build Coastguard Worker// container for ACLs, APIs, App Engine Apps, VMs, and other
294*d5c09012SAndroid Build Coastguard Worker// Google Cloud Platform resources.
295*d5c09012SAndroid Build Coastguard Workermessage Project {
296*d5c09012SAndroid Build Coastguard Worker  option (google.api.resource) = {
297*d5c09012SAndroid Build Coastguard Worker    type: "cloudresourcemanager.googleapis.com/Project"
298*d5c09012SAndroid Build Coastguard Worker    pattern: "projects/{project}"
299*d5c09012SAndroid Build Coastguard Worker    style: DECLARATIVE_FRIENDLY
300*d5c09012SAndroid Build Coastguard Worker  };
301*d5c09012SAndroid Build Coastguard Worker
302*d5c09012SAndroid Build Coastguard Worker  // Project lifecycle states.
303*d5c09012SAndroid Build Coastguard Worker  enum State {
304*d5c09012SAndroid Build Coastguard Worker    // Unspecified state.  This is only used/useful for distinguishing
305*d5c09012SAndroid Build Coastguard Worker    // unset values.
306*d5c09012SAndroid Build Coastguard Worker    STATE_UNSPECIFIED = 0;
307*d5c09012SAndroid Build Coastguard Worker
308*d5c09012SAndroid Build Coastguard Worker    // The normal and active state.
309*d5c09012SAndroid Build Coastguard Worker    ACTIVE = 1;
310*d5c09012SAndroid Build Coastguard Worker
311*d5c09012SAndroid Build Coastguard Worker    // The project has been marked for deletion by the user
312*d5c09012SAndroid Build Coastguard Worker    // (by invoking
313*d5c09012SAndroid Build Coastguard Worker    // [DeleteProject][google.cloud.resourcemanager.v3.Projects.DeleteProject])
314*d5c09012SAndroid Build Coastguard Worker    // or by the system (Google Cloud Platform).
315*d5c09012SAndroid Build Coastguard Worker    // This can generally be reversed by invoking [UndeleteProject]
316*d5c09012SAndroid Build Coastguard Worker    // [google.cloud.resourcemanager.v3.Projects.UndeleteProject].
317*d5c09012SAndroid Build Coastguard Worker    DELETE_REQUESTED = 2;
318*d5c09012SAndroid Build Coastguard Worker  }
319*d5c09012SAndroid Build Coastguard Worker
320*d5c09012SAndroid Build Coastguard Worker  // Output only. The unique resource name of the project. It is an int64
321*d5c09012SAndroid Build Coastguard Worker  // generated number prefixed by "projects/".
322*d5c09012SAndroid Build Coastguard Worker  //
323*d5c09012SAndroid Build Coastguard Worker  // Example: `projects/415104041262`
324*d5c09012SAndroid Build Coastguard Worker  string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
325*d5c09012SAndroid Build Coastguard Worker
326*d5c09012SAndroid Build Coastguard Worker  // Optional. A reference to a parent Resource. eg., `organizations/123` or
327*d5c09012SAndroid Build Coastguard Worker  // `folders/876`.
328*d5c09012SAndroid Build Coastguard Worker  string parent = 2 [(google.api.field_behavior) = OPTIONAL];
329*d5c09012SAndroid Build Coastguard Worker
330*d5c09012SAndroid Build Coastguard Worker  // Immutable. The unique, user-assigned id of the project.
331*d5c09012SAndroid Build Coastguard Worker  // It must be 6 to 30 lowercase ASCII letters, digits, or hyphens.
332*d5c09012SAndroid Build Coastguard Worker  // It must start with a letter.
333*d5c09012SAndroid Build Coastguard Worker  // Trailing hyphens are prohibited.
334*d5c09012SAndroid Build Coastguard Worker  //
335*d5c09012SAndroid Build Coastguard Worker  // Example: `tokyo-rain-123`
336*d5c09012SAndroid Build Coastguard Worker  string project_id = 3 [(google.api.field_behavior) = IMMUTABLE];
337*d5c09012SAndroid Build Coastguard Worker
338*d5c09012SAndroid Build Coastguard Worker  // Output only. The project lifecycle state.
339*d5c09012SAndroid Build Coastguard Worker  State state = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
340*d5c09012SAndroid Build Coastguard Worker
341*d5c09012SAndroid Build Coastguard Worker  // Optional. A user-assigned display name of the project.
342*d5c09012SAndroid Build Coastguard Worker  // When present it must be between 4 to 30 characters.
343*d5c09012SAndroid Build Coastguard Worker  // Allowed characters are: lowercase and uppercase letters, numbers,
344*d5c09012SAndroid Build Coastguard Worker  // hyphen, single-quote, double-quote, space, and exclamation point.
345*d5c09012SAndroid Build Coastguard Worker  //
346*d5c09012SAndroid Build Coastguard Worker  // Example: `My Project`
347*d5c09012SAndroid Build Coastguard Worker  string display_name = 5 [(google.api.field_behavior) = OPTIONAL];
348*d5c09012SAndroid Build Coastguard Worker
349*d5c09012SAndroid Build Coastguard Worker  // Output only. Creation time.
350*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 6
351*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
352*d5c09012SAndroid Build Coastguard Worker
353*d5c09012SAndroid Build Coastguard Worker  // Output only. The most recent time this resource was modified.
354*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp update_time = 7
355*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
356*d5c09012SAndroid Build Coastguard Worker
357*d5c09012SAndroid Build Coastguard Worker  // Output only. The time at which this resource was requested for deletion.
358*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp delete_time = 8
359*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OUTPUT_ONLY];
360*d5c09012SAndroid Build Coastguard Worker
361*d5c09012SAndroid Build Coastguard Worker  // Output only. A checksum computed by the server based on the current value
362*d5c09012SAndroid Build Coastguard Worker  // of the Project resource. This may be sent on update and delete requests to
363*d5c09012SAndroid Build Coastguard Worker  // ensure the client has an up-to-date value before proceeding.
364*d5c09012SAndroid Build Coastguard Worker  string etag = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
365*d5c09012SAndroid Build Coastguard Worker
366*d5c09012SAndroid Build Coastguard Worker  // Optional. The labels associated with this project.
367*d5c09012SAndroid Build Coastguard Worker  //
368*d5c09012SAndroid Build Coastguard Worker  // Label keys must be between 1 and 63 characters long and must conform
369*d5c09012SAndroid Build Coastguard Worker  // to the following regular expression: \[a-z\](\[-a-z0-9\]*\[a-z0-9\])?.
370*d5c09012SAndroid Build Coastguard Worker  //
371*d5c09012SAndroid Build Coastguard Worker  // Label values must be between 0 and 63 characters long and must conform
372*d5c09012SAndroid Build Coastguard Worker  // to the regular expression (\[a-z\](\[-a-z0-9\]*\[a-z0-9\])?)?.
373*d5c09012SAndroid Build Coastguard Worker  //
374*d5c09012SAndroid Build Coastguard Worker  // No more than 64 labels can be associated with a given resource.
375*d5c09012SAndroid Build Coastguard Worker  //
376*d5c09012SAndroid Build Coastguard Worker  // Clients should store labels in a representation such as JSON that does not
377*d5c09012SAndroid Build Coastguard Worker  // depend on specific characters being disallowed.
378*d5c09012SAndroid Build Coastguard Worker  //
379*d5c09012SAndroid Build Coastguard Worker  // Example: `"myBusinessDimension" : "businessValue"`
380*d5c09012SAndroid Build Coastguard Worker  map<string, string> labels = 10 [(google.api.field_behavior) = OPTIONAL];
381*d5c09012SAndroid Build Coastguard Worker}
382*d5c09012SAndroid Build Coastguard Worker
383*d5c09012SAndroid Build Coastguard Worker// The request sent to the
384*d5c09012SAndroid Build Coastguard Worker// [GetProject][google.cloud.resourcemanager.v3.Projects.GetProject]
385*d5c09012SAndroid Build Coastguard Worker// method.
386*d5c09012SAndroid Build Coastguard Workermessage GetProjectRequest {
387*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the project (for example, `projects/415104041262`).
388*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
389*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
390*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
391*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Project"
392*d5c09012SAndroid Build Coastguard Worker    }
393*d5c09012SAndroid Build Coastguard Worker  ];
394*d5c09012SAndroid Build Coastguard Worker}
395*d5c09012SAndroid Build Coastguard Worker
396*d5c09012SAndroid Build Coastguard Worker// The request sent to the
397*d5c09012SAndroid Build Coastguard Worker// [ListProjects][google.cloud.resourcemanager.v3.Projects.ListProjects]
398*d5c09012SAndroid Build Coastguard Worker// method.
399*d5c09012SAndroid Build Coastguard Workermessage ListProjectsRequest {
400*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the parent resource whose projects are being listed.
401*d5c09012SAndroid Build Coastguard Worker  // Only children of this parent resource are listed; descendants are not
402*d5c09012SAndroid Build Coastguard Worker  // listed.
403*d5c09012SAndroid Build Coastguard Worker  //
404*d5c09012SAndroid Build Coastguard Worker  // If the parent is a folder, use the value `folders/{folder_id}`. If the
405*d5c09012SAndroid Build Coastguard Worker  // parent is an organization, use the value `organizations/{org_id}`.
406*d5c09012SAndroid Build Coastguard Worker  string parent = 1 [
407*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
408*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { child_type: "*" }
409*d5c09012SAndroid Build Coastguard Worker  ];
410*d5c09012SAndroid Build Coastguard Worker
411*d5c09012SAndroid Build Coastguard Worker  // Optional. A pagination token returned from a previous call to
412*d5c09012SAndroid Build Coastguard Worker  // [ListProjects] [google.cloud.resourcemanager.v3.Projects.ListProjects] that
413*d5c09012SAndroid Build Coastguard Worker  // indicates from where listing should continue.
414*d5c09012SAndroid Build Coastguard Worker  string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
415*d5c09012SAndroid Build Coastguard Worker
416*d5c09012SAndroid Build Coastguard Worker  // Optional. The maximum number of projects to return in the response.
417*d5c09012SAndroid Build Coastguard Worker  // The server can return fewer projects than requested.
418*d5c09012SAndroid Build Coastguard Worker  // If unspecified, server picks an appropriate default.
419*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
420*d5c09012SAndroid Build Coastguard Worker
421*d5c09012SAndroid Build Coastguard Worker  // Optional. Indicate that projects in the `DELETE_REQUESTED` state should
422*d5c09012SAndroid Build Coastguard Worker  // also be returned. Normally only `ACTIVE` projects are returned.
423*d5c09012SAndroid Build Coastguard Worker  bool show_deleted = 4 [(google.api.field_behavior) = OPTIONAL];
424*d5c09012SAndroid Build Coastguard Worker}
425*d5c09012SAndroid Build Coastguard Worker
426*d5c09012SAndroid Build Coastguard Worker// A page of the response received from the
427*d5c09012SAndroid Build Coastguard Worker// [ListProjects][google.cloud.resourcemanager.v3.Projects.ListProjects]
428*d5c09012SAndroid Build Coastguard Worker// method.
429*d5c09012SAndroid Build Coastguard Worker//
430*d5c09012SAndroid Build Coastguard Worker// A paginated response where more pages are available has
431*d5c09012SAndroid Build Coastguard Worker// `next_page_token` set. This token can be used in a subsequent request to
432*d5c09012SAndroid Build Coastguard Worker// retrieve the next request page.
433*d5c09012SAndroid Build Coastguard Worker//
434*d5c09012SAndroid Build Coastguard Worker// NOTE: A response may contain fewer elements than the request `page_size` and
435*d5c09012SAndroid Build Coastguard Worker// still have a `next_page_token`.
436*d5c09012SAndroid Build Coastguard Workermessage ListProjectsResponse {
437*d5c09012SAndroid Build Coastguard Worker  // The list of Projects under the parent. This list can be paginated.
438*d5c09012SAndroid Build Coastguard Worker  repeated Project projects = 1;
439*d5c09012SAndroid Build Coastguard Worker
440*d5c09012SAndroid Build Coastguard Worker  // Pagination token.
441*d5c09012SAndroid Build Coastguard Worker  //
442*d5c09012SAndroid Build Coastguard Worker  // If the result set is too large to fit in a single response, this token
443*d5c09012SAndroid Build Coastguard Worker  // is returned. It encodes the position of the current result cursor.
444*d5c09012SAndroid Build Coastguard Worker  // Feeding this value into a new list request with the `page_token` parameter
445*d5c09012SAndroid Build Coastguard Worker  // gives the next page of the results.
446*d5c09012SAndroid Build Coastguard Worker  //
447*d5c09012SAndroid Build Coastguard Worker  // When `next_page_token` is not filled in, there is no next page and
448*d5c09012SAndroid Build Coastguard Worker  // the list returned is the last page in the result set.
449*d5c09012SAndroid Build Coastguard Worker  //
450*d5c09012SAndroid Build Coastguard Worker  // Pagination tokens have a limited lifetime.
451*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
452*d5c09012SAndroid Build Coastguard Worker}
453*d5c09012SAndroid Build Coastguard Worker
454*d5c09012SAndroid Build Coastguard Worker// The request sent to the
455*d5c09012SAndroid Build Coastguard Worker// [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects]
456*d5c09012SAndroid Build Coastguard Worker// method.
457*d5c09012SAndroid Build Coastguard Workermessage SearchProjectsRequest {
458*d5c09012SAndroid Build Coastguard Worker  // Optional. A query string for searching for projects that the caller has
459*d5c09012SAndroid Build Coastguard Worker  // `resourcemanager.projects.get` permission to. If multiple fields are
460*d5c09012SAndroid Build Coastguard Worker  // included in the query, then it will return results that match any of the
461*d5c09012SAndroid Build Coastguard Worker  // fields. Some eligible fields are:
462*d5c09012SAndroid Build Coastguard Worker  //
463*d5c09012SAndroid Build Coastguard Worker  // - **`displayName`, `name`**: Filters by displayName.
464*d5c09012SAndroid Build Coastguard Worker  // - **`parent`**: Project's parent (for example: `folders/123`,
465*d5c09012SAndroid Build Coastguard Worker  // `organizations/*`). Prefer `parent` field over `parent.type` and
466*d5c09012SAndroid Build Coastguard Worker  // `parent.id`.
467*d5c09012SAndroid Build Coastguard Worker  // - **`parent.type`**: Parent's type: `folder` or `organization`.
468*d5c09012SAndroid Build Coastguard Worker  // - **`parent.id`**: Parent's id number (for example: `123`).
469*d5c09012SAndroid Build Coastguard Worker  // - **`id`, `projectId`**: Filters by projectId.
470*d5c09012SAndroid Build Coastguard Worker  // - **`state`, `lifecycleState`**: Filters by state.
471*d5c09012SAndroid Build Coastguard Worker  // - **`labels`**: Filters by label name or value.
472*d5c09012SAndroid Build Coastguard Worker  // - **`labels.<key>` (where `<key>` is the name of a label)**: Filters by label
473*d5c09012SAndroid Build Coastguard Worker  // name.
474*d5c09012SAndroid Build Coastguard Worker  //
475*d5c09012SAndroid Build Coastguard Worker  // Search expressions are case insensitive.
476*d5c09012SAndroid Build Coastguard Worker  //
477*d5c09012SAndroid Build Coastguard Worker  // Some examples queries:
478*d5c09012SAndroid Build Coastguard Worker  //
479*d5c09012SAndroid Build Coastguard Worker  //
480*d5c09012SAndroid Build Coastguard Worker  // - **`name:how*`**: The project's name starts with "how".
481*d5c09012SAndroid Build Coastguard Worker  // - **`name:Howl`**: The project's name is `Howl` or `howl`.
482*d5c09012SAndroid Build Coastguard Worker  // - **`name:HOWL`**: Equivalent to above.
483*d5c09012SAndroid Build Coastguard Worker  // - **`NAME:howl`**: Equivalent to above.
484*d5c09012SAndroid Build Coastguard Worker  // - **`labels.color:*`**: The project has the label `color`.
485*d5c09012SAndroid Build Coastguard Worker  // - **`labels.color:red`**:  The project's label `color` has the value `red`.
486*d5c09012SAndroid Build Coastguard Worker  // - **`labels.color:red labels.size:big`**: The project's label `color` has
487*d5c09012SAndroid Build Coastguard Worker  // the value `red` or its label `size` has the value `big`.
488*d5c09012SAndroid Build Coastguard Worker  //
489*d5c09012SAndroid Build Coastguard Worker  // If no query is specified, the call will return projects for which the user
490*d5c09012SAndroid Build Coastguard Worker  // has the `resourcemanager.projects.get` permission.
491*d5c09012SAndroid Build Coastguard Worker  string query = 1 [(google.api.field_behavior) = OPTIONAL];
492*d5c09012SAndroid Build Coastguard Worker
493*d5c09012SAndroid Build Coastguard Worker  // Optional. A pagination token returned from a previous call to
494*d5c09012SAndroid Build Coastguard Worker  // [ListProjects] [google.cloud.resourcemanager.v3.Projects.ListProjects] that
495*d5c09012SAndroid Build Coastguard Worker  // indicates from where listing should continue.
496*d5c09012SAndroid Build Coastguard Worker  string page_token = 2 [(google.api.field_behavior) = OPTIONAL];
497*d5c09012SAndroid Build Coastguard Worker
498*d5c09012SAndroid Build Coastguard Worker  // Optional. The maximum number of projects to return in the response.
499*d5c09012SAndroid Build Coastguard Worker  // The server can return fewer projects than requested.
500*d5c09012SAndroid Build Coastguard Worker  // If unspecified, server picks an appropriate default.
501*d5c09012SAndroid Build Coastguard Worker  int32 page_size = 3 [(google.api.field_behavior) = OPTIONAL];
502*d5c09012SAndroid Build Coastguard Worker}
503*d5c09012SAndroid Build Coastguard Worker
504*d5c09012SAndroid Build Coastguard Worker// A page of the response received from the
505*d5c09012SAndroid Build Coastguard Worker// [SearchProjects][google.cloud.resourcemanager.v3.Projects.SearchProjects]
506*d5c09012SAndroid Build Coastguard Worker// method.
507*d5c09012SAndroid Build Coastguard Worker//
508*d5c09012SAndroid Build Coastguard Worker// A paginated response where more pages are available has
509*d5c09012SAndroid Build Coastguard Worker// `next_page_token` set. This token can be used in a subsequent request to
510*d5c09012SAndroid Build Coastguard Worker// retrieve the next request page.
511*d5c09012SAndroid Build Coastguard Workermessage SearchProjectsResponse {
512*d5c09012SAndroid Build Coastguard Worker  // The list of Projects that matched the list filter query. This list can
513*d5c09012SAndroid Build Coastguard Worker  // be paginated.
514*d5c09012SAndroid Build Coastguard Worker  repeated Project projects = 1;
515*d5c09012SAndroid Build Coastguard Worker
516*d5c09012SAndroid Build Coastguard Worker  // Pagination token.
517*d5c09012SAndroid Build Coastguard Worker  //
518*d5c09012SAndroid Build Coastguard Worker  // If the result set is too large to fit in a single response, this token
519*d5c09012SAndroid Build Coastguard Worker  // is returned. It encodes the position of the current result cursor.
520*d5c09012SAndroid Build Coastguard Worker  // Feeding this value into a new list request with the `page_token` parameter
521*d5c09012SAndroid Build Coastguard Worker  // gives the next page of the results.
522*d5c09012SAndroid Build Coastguard Worker  //
523*d5c09012SAndroid Build Coastguard Worker  // When `next_page_token` is not filled in, there is no next page and
524*d5c09012SAndroid Build Coastguard Worker  // the list returned is the last page in the result set.
525*d5c09012SAndroid Build Coastguard Worker  //
526*d5c09012SAndroid Build Coastguard Worker  // Pagination tokens have a limited lifetime.
527*d5c09012SAndroid Build Coastguard Worker  string next_page_token = 2;
528*d5c09012SAndroid Build Coastguard Worker}
529*d5c09012SAndroid Build Coastguard Worker
530*d5c09012SAndroid Build Coastguard Worker// The request sent to the
531*d5c09012SAndroid Build Coastguard Worker// [CreateProject][google.cloud.resourcemanager.v3.Projects.CreateProject]
532*d5c09012SAndroid Build Coastguard Worker// method.
533*d5c09012SAndroid Build Coastguard Workermessage CreateProjectRequest {
534*d5c09012SAndroid Build Coastguard Worker  // Required. The Project to create.
535*d5c09012SAndroid Build Coastguard Worker  //
536*d5c09012SAndroid Build Coastguard Worker  // Project ID is required. If the requested ID is unavailable, the request
537*d5c09012SAndroid Build Coastguard Worker  // fails.
538*d5c09012SAndroid Build Coastguard Worker  //
539*d5c09012SAndroid Build Coastguard Worker  // If the `parent` field is set, the `resourcemanager.projects.create`
540*d5c09012SAndroid Build Coastguard Worker  // permission is checked on the parent resource. If no parent is set and
541*d5c09012SAndroid Build Coastguard Worker  // the authorization credentials belong to an Organization, the parent
542*d5c09012SAndroid Build Coastguard Worker  // will be set to that Organization.
543*d5c09012SAndroid Build Coastguard Worker  Project project = 1 [(google.api.field_behavior) = REQUIRED];
544*d5c09012SAndroid Build Coastguard Worker}
545*d5c09012SAndroid Build Coastguard Worker
546*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the Operation
547*d5c09012SAndroid Build Coastguard Worker// returned by CreateProject. It provides insight for when significant phases of
548*d5c09012SAndroid Build Coastguard Worker// Project creation have completed.
549*d5c09012SAndroid Build Coastguard Workermessage CreateProjectMetadata {
550*d5c09012SAndroid Build Coastguard Worker  // Creation time of the project creation workflow.
551*d5c09012SAndroid Build Coastguard Worker  google.protobuf.Timestamp create_time = 1;
552*d5c09012SAndroid Build Coastguard Worker
553*d5c09012SAndroid Build Coastguard Worker  // True if the project can be retrieved using `GetProject`. No other
554*d5c09012SAndroid Build Coastguard Worker  // operations on the project are guaranteed to work until the project creation
555*d5c09012SAndroid Build Coastguard Worker  // is complete.
556*d5c09012SAndroid Build Coastguard Worker  bool gettable = 2;
557*d5c09012SAndroid Build Coastguard Worker
558*d5c09012SAndroid Build Coastguard Worker  // True if the project creation process is complete.
559*d5c09012SAndroid Build Coastguard Worker  bool ready = 3;
560*d5c09012SAndroid Build Coastguard Worker}
561*d5c09012SAndroid Build Coastguard Worker
562*d5c09012SAndroid Build Coastguard Worker// The request sent to the
563*d5c09012SAndroid Build Coastguard Worker// [UpdateProject][google.cloud.resourcemanager.v3.Projects.UpdateProject]
564*d5c09012SAndroid Build Coastguard Worker// method.
565*d5c09012SAndroid Build Coastguard Worker//
566*d5c09012SAndroid Build Coastguard Worker// Only the `display_name` and `labels` fields can be change. Use the
567*d5c09012SAndroid Build Coastguard Worker// [MoveProject][google.cloud.resourcemanager.v3.Projects.MoveProject] method to
568*d5c09012SAndroid Build Coastguard Worker// change the `parent` field.
569*d5c09012SAndroid Build Coastguard Workermessage UpdateProjectRequest {
570*d5c09012SAndroid Build Coastguard Worker  // Required. The new definition of the project.
571*d5c09012SAndroid Build Coastguard Worker  Project project = 1 [(google.api.field_behavior) = REQUIRED];
572*d5c09012SAndroid Build Coastguard Worker
573*d5c09012SAndroid Build Coastguard Worker  // Optional. An update mask to selectively update fields.
574*d5c09012SAndroid Build Coastguard Worker  google.protobuf.FieldMask update_mask = 2
575*d5c09012SAndroid Build Coastguard Worker      [(google.api.field_behavior) = OPTIONAL];
576*d5c09012SAndroid Build Coastguard Worker}
577*d5c09012SAndroid Build Coastguard Worker
578*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the Operation
579*d5c09012SAndroid Build Coastguard Worker// returned by UpdateProject.
580*d5c09012SAndroid Build Coastguard Workermessage UpdateProjectMetadata {}
581*d5c09012SAndroid Build Coastguard Worker
582*d5c09012SAndroid Build Coastguard Worker// The request sent to
583*d5c09012SAndroid Build Coastguard Worker// [MoveProject][google.cloud.resourcemanager.v3.Projects.MoveProject]
584*d5c09012SAndroid Build Coastguard Worker// method.
585*d5c09012SAndroid Build Coastguard Workermessage MoveProjectRequest {
586*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the project to move.
587*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
588*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
589*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
590*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Project"
591*d5c09012SAndroid Build Coastguard Worker    }
592*d5c09012SAndroid Build Coastguard Worker  ];
593*d5c09012SAndroid Build Coastguard Worker
594*d5c09012SAndroid Build Coastguard Worker  // Required. The new parent to move the Project under.
595*d5c09012SAndroid Build Coastguard Worker  string destination_parent = 2 [
596*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
597*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = { child_type: "*" }
598*d5c09012SAndroid Build Coastguard Worker  ];
599*d5c09012SAndroid Build Coastguard Worker}
600*d5c09012SAndroid Build Coastguard Worker
601*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the Operation
602*d5c09012SAndroid Build Coastguard Worker// returned by MoveProject.
603*d5c09012SAndroid Build Coastguard Workermessage MoveProjectMetadata {}
604*d5c09012SAndroid Build Coastguard Worker
605*d5c09012SAndroid Build Coastguard Worker// [DeleteProject][google.cloud.resourcemanager.v3.Projects.DeleteProject]
606*d5c09012SAndroid Build Coastguard Worker// method.
607*d5c09012SAndroid Build Coastguard Workermessage DeleteProjectRequest {
608*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the Project (for example, `projects/415104041262`).
609*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
610*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
611*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
612*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Project"
613*d5c09012SAndroid Build Coastguard Worker    }
614*d5c09012SAndroid Build Coastguard Worker  ];
615*d5c09012SAndroid Build Coastguard Worker}
616*d5c09012SAndroid Build Coastguard Worker
617*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the Operation
618*d5c09012SAndroid Build Coastguard Worker// returned by `DeleteProject`.
619*d5c09012SAndroid Build Coastguard Workermessage DeleteProjectMetadata {}
620*d5c09012SAndroid Build Coastguard Worker
621*d5c09012SAndroid Build Coastguard Worker// The request sent to the [UndeleteProject]
622*d5c09012SAndroid Build Coastguard Worker// [google.cloud.resourcemanager.v3.Projects.UndeleteProject]
623*d5c09012SAndroid Build Coastguard Worker// method.
624*d5c09012SAndroid Build Coastguard Workermessage UndeleteProjectRequest {
625*d5c09012SAndroid Build Coastguard Worker  // Required. The name of the project (for example, `projects/415104041262`).
626*d5c09012SAndroid Build Coastguard Worker  //
627*d5c09012SAndroid Build Coastguard Worker  // Required.
628*d5c09012SAndroid Build Coastguard Worker  string name = 1 [
629*d5c09012SAndroid Build Coastguard Worker    (google.api.field_behavior) = REQUIRED,
630*d5c09012SAndroid Build Coastguard Worker    (google.api.resource_reference) = {
631*d5c09012SAndroid Build Coastguard Worker      type: "cloudresourcemanager.googleapis.com/Project"
632*d5c09012SAndroid Build Coastguard Worker    }
633*d5c09012SAndroid Build Coastguard Worker  ];
634*d5c09012SAndroid Build Coastguard Worker}
635*d5c09012SAndroid Build Coastguard Worker
636*d5c09012SAndroid Build Coastguard Worker// A status object which is used as the `metadata` field for the Operation
637*d5c09012SAndroid Build Coastguard Worker// returned by `UndeleteProject`.
638*d5c09012SAndroid Build Coastguard Workermessage UndeleteProjectMetadata {}
639