access_context_manager.proto 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942
  1. // Copyright 2021 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. syntax = "proto3";
  15. package google.identity.accesscontextmanager.v1;
  16. import "google/api/annotations.proto";
  17. import "google/api/client.proto";
  18. import "google/api/field_behavior.proto";
  19. import "google/api/resource.proto";
  20. import "google/identity/accesscontextmanager/v1/access_level.proto";
  21. import "google/identity/accesscontextmanager/v1/access_policy.proto";
  22. import "google/identity/accesscontextmanager/v1/gcp_user_access_binding.proto";
  23. import "google/identity/accesscontextmanager/v1/service_perimeter.proto";
  24. import "google/longrunning/operations.proto";
  25. import "google/protobuf/field_mask.proto";
  26. option csharp_namespace = "Google.Identity.AccessContextManager.V1";
  27. option go_package = "google.golang.org/genproto/googleapis/identity/accesscontextmanager/v1;accesscontextmanager";
  28. option java_multiple_files = true;
  29. option java_outer_classname = "AccessContextManagerProto";
  30. option java_package = "com.google.identity.accesscontextmanager.v1";
  31. option objc_class_prefix = "GACM";
  32. option php_namespace = "Google\\Identity\\AccessContextManager\\V1";
  33. option ruby_package = "Google::Identity::AccessContextManager::V1";
  34. // API for setting [Access Levels]
  35. // [google.identity.accesscontextmanager.v1.AccessLevel] and [Service
  36. // Perimeters] [google.identity.accesscontextmanager.v1.ServicePerimeter]
  37. // for Google Cloud Projects. Each organization has one [AccessPolicy]
  38. // [google.identity.accesscontextmanager.v1.AccessPolicy] containing the
  39. // [Access Levels] [google.identity.accesscontextmanager.v1.AccessLevel]
  40. // and [Service Perimeters]
  41. // [google.identity.accesscontextmanager.v1.ServicePerimeter]. This
  42. // [AccessPolicy] [google.identity.accesscontextmanager.v1.AccessPolicy] is
  43. // applicable to all resources in the organization.
  44. // AccessPolicies
  45. service AccessContextManager {
  46. option (google.api.default_host) = "accesscontextmanager.googleapis.com";
  47. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  48. // List all [AccessPolicies]
  49. // [google.identity.accesscontextmanager.v1.AccessPolicy] under a
  50. // container.
  51. rpc ListAccessPolicies(ListAccessPoliciesRequest) returns (ListAccessPoliciesResponse) {
  52. option (google.api.http) = {
  53. get: "/v1/accessPolicies"
  54. };
  55. }
  56. // Get an [AccessPolicy]
  57. // [google.identity.accesscontextmanager.v1.AccessPolicy] by name.
  58. rpc GetAccessPolicy(GetAccessPolicyRequest) returns (AccessPolicy) {
  59. option (google.api.http) = {
  60. get: "/v1/{name=accessPolicies/*}"
  61. };
  62. option (google.api.method_signature) = "name";
  63. }
  64. // Create an `AccessPolicy`. Fails if this organization already has a
  65. // `AccessPolicy`. The longrunning Operation will have a successful status
  66. // once the `AccessPolicy` has propagated to long-lasting storage.
  67. // Syntactic and basic semantic errors will be returned in `metadata` as a
  68. // BadRequest proto.
  69. rpc CreateAccessPolicy(AccessPolicy) returns (google.longrunning.Operation) {
  70. option (google.api.http) = {
  71. post: "/v1/accessPolicies"
  72. body: "*"
  73. };
  74. option (google.longrunning.operation_info) = {
  75. response_type: "AccessPolicy"
  76. metadata_type: "AccessContextManagerOperationMetadata"
  77. };
  78. }
  79. // Update an [AccessPolicy]
  80. // [google.identity.accesscontextmanager.v1.AccessPolicy]. The
  81. // longrunning Operation from this RPC will have a successful status once the
  82. // changes to the [AccessPolicy]
  83. // [google.identity.accesscontextmanager.v1.AccessPolicy] have propagated
  84. // to long-lasting storage. Syntactic and basic semantic errors will be
  85. // returned in `metadata` as a BadRequest proto.
  86. rpc UpdateAccessPolicy(UpdateAccessPolicyRequest) returns (google.longrunning.Operation) {
  87. option (google.api.http) = {
  88. patch: "/v1/{policy.name=accessPolicies/*}"
  89. body: "policy"
  90. };
  91. option (google.api.method_signature) = "policy,update_mask";
  92. option (google.longrunning.operation_info) = {
  93. response_type: "AccessPolicy"
  94. metadata_type: "AccessContextManagerOperationMetadata"
  95. };
  96. }
  97. // Delete an [AccessPolicy]
  98. // [google.identity.accesscontextmanager.v1.AccessPolicy] by resource
  99. // name. The longrunning Operation will have a successful status once the
  100. // [AccessPolicy] [google.identity.accesscontextmanager.v1.AccessPolicy]
  101. // has been removed from long-lasting storage.
  102. rpc DeleteAccessPolicy(DeleteAccessPolicyRequest) returns (google.longrunning.Operation) {
  103. option (google.api.http) = {
  104. delete: "/v1/{name=accessPolicies/*}"
  105. };
  106. option (google.api.method_signature) = "name";
  107. option (google.longrunning.operation_info) = {
  108. response_type: "google.protobuf.Empty"
  109. metadata_type: "AccessContextManagerOperationMetadata"
  110. };
  111. }
  112. // List all [Access Levels]
  113. // [google.identity.accesscontextmanager.v1.AccessLevel] for an access
  114. // policy.
  115. rpc ListAccessLevels(ListAccessLevelsRequest) returns (ListAccessLevelsResponse) {
  116. option (google.api.http) = {
  117. get: "/v1/{parent=accessPolicies/*}/accessLevels"
  118. };
  119. option (google.api.method_signature) = "parent";
  120. }
  121. // Get an [Access Level]
  122. // [google.identity.accesscontextmanager.v1.AccessLevel] by resource
  123. // name.
  124. rpc GetAccessLevel(GetAccessLevelRequest) returns (AccessLevel) {
  125. option (google.api.http) = {
  126. get: "/v1/{name=accessPolicies/*/accessLevels/*}"
  127. };
  128. option (google.api.method_signature) = "name";
  129. }
  130. // Create an [Access Level]
  131. // [google.identity.accesscontextmanager.v1.AccessLevel]. The longrunning
  132. // operation from this RPC will have a successful status once the [Access
  133. // Level] [google.identity.accesscontextmanager.v1.AccessLevel] has
  134. // propagated to long-lasting storage. [Access Levels]
  135. // [google.identity.accesscontextmanager.v1.AccessLevel] containing
  136. // errors will result in an error response for the first error encountered.
  137. rpc CreateAccessLevel(CreateAccessLevelRequest) returns (google.longrunning.Operation) {
  138. option (google.api.http) = {
  139. post: "/v1/{parent=accessPolicies/*}/accessLevels"
  140. body: "access_level"
  141. };
  142. option (google.api.method_signature) = "parent,access_level";
  143. option (google.longrunning.operation_info) = {
  144. response_type: "AccessLevel"
  145. metadata_type: "AccessContextManagerOperationMetadata"
  146. };
  147. }
  148. // Update an [Access Level]
  149. // [google.identity.accesscontextmanager.v1.AccessLevel]. The longrunning
  150. // operation from this RPC will have a successful status once the changes to
  151. // the [Access Level]
  152. // [google.identity.accesscontextmanager.v1.AccessLevel] have propagated
  153. // to long-lasting storage. [Access Levels]
  154. // [google.identity.accesscontextmanager.v1.AccessLevel] containing
  155. // errors will result in an error response for the first error encountered.
  156. rpc UpdateAccessLevel(UpdateAccessLevelRequest) returns (google.longrunning.Operation) {
  157. option (google.api.http) = {
  158. patch: "/v1/{access_level.name=accessPolicies/*/accessLevels/*}"
  159. body: "access_level"
  160. };
  161. option (google.api.method_signature) = "access_level,update_mask";
  162. option (google.longrunning.operation_info) = {
  163. response_type: "AccessLevel"
  164. metadata_type: "AccessContextManagerOperationMetadata"
  165. };
  166. }
  167. // Delete an [Access Level]
  168. // [google.identity.accesscontextmanager.v1.AccessLevel] by resource
  169. // name. The longrunning operation from this RPC will have a successful status
  170. // once the [Access Level]
  171. // [google.identity.accesscontextmanager.v1.AccessLevel] has been removed
  172. // from long-lasting storage.
  173. rpc DeleteAccessLevel(DeleteAccessLevelRequest) returns (google.longrunning.Operation) {
  174. option (google.api.http) = {
  175. delete: "/v1/{name=accessPolicies/*/accessLevels/*}"
  176. };
  177. option (google.api.method_signature) = "name";
  178. option (google.longrunning.operation_info) = {
  179. response_type: "google.protobuf.Empty"
  180. metadata_type: "AccessContextManagerOperationMetadata"
  181. };
  182. }
  183. // Replace all existing [Access Levels]
  184. // [google.identity.accesscontextmanager.v1.AccessLevel] in an [Access
  185. // Policy] [google.identity.accesscontextmanager.v1.AccessPolicy] with
  186. // the [Access Levels]
  187. // [google.identity.accesscontextmanager.v1.AccessLevel] provided. This
  188. // is done atomically. The longrunning operation from this RPC will have a
  189. // successful status once all replacements have propagated to long-lasting
  190. // storage. Replacements containing errors will result in an error response
  191. // for the first error encountered. Replacement will be cancelled on error,
  192. // existing [Access Levels]
  193. // [google.identity.accesscontextmanager.v1.AccessLevel] will not be
  194. // affected. Operation.response field will contain
  195. // ReplaceAccessLevelsResponse. Removing [Access Levels]
  196. // [google.identity.accesscontextmanager.v1.AccessLevel] contained in existing
  197. // [Service Perimeters]
  198. // [google.identity.accesscontextmanager.v1.ServicePerimeter] will result in
  199. // error.
  200. rpc ReplaceAccessLevels(ReplaceAccessLevelsRequest) returns (google.longrunning.Operation) {
  201. option (google.api.http) = {
  202. post: "/v1/{parent=accessPolicies/*}/accessLevels:replaceAll"
  203. body: "*"
  204. };
  205. option (google.longrunning.operation_info) = {
  206. response_type: "ReplaceAccessLevelsResponse"
  207. metadata_type: "AccessContextManagerOperationMetadata"
  208. };
  209. }
  210. // List all [Service Perimeters]
  211. // [google.identity.accesscontextmanager.v1.ServicePerimeter] for an
  212. // access policy.
  213. rpc ListServicePerimeters(ListServicePerimetersRequest) returns (ListServicePerimetersResponse) {
  214. option (google.api.http) = {
  215. get: "/v1/{parent=accessPolicies/*}/servicePerimeters"
  216. };
  217. option (google.api.method_signature) = "parent";
  218. }
  219. // Get a [Service Perimeter]
  220. // [google.identity.accesscontextmanager.v1.ServicePerimeter] by resource
  221. // name.
  222. rpc GetServicePerimeter(GetServicePerimeterRequest) returns (ServicePerimeter) {
  223. option (google.api.http) = {
  224. get: "/v1/{name=accessPolicies/*/servicePerimeters/*}"
  225. };
  226. option (google.api.method_signature) = "name";
  227. }
  228. // Create a [Service Perimeter]
  229. // [google.identity.accesscontextmanager.v1.ServicePerimeter]. The
  230. // longrunning operation from this RPC will have a successful status once the
  231. // [Service Perimeter]
  232. // [google.identity.accesscontextmanager.v1.ServicePerimeter] has
  233. // propagated to long-lasting storage. [Service Perimeters]
  234. // [google.identity.accesscontextmanager.v1.ServicePerimeter] containing
  235. // errors will result in an error response for the first error encountered.
  236. rpc CreateServicePerimeter(CreateServicePerimeterRequest) returns (google.longrunning.Operation) {
  237. option (google.api.http) = {
  238. post: "/v1/{parent=accessPolicies/*}/servicePerimeters"
  239. body: "service_perimeter"
  240. };
  241. option (google.api.method_signature) = "parent,service_perimeter";
  242. option (google.longrunning.operation_info) = {
  243. response_type: "ServicePerimeter"
  244. metadata_type: "AccessContextManagerOperationMetadata"
  245. };
  246. }
  247. // Update a [Service Perimeter]
  248. // [google.identity.accesscontextmanager.v1.ServicePerimeter]. The
  249. // longrunning operation from this RPC will have a successful status once the
  250. // changes to the [Service Perimeter]
  251. // [google.identity.accesscontextmanager.v1.ServicePerimeter] have
  252. // propagated to long-lasting storage. [Service Perimeter]
  253. // [google.identity.accesscontextmanager.v1.ServicePerimeter] containing
  254. // errors will result in an error response for the first error encountered.
  255. rpc UpdateServicePerimeter(UpdateServicePerimeterRequest) returns (google.longrunning.Operation) {
  256. option (google.api.http) = {
  257. patch: "/v1/{service_perimeter.name=accessPolicies/*/servicePerimeters/*}"
  258. body: "service_perimeter"
  259. };
  260. option (google.api.method_signature) = "service_perimeter,update_mask";
  261. option (google.longrunning.operation_info) = {
  262. response_type: "ServicePerimeter"
  263. metadata_type: "AccessContextManagerOperationMetadata"
  264. };
  265. }
  266. // Delete a [Service Perimeter]
  267. // [google.identity.accesscontextmanager.v1.ServicePerimeter] by resource
  268. // name. The longrunning operation from this RPC will have a successful status
  269. // once the [Service Perimeter]
  270. // [google.identity.accesscontextmanager.v1.ServicePerimeter] has been
  271. // removed from long-lasting storage.
  272. rpc DeleteServicePerimeter(DeleteServicePerimeterRequest) returns (google.longrunning.Operation) {
  273. option (google.api.http) = {
  274. delete: "/v1/{name=accessPolicies/*/servicePerimeters/*}"
  275. };
  276. option (google.api.method_signature) = "name";
  277. option (google.longrunning.operation_info) = {
  278. response_type: "google.protobuf.Empty"
  279. metadata_type: "AccessContextManagerOperationMetadata"
  280. };
  281. }
  282. // Replace all existing [Service Perimeters]
  283. // [google.identity.accesscontextmanager.v1.ServicePerimeter] in an
  284. // [Access Policy] [google.identity.accesscontextmanager.v1.AccessPolicy]
  285. // with the [Service Perimeters]
  286. // [google.identity.accesscontextmanager.v1.ServicePerimeter] provided.
  287. // This is done atomically. The longrunning operation from this
  288. // RPC will have a successful status once all replacements have propagated to
  289. // long-lasting storage. Replacements containing errors will result in an
  290. // error response for the first error encountered. Replacement will be
  291. // cancelled on error, existing [Service Perimeters]
  292. // [google.identity.accesscontextmanager.v1.ServicePerimeter] will not be
  293. // affected. Operation.response field will contain
  294. // ReplaceServicePerimetersResponse.
  295. rpc ReplaceServicePerimeters(ReplaceServicePerimetersRequest) returns (google.longrunning.Operation) {
  296. option (google.api.http) = {
  297. post: "/v1/{parent=accessPolicies/*}/servicePerimeters:replaceAll"
  298. body: "*"
  299. };
  300. option (google.longrunning.operation_info) = {
  301. response_type: "ReplaceServicePerimetersResponse"
  302. metadata_type: "AccessContextManagerOperationMetadata"
  303. };
  304. }
  305. // Commit the dry-run spec for all the [Service Perimeters]
  306. // [google.identity.accesscontextmanager.v1.ServicePerimeter] in an
  307. // [Access Policy][google.identity.accesscontextmanager.v1.AccessPolicy].
  308. // A commit operation on a Service Perimeter involves copying its `spec` field
  309. // to that Service Perimeter's `status` field. Only [Service Perimeters]
  310. // [google.identity.accesscontextmanager.v1.ServicePerimeter] with
  311. // `use_explicit_dry_run_spec` field set to true are affected by a commit
  312. // operation. The longrunning operation from this RPC will have a successful
  313. // status once the dry-run specs for all the [Service Perimeters]
  314. // [google.identity.accesscontextmanager.v1.ServicePerimeter] have been
  315. // committed. If a commit fails, it will cause the longrunning operation to
  316. // return an error response and the entire commit operation will be cancelled.
  317. // When successful, Operation.response field will contain
  318. // CommitServicePerimetersResponse. The `dry_run` and the `spec` fields will
  319. // be cleared after a successful commit operation.
  320. rpc CommitServicePerimeters(CommitServicePerimetersRequest) returns (google.longrunning.Operation) {
  321. option (google.api.http) = {
  322. post: "/v1/{parent=accessPolicies/*}/servicePerimeters:commit"
  323. body: "*"
  324. };
  325. option (google.longrunning.operation_info) = {
  326. response_type: "CommitServicePerimetersResponse"
  327. metadata_type: "AccessContextManagerOperationMetadata"
  328. };
  329. }
  330. // Lists all [GcpUserAccessBindings]
  331. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding] for a
  332. // Google Cloud organization.
  333. rpc ListGcpUserAccessBindings(ListGcpUserAccessBindingsRequest) returns (ListGcpUserAccessBindingsResponse) {
  334. option (google.api.http) = {
  335. get: "/v1/{parent=organizations/*}/gcpUserAccessBindings"
  336. };
  337. option (google.api.method_signature) = "parent";
  338. }
  339. // Gets the [GcpUserAccessBinding]
  340. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding] with
  341. // the given name.
  342. rpc GetGcpUserAccessBinding(GetGcpUserAccessBindingRequest) returns (GcpUserAccessBinding) {
  343. option (google.api.http) = {
  344. get: "/v1/{name=organizations/*/gcpUserAccessBindings/*}"
  345. };
  346. option (google.api.method_signature) = "name";
  347. }
  348. // Creates a [GcpUserAccessBinding]
  349. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding]. If the
  350. // client specifies a [name]
  351. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding.name],
  352. // the server will ignore it. Fails if a resource already exists with the same
  353. // [group_key]
  354. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding.group_key].
  355. // Completion of this long-running operation does not necessarily signify that
  356. // the new binding is deployed onto all affected users, which may take more
  357. // time.
  358. rpc CreateGcpUserAccessBinding(CreateGcpUserAccessBindingRequest) returns (google.longrunning.Operation) {
  359. option (google.api.http) = {
  360. post: "/v1/{parent=organizations/*}/gcpUserAccessBindings"
  361. body: "gcp_user_access_binding"
  362. };
  363. option (google.api.method_signature) = "parent,gcp_user_access_binding";
  364. option (google.longrunning.operation_info) = {
  365. response_type: "GcpUserAccessBinding"
  366. metadata_type: "GcpUserAccessBindingOperationMetadata"
  367. };
  368. }
  369. // Updates a [GcpUserAccessBinding]
  370. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding].
  371. // Completion of this long-running operation does not necessarily signify that
  372. // the changed binding is deployed onto all affected users, which may take
  373. // more time.
  374. rpc UpdateGcpUserAccessBinding(UpdateGcpUserAccessBindingRequest) returns (google.longrunning.Operation) {
  375. option (google.api.http) = {
  376. patch: "/v1/{gcp_user_access_binding.name=organizations/*/gcpUserAccessBindings/*}"
  377. body: "gcp_user_access_binding"
  378. };
  379. option (google.api.method_signature) = "gcp_user_access_binding,update_mask";
  380. option (google.longrunning.operation_info) = {
  381. response_type: "GcpUserAccessBinding"
  382. metadata_type: "GcpUserAccessBindingOperationMetadata"
  383. };
  384. }
  385. // Deletes a [GcpUserAccessBinding]
  386. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding].
  387. // Completion of this long-running operation does not necessarily signify that
  388. // the binding deletion is deployed onto all affected users, which may take
  389. // more time.
  390. rpc DeleteGcpUserAccessBinding(DeleteGcpUserAccessBindingRequest) returns (google.longrunning.Operation) {
  391. option (google.api.http) = {
  392. delete: "/v1/{name=organizations/*/gcpUserAccessBindings/*}"
  393. };
  394. option (google.api.method_signature) = "name";
  395. option (google.longrunning.operation_info) = {
  396. response_type: "google.protobuf.Empty"
  397. metadata_type: "GcpUserAccessBindingOperationMetadata"
  398. };
  399. }
  400. }
  401. // A request to list all `AccessPolicies` for a container.
  402. message ListAccessPoliciesRequest {
  403. // Required. Resource name for the container to list AccessPolicy instances
  404. // from.
  405. //
  406. // Format:
  407. // `organizations/{org_id}`
  408. string parent = 1 [
  409. (google.api.field_behavior) = REQUIRED,
  410. (google.api.resource_reference) = {
  411. type: "cloudresourcemanager.googleapis.com/Organization"
  412. }
  413. ];
  414. // Number of AccessPolicy instances to include in the list. Default 100.
  415. int32 page_size = 2;
  416. // Next page token for the next batch of AccessPolicy instances. Defaults to
  417. // the first page of results.
  418. string page_token = 3;
  419. }
  420. // A response to `ListAccessPoliciesRequest`.
  421. message ListAccessPoliciesResponse {
  422. // List of the AccessPolicy instances.
  423. repeated AccessPolicy access_policies = 1;
  424. // The pagination token to retrieve the next page of results. If the value is
  425. // empty, no further results remain.
  426. string next_page_token = 2;
  427. }
  428. // A request to get a particular `AccessPolicy`.
  429. message GetAccessPolicyRequest {
  430. // Required. Resource name for the access policy to get.
  431. //
  432. // Format `accessPolicies/{policy_id}`
  433. string name = 1 [
  434. (google.api.field_behavior) = REQUIRED,
  435. (google.api.resource_reference) = {
  436. type: "accesscontextmanager.googleapis.com/AccessPolicy"
  437. }
  438. ];
  439. }
  440. // A request to update an `AccessPolicy`.
  441. message UpdateAccessPolicyRequest {
  442. // Required. The updated AccessPolicy.
  443. AccessPolicy policy = 1 [(google.api.field_behavior) = REQUIRED];
  444. // Required. Mask to control which fields get updated. Must be non-empty.
  445. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  446. }
  447. // A request to delete an `AccessPolicy`.
  448. message DeleteAccessPolicyRequest {
  449. // Required. Resource name for the access policy to delete.
  450. //
  451. // Format `accessPolicies/{policy_id}`
  452. string name = 1 [
  453. (google.api.field_behavior) = REQUIRED,
  454. (google.api.resource_reference) = {
  455. type: "accesscontextmanager.googleapis.com/AccessPolicy"
  456. }
  457. ];
  458. }
  459. // A request to list all `AccessLevels` in an `AccessPolicy`.
  460. message ListAccessLevelsRequest {
  461. // Required. Resource name for the access policy to list [Access Levels]
  462. // [google.identity.accesscontextmanager.v1.AccessLevel] from.
  463. //
  464. // Format:
  465. // `accessPolicies/{policy_id}`
  466. string parent = 1 [
  467. (google.api.field_behavior) = REQUIRED,
  468. (google.api.resource_reference) = {
  469. child_type: "accesscontextmanager.googleapis.com/AccessLevel"
  470. }
  471. ];
  472. // Number of [Access Levels]
  473. // [google.identity.accesscontextmanager.v1.AccessLevel] to include in
  474. // the list. Default 100.
  475. int32 page_size = 2;
  476. // Next page token for the next batch of [Access Level]
  477. // [google.identity.accesscontextmanager.v1.AccessLevel] instances.
  478. // Defaults to the first page of results.
  479. string page_token = 3;
  480. // Whether to return `BasicLevels` in the Cloud Common Expression language, as
  481. // `CustomLevels`, rather than as `BasicLevels`. Defaults to returning
  482. // `AccessLevels` in the format they were defined.
  483. LevelFormat access_level_format = 4;
  484. }
  485. // A response to `ListAccessLevelsRequest`.
  486. message ListAccessLevelsResponse {
  487. // List of the [Access Level]
  488. // [google.identity.accesscontextmanager.v1.AccessLevel] instances.
  489. repeated AccessLevel access_levels = 1;
  490. // The pagination token to retrieve the next page of results. If the value is
  491. // empty, no further results remain.
  492. string next_page_token = 2;
  493. }
  494. // A request to get a particular `AccessLevel`.
  495. message GetAccessLevelRequest {
  496. // Required. Resource name for the [Access Level]
  497. // [google.identity.accesscontextmanager.v1.AccessLevel].
  498. //
  499. // Format:
  500. // `accessPolicies/{policy_id}/accessLevels/{access_level_id}`
  501. string name = 1 [
  502. (google.api.field_behavior) = REQUIRED,
  503. (google.api.resource_reference) = {
  504. type: "accesscontextmanager.googleapis.com/AccessLevel"
  505. }
  506. ];
  507. // Whether to return `BasicLevels` in the Cloud Common Expression
  508. // Language rather than as `BasicLevels`. Defaults to AS_DEFINED, where
  509. // [Access Levels] [google.identity.accesscontextmanager.v1.AccessLevel]
  510. // are returned as `BasicLevels` or `CustomLevels` based on how they were
  511. // created. If set to CEL, all [Access Levels]
  512. // [google.identity.accesscontextmanager.v1.AccessLevel] are returned as
  513. // `CustomLevels`. In the CEL case, `BasicLevels` are translated to equivalent
  514. // `CustomLevels`.
  515. LevelFormat access_level_format = 2;
  516. }
  517. // A request to create an `AccessLevel`.
  518. message CreateAccessLevelRequest {
  519. // Required. Resource name for the access policy which owns this [Access
  520. // Level] [google.identity.accesscontextmanager.v1.AccessLevel].
  521. //
  522. // Format: `accessPolicies/{policy_id}`
  523. string parent = 1 [
  524. (google.api.field_behavior) = REQUIRED,
  525. (google.api.resource_reference) = {
  526. child_type: "accesscontextmanager.googleapis.com/AccessLevel"
  527. }
  528. ];
  529. // Required. The [Access Level]
  530. // [google.identity.accesscontextmanager.v1.AccessLevel] to create.
  531. // Syntactic correctness of the [Access Level]
  532. // [google.identity.accesscontextmanager.v1.AccessLevel] is a
  533. // precondition for creation.
  534. AccessLevel access_level = 2 [(google.api.field_behavior) = REQUIRED];
  535. }
  536. // A request to update an `AccessLevel`.
  537. message UpdateAccessLevelRequest {
  538. // Required. The updated [Access Level]
  539. // [google.identity.accesscontextmanager.v1.AccessLevel]. Syntactic
  540. // correctness of the [Access Level]
  541. // [google.identity.accesscontextmanager.v1.AccessLevel] is a
  542. // precondition for creation.
  543. AccessLevel access_level = 1 [(google.api.field_behavior) = REQUIRED];
  544. // Required. Mask to control which fields get updated. Must be non-empty.
  545. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  546. }
  547. // A request to delete an `AccessLevel`.
  548. message DeleteAccessLevelRequest {
  549. // Required. Resource name for the [Access Level]
  550. // [google.identity.accesscontextmanager.v1.AccessLevel].
  551. //
  552. // Format:
  553. // `accessPolicies/{policy_id}/accessLevels/{access_level_id}`
  554. string name = 1 [
  555. (google.api.field_behavior) = REQUIRED,
  556. (google.api.resource_reference) = {
  557. type: "accesscontextmanager.googleapis.com/AccessLevel"
  558. }
  559. ];
  560. }
  561. // A request to replace all existing Access Levels in an Access Policy with
  562. // the Access Levels provided. This is done atomically.
  563. message ReplaceAccessLevelsRequest {
  564. // Required. Resource name for the access policy which owns these
  565. // [Access Levels]
  566. // [google.identity.accesscontextmanager.v1.AccessLevel].
  567. //
  568. // Format: `accessPolicies/{policy_id}`
  569. string parent = 1 [
  570. (google.api.field_behavior) = REQUIRED,
  571. (google.api.resource_reference) = {
  572. child_type: "accesscontextmanager.googleapis.com/AccessLevel"
  573. }
  574. ];
  575. // Required. The desired [Access Levels]
  576. // [google.identity.accesscontextmanager.v1.AccessLevel] that should
  577. // replace all existing [Access Levels]
  578. // [google.identity.accesscontextmanager.v1.AccessLevel] in the
  579. // [Access Policy]
  580. // [google.identity.accesscontextmanager.v1.AccessPolicy].
  581. repeated AccessLevel access_levels = 2 [(google.api.field_behavior) = REQUIRED];
  582. // Optional. The etag for the version of the [Access Policy]
  583. // [google.identity.accesscontextmanager.v1.AccessPolicy] that this
  584. // replace operation is to be performed on. If, at the time of replace, the
  585. // etag for the Access Policy stored in Access Context Manager is different
  586. // from the specified etag, then the replace operation will not be performed
  587. // and the call will fail. This field is not required. If etag is not
  588. // provided, the operation will be performed as if a valid etag is provided.
  589. string etag = 4;
  590. }
  591. // A response to ReplaceAccessLevelsRequest. This will be put inside of
  592. // Operation.response field.
  593. message ReplaceAccessLevelsResponse {
  594. // List of the [Access Level]
  595. // [google.identity.accesscontextmanager.v1.AccessLevel] instances.
  596. repeated AccessLevel access_levels = 1;
  597. }
  598. // A request to list all `ServicePerimeters` in an `AccessPolicy`.
  599. message ListServicePerimetersRequest {
  600. // Required. Resource name for the access policy to list [Service Perimeters]
  601. // [google.identity.accesscontextmanager.v1.ServicePerimeter] from.
  602. //
  603. // Format:
  604. // `accessPolicies/{policy_id}`
  605. string parent = 1 [
  606. (google.api.field_behavior) = REQUIRED,
  607. (google.api.resource_reference) = {
  608. child_type: "accesscontextmanager.googleapis.com/ServicePerimeter"
  609. }
  610. ];
  611. // Number of [Service Perimeters]
  612. // [google.identity.accesscontextmanager.v1.ServicePerimeter] to include
  613. // in the list. Default 100.
  614. int32 page_size = 2;
  615. // Next page token for the next batch of [Service Perimeter]
  616. // [google.identity.accesscontextmanager.v1.ServicePerimeter] instances.
  617. // Defaults to the first page of results.
  618. string page_token = 3;
  619. }
  620. // A response to `ListServicePerimetersRequest`.
  621. message ListServicePerimetersResponse {
  622. // List of the [Service Perimeter]
  623. // [google.identity.accesscontextmanager.v1.ServicePerimeter] instances.
  624. repeated ServicePerimeter service_perimeters = 1;
  625. // The pagination token to retrieve the next page of results. If the value is
  626. // empty, no further results remain.
  627. string next_page_token = 2;
  628. }
  629. // A request to get a particular `ServicePerimeter`.
  630. message GetServicePerimeterRequest {
  631. // Required. Resource name for the [Service Perimeter]
  632. // [google.identity.accesscontextmanager.v1.ServicePerimeter].
  633. //
  634. // Format:
  635. // `accessPolicies/{policy_id}/servicePerimeters/{service_perimeters_id}`
  636. string name = 1 [
  637. (google.api.field_behavior) = REQUIRED,
  638. (google.api.resource_reference) = {
  639. type: "accesscontextmanager.googleapis.com/ServicePerimeter"
  640. }
  641. ];
  642. }
  643. // A request to create a `ServicePerimeter`.
  644. message CreateServicePerimeterRequest {
  645. // Required. Resource name for the access policy which owns this [Service
  646. // Perimeter] [google.identity.accesscontextmanager.v1.ServicePerimeter].
  647. //
  648. // Format: `accessPolicies/{policy_id}`
  649. string parent = 1 [
  650. (google.api.field_behavior) = REQUIRED,
  651. (google.api.resource_reference) = {
  652. child_type: "accesscontextmanager.googleapis.com/ServicePerimeter"
  653. }
  654. ];
  655. // Required. The [Service Perimeter]
  656. // [google.identity.accesscontextmanager.v1.ServicePerimeter] to create.
  657. // Syntactic correctness of the [Service Perimeter]
  658. // [google.identity.accesscontextmanager.v1.ServicePerimeter] is a
  659. // precondition for creation.
  660. ServicePerimeter service_perimeter = 2 [(google.api.field_behavior) = REQUIRED];
  661. }
  662. // A request to update a `ServicePerimeter`.
  663. message UpdateServicePerimeterRequest {
  664. // Required. The updated `ServicePerimeter`. Syntactic correctness of the
  665. // `ServicePerimeter` is a precondition for creation.
  666. ServicePerimeter service_perimeter = 1 [(google.api.field_behavior) = REQUIRED];
  667. // Required. Mask to control which fields get updated. Must be non-empty.
  668. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  669. }
  670. // A request to delete a `ServicePerimeter`.
  671. message DeleteServicePerimeterRequest {
  672. // Required. Resource name for the [Service Perimeter]
  673. // [google.identity.accesscontextmanager.v1.ServicePerimeter].
  674. //
  675. // Format:
  676. // `accessPolicies/{policy_id}/servicePerimeters/{service_perimeter_id}`
  677. string name = 1 [
  678. (google.api.field_behavior) = REQUIRED,
  679. (google.api.resource_reference) = {
  680. type: "accesscontextmanager.googleapis.com/ServicePerimeter"
  681. }
  682. ];
  683. }
  684. // A request to replace all existing Service Perimeters in an Access Policy
  685. // with the Service Perimeters provided. This is done atomically.
  686. message ReplaceServicePerimetersRequest {
  687. // Required. Resource name for the access policy which owns these
  688. // [Service Perimeters]
  689. // [google.identity.accesscontextmanager.v1.ServicePerimeter].
  690. //
  691. // Format: `accessPolicies/{policy_id}`
  692. string parent = 1 [
  693. (google.api.field_behavior) = REQUIRED,
  694. (google.api.resource_reference) = {
  695. child_type: "accesscontextmanager.googleapis.com/ServicePerimeter"
  696. }
  697. ];
  698. // Required. The desired [Service Perimeters]
  699. // [google.identity.accesscontextmanager.v1.ServicePerimeter] that should
  700. // replace all existing [Service Perimeters]
  701. // [google.identity.accesscontextmanager.v1.ServicePerimeter] in the
  702. // [Access Policy]
  703. // [google.identity.accesscontextmanager.v1.AccessPolicy].
  704. repeated ServicePerimeter service_perimeters = 2 [(google.api.field_behavior) = REQUIRED];
  705. // Optional. The etag for the version of the [Access Policy]
  706. // [google.identity.accesscontextmanager.v1.AccessPolicy] that this
  707. // replace operation is to be performed on. If, at the time of replace, the
  708. // etag for the Access Policy stored in Access Context Manager is different
  709. // from the specified etag, then the replace operation will not be performed
  710. // and the call will fail. This field is not required. If etag is not
  711. // provided, the operation will be performed as if a valid etag is provided.
  712. string etag = 3;
  713. }
  714. // A response to ReplaceServicePerimetersRequest. This will be put inside of
  715. // Operation.response field.
  716. message ReplaceServicePerimetersResponse {
  717. // List of the [Service Perimeter]
  718. // [google.identity.accesscontextmanager.v1.ServicePerimeter] instances.
  719. repeated ServicePerimeter service_perimeters = 1;
  720. }
  721. // A request to commit dry-run specs in all [Service Perimeters]
  722. // [google.identity.accesscontextmanager.v1.ServicePerimeter] belonging to
  723. // an [Access Policy][google.identity.accesscontextmanager.v1.AccessPolicy].
  724. message CommitServicePerimetersRequest {
  725. // Required. Resource name for the parent [Access Policy]
  726. // [google.identity.accesscontextmanager.v1.AccessPolicy] which owns all
  727. // [Service Perimeters]
  728. // [google.identity.accesscontextmanager.v1.ServicePerimeter] in scope for
  729. // the commit operation.
  730. //
  731. // Format: `accessPolicies/{policy_id}`
  732. string parent = 1 [
  733. (google.api.field_behavior) = REQUIRED,
  734. (google.api.resource_reference) = {
  735. child_type: "accesscontextmanager.googleapis.com/ServicePerimeter"
  736. }
  737. ];
  738. // Optional. The etag for the version of the [Access Policy]
  739. // [google.identity.accesscontextmanager.v1alpha.AccessPolicy] that this
  740. // commit operation is to be performed on. If, at the time of commit, the
  741. // etag for the Access Policy stored in Access Context Manager is different
  742. // from the specified etag, then the commit operation will not be performed
  743. // and the call will fail. This field is not required. If etag is not
  744. // provided, the operation will be performed as if a valid etag is provided.
  745. string etag = 2;
  746. }
  747. // A response to CommitServicePerimetersRequest. This will be put inside of
  748. // Operation.response field.
  749. message CommitServicePerimetersResponse {
  750. // List of all the [Service Perimeter]
  751. // [google.identity.accesscontextmanager.v1.ServicePerimeter] instances in
  752. // the [Access Policy]
  753. // [google.identity.accesscontextmanager.v1.AccessPolicy].
  754. repeated ServicePerimeter service_perimeters = 1;
  755. }
  756. // Request of [ListGcpUserAccessBindings]
  757. // [google.identity.accesscontextmanager.v1.AccessContextManager.ListGcpUserAccessBindings].
  758. message ListGcpUserAccessBindingsRequest {
  759. // Required. Example: "organizations/256"
  760. string parent = 1 [
  761. (google.api.field_behavior) = REQUIRED,
  762. (google.api.resource_reference) = {
  763. type: "cloudresourcemanager.googleapis.com/Organization"
  764. }
  765. ];
  766. // Optional. Maximum number of items to return. The server may return fewer items.
  767. // If left blank, the server may return any number of items.
  768. int32 page_size = 2 [(google.api.field_behavior) = OPTIONAL];
  769. // Optional. If left blank, returns the first page. To enumerate all items, use the
  770. // [next_page_token]
  771. // [google.identity.accesscontextmanager.v1.ListGcpUserAccessBindingsResponse.next_page_token]
  772. // from your previous list operation.
  773. string page_token = 3 [(google.api.field_behavior) = OPTIONAL];
  774. }
  775. // The format used in an `AccessLevel`.
  776. enum LevelFormat {
  777. // The format was not specified.
  778. LEVEL_FORMAT_UNSPECIFIED = 0;
  779. // Uses the format the resource was defined in. BasicLevels are returned as
  780. // BasicLevels, CustomLevels are returned as CustomLevels.
  781. AS_DEFINED = 1;
  782. // Use Cloud Common Expression Language when returning the resource. Both
  783. // BasicLevels and CustomLevels are returned as CustomLevels.
  784. CEL = 2;
  785. }
  786. // Response of [ListGcpUserAccessBindings]
  787. // [google.identity.accesscontextmanager.v1.AccessContextManager.ListGcpUserAccessBindings].
  788. message ListGcpUserAccessBindingsResponse {
  789. // [GcpUserAccessBinding]
  790. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding]
  791. repeated GcpUserAccessBinding gcp_user_access_bindings = 1;
  792. // Token to get the next page of items. If blank, there are no more items.
  793. string next_page_token = 2;
  794. }
  795. // Request of [GetGcpUserAccessBinding]
  796. // [google.identity.accesscontextmanager.v1.AccessContextManager.GetGcpUserAccessBinding].
  797. message GetGcpUserAccessBindingRequest {
  798. // Required. Example: "organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N"
  799. string name = 1 [
  800. (google.api.field_behavior) = REQUIRED,
  801. (google.api.resource_reference) = {
  802. type: "accesscontextmanager.googleapis.com/GcpUserAccessBinding"
  803. }
  804. ];
  805. }
  806. // Request of [CreateGcpUserAccessBinding]
  807. // [google.identity.accesscontextmanager.v1.AccessContextManager.CreateGcpUserAccessBinding].
  808. message CreateGcpUserAccessBindingRequest {
  809. // Required. Example: "organizations/256"
  810. string parent = 1 [
  811. (google.api.field_behavior) = REQUIRED,
  812. (google.api.resource_reference) = {
  813. type: "cloudresourcemanager.googleapis.com/Organization"
  814. }
  815. ];
  816. // Required. [GcpUserAccessBinding]
  817. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding]
  818. GcpUserAccessBinding gcp_user_access_binding = 2 [(google.api.field_behavior) = REQUIRED];
  819. }
  820. // Request of [UpdateGcpUserAccessBinding]
  821. // [google.identity.accesscontextmanager.v1.AccessContextManager.UpdateGcpUserAccessBinding].
  822. message UpdateGcpUserAccessBindingRequest {
  823. // Required. [GcpUserAccessBinding]
  824. // [google.identity.accesscontextmanager.v1.GcpUserAccessBinding]
  825. GcpUserAccessBinding gcp_user_access_binding = 1 [(google.api.field_behavior) = REQUIRED];
  826. // Required. Only the fields specified in this mask are updated. Because name and
  827. // group_key cannot be changed, update_mask is required and must always be:
  828. //
  829. // update_mask {
  830. // paths: "access_levels"
  831. // }
  832. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED];
  833. }
  834. // Request of [DeleteGcpUserAccessBinding]
  835. // [google.identity.accesscontextmanager.v1.AccessContextManager.DeleteGcpUserAccessBinding].
  836. message DeleteGcpUserAccessBindingRequest {
  837. // Required. Example: "organizations/256/gcpUserAccessBindings/b3-BhcX_Ud5N"
  838. string name = 1 [
  839. (google.api.field_behavior) = REQUIRED,
  840. (google.api.resource_reference) = {
  841. type: "accesscontextmanager.googleapis.com/GcpUserAccessBinding"
  842. }
  843. ];
  844. }
  845. // Currently, a completed operation means nothing. In the future, this metadata
  846. // and a completed operation may indicate that the binding has taken effect and
  847. // is affecting access decisions for all users.
  848. message GcpUserAccessBindingOperationMetadata {
  849. }
  850. // Metadata of Access Context Manager's Long Running Operations.
  851. message AccessContextManagerOperationMetadata {
  852. }