google-api-client 0.42.1 → 0.42.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (201) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +76 -0
  3. data/generated/google/apis/admob_v1.rb +1 -1
  4. data/generated/google/apis/admob_v1/classes.rb +3 -1
  5. data/generated/google/apis/apigee_v1.rb +1 -1
  6. data/generated/google/apis/apigee_v1/classes.rb +6 -12
  7. data/generated/google/apis/apigee_v1/representations.rb +1 -2
  8. data/generated/google/apis/apigee_v1/service.rb +18 -5
  9. data/generated/google/apis/appengine_v1.rb +1 -1
  10. data/generated/google/apis/appengine_v1/service.rb +6 -3
  11. data/generated/google/apis/appengine_v1beta.rb +1 -1
  12. data/generated/google/apis/appengine_v1beta/service.rb +6 -2
  13. data/generated/google/apis/appsmarket_v2.rb +1 -1
  14. data/generated/google/apis/bigquery_v2.rb +1 -1
  15. data/generated/google/apis/bigquery_v2/classes.rb +198 -3
  16. data/generated/google/apis/bigquery_v2/representations.rb +70 -0
  17. data/generated/google/apis/bigtableadmin_v1.rb +1 -1
  18. data/generated/google/apis/bigtableadmin_v1/classes.rb +267 -0
  19. data/generated/google/apis/bigtableadmin_v1/representations.rb +100 -0
  20. data/generated/google/apis/bigtableadmin_v2.rb +1 -1
  21. data/generated/google/apis/bigtableadmin_v2/classes.rb +355 -0
  22. data/generated/google/apis/bigtableadmin_v2/representations.rb +146 -0
  23. data/generated/google/apis/bigtableadmin_v2/service.rb +298 -0
  24. data/generated/google/apis/books_v1.rb +1 -1
  25. data/generated/google/apis/books_v1/classes.rb +140 -159
  26. data/generated/google/apis/books_v1/service.rb +47 -49
  27. data/generated/google/apis/chat_v1.rb +1 -1
  28. data/generated/google/apis/chat_v1/classes.rb +19 -0
  29. data/generated/google/apis/chat_v1/representations.rb +13 -0
  30. data/generated/google/apis/chat_v1/service.rb +39 -0
  31. data/generated/google/apis/chromeuxreport_v1.rb +1 -1
  32. data/generated/google/apis/chromeuxreport_v1/classes.rb +22 -0
  33. data/generated/google/apis/chromeuxreport_v1/representations.rb +2 -0
  34. data/generated/google/apis/{cloudfunctions_v1beta2.rb → cloudasset_v1p5beta1.rb} +9 -9
  35. data/generated/google/apis/cloudasset_v1p5beta1/classes.rb +1537 -0
  36. data/generated/google/apis/cloudasset_v1p5beta1/representations.rb +399 -0
  37. data/generated/google/apis/cloudasset_v1p5beta1/service.rb +129 -0
  38. data/generated/google/apis/cloudbuild_v1.rb +1 -1
  39. data/generated/google/apis/cloudbuild_v1alpha1.rb +1 -1
  40. data/generated/google/apis/cloudbuild_v1alpha2.rb +1 -1
  41. data/generated/google/apis/cloudfunctions_v1.rb +1 -1
  42. data/generated/google/apis/cloudfunctions_v1/classes.rb +0 -45
  43. data/generated/google/apis/cloudfunctions_v1/representations.rb +0 -17
  44. data/generated/google/apis/cloudresourcemanager_v1.rb +1 -1
  45. data/generated/google/apis/cloudresourcemanager_v1/classes.rb +503 -754
  46. data/generated/google/apis/cloudresourcemanager_v1/service.rb +198 -249
  47. data/generated/google/apis/cloudresourcemanager_v1beta1.rb +1 -1
  48. data/generated/google/apis/cloudresourcemanager_v1beta1/classes.rb +258 -429
  49. data/generated/google/apis/cloudresourcemanager_v1beta1/service.rb +136 -178
  50. data/generated/google/apis/cloudresourcemanager_v2.rb +1 -1
  51. data/generated/google/apis/cloudresourcemanager_v2/classes.rb +258 -414
  52. data/generated/google/apis/cloudresourcemanager_v2/service.rb +96 -129
  53. data/generated/google/apis/cloudresourcemanager_v2beta1.rb +1 -1
  54. data/generated/google/apis/cloudresourcemanager_v2beta1/classes.rb +258 -414
  55. data/generated/google/apis/cloudresourcemanager_v2beta1/service.rb +96 -129
  56. data/generated/google/apis/cloudscheduler_v1.rb +1 -1
  57. data/generated/google/apis/cloudscheduler_v1/classes.rb +11 -0
  58. data/generated/google/apis/cloudscheduler_v1/representations.rb +1 -0
  59. data/generated/google/apis/cloudscheduler_v1beta1.rb +1 -1
  60. data/generated/google/apis/cloudscheduler_v1beta1/classes.rb +11 -0
  61. data/generated/google/apis/cloudscheduler_v1beta1/representations.rb +1 -0
  62. data/generated/google/apis/cloudshell_v1.rb +1 -1
  63. data/generated/google/apis/cloudshell_v1/classes.rb +2 -2
  64. data/generated/google/apis/cloudshell_v1alpha1.rb +1 -1
  65. data/generated/google/apis/cloudshell_v1alpha1/classes.rb +8 -5
  66. data/generated/google/apis/content_v2.rb +1 -1
  67. data/generated/google/apis/content_v2/classes.rb +6 -0
  68. data/generated/google/apis/content_v2/representations.rb +1 -0
  69. data/generated/google/apis/content_v2_1.rb +1 -1
  70. data/generated/google/apis/content_v2_1/classes.rb +6 -0
  71. data/generated/google/apis/content_v2_1/representations.rb +1 -0
  72. data/generated/google/apis/customsearch_v1.rb +1 -1
  73. data/generated/google/apis/customsearch_v1/classes.rb +14 -10
  74. data/generated/google/apis/customsearch_v1/service.rb +6 -6
  75. data/generated/google/apis/datacatalog_v1beta1.rb +1 -1
  76. data/generated/google/apis/datacatalog_v1beta1/classes.rb +380 -569
  77. data/generated/google/apis/datacatalog_v1beta1/service.rb +319 -440
  78. data/generated/google/apis/dataflow_v1b3.rb +1 -1
  79. data/generated/google/apis/dataflow_v1b3/classes.rb +2 -1
  80. data/generated/google/apis/deploymentmanager_v2.rb +1 -1
  81. data/generated/google/apis/dfareporting_v3_4.rb +1 -1
  82. data/generated/google/apis/dfareporting_v3_4/classes.rb +421 -0
  83. data/generated/google/apis/dfareporting_v3_4/representations.rb +182 -0
  84. data/generated/google/apis/dialogflow_v2.rb +1 -1
  85. data/generated/google/apis/dialogflow_v2/classes.rb +148 -35
  86. data/generated/google/apis/dialogflow_v2/representations.rb +15 -0
  87. data/generated/google/apis/dialogflow_v2/service.rb +4 -0
  88. data/generated/google/apis/dialogflow_v2beta1.rb +1 -1
  89. data/generated/google/apis/dialogflow_v2beta1/classes.rb +164 -36
  90. data/generated/google/apis/dialogflow_v2beta1/representations.rb +15 -0
  91. data/generated/google/apis/dialogflow_v2beta1/service.rb +8 -0
  92. data/generated/google/apis/displayvideo_v1.rb +7 -1
  93. data/generated/google/apis/displayvideo_v1/classes.rb +1666 -1726
  94. data/generated/google/apis/displayvideo_v1/representations.rb +264 -0
  95. data/generated/google/apis/displayvideo_v1/service.rb +1173 -926
  96. data/generated/google/apis/doubleclicksearch_v2.rb +1 -1
  97. data/generated/google/apis/doubleclicksearch_v2/classes.rb +109 -126
  98. data/generated/google/apis/doubleclicksearch_v2/service.rb +3 -4
  99. data/generated/google/apis/fcm_v1.rb +1 -1
  100. data/generated/google/apis/fcm_v1/classes.rb +245 -393
  101. data/generated/google/apis/fcm_v1/service.rb +5 -6
  102. data/generated/google/apis/firebase_v1beta1.rb +1 -1
  103. data/generated/google/apis/firebase_v1beta1/classes.rb +10 -16
  104. data/generated/google/apis/firebaseml_v1beta2.rb +1 -1
  105. data/generated/google/apis/firebaseml_v1beta2/classes.rb +9 -0
  106. data/generated/google/apis/firebaseml_v1beta2/representations.rb +1 -0
  107. data/generated/google/apis/games_configuration_v1configuration.rb +1 -1
  108. data/generated/google/apis/games_configuration_v1configuration/service.rb +2 -2
  109. data/generated/google/apis/games_management_v1management.rb +1 -1
  110. data/generated/google/apis/games_management_v1management/service.rb +2 -2
  111. data/generated/google/apis/games_v1.rb +1 -1
  112. data/generated/google/apis/games_v1/classes.rb +1 -1
  113. data/generated/google/apis/games_v1/service.rb +2 -2
  114. data/generated/google/apis/gmail_v1.rb +1 -1
  115. data/generated/google/apis/gmail_v1/classes.rb +2 -2
  116. data/generated/google/apis/gmail_v1/service.rb +2 -1
  117. data/generated/google/apis/gmailpostmastertools_v1beta1.rb +4 -1
  118. data/generated/google/apis/monitoring_v1.rb +1 -1
  119. data/generated/google/apis/monitoring_v1/classes.rb +2 -1
  120. data/generated/google/apis/monitoring_v3.rb +1 -1
  121. data/generated/google/apis/monitoring_v3/classes.rb +5 -4
  122. data/generated/google/apis/monitoring_v3/service.rb +5 -4
  123. data/generated/google/apis/osconfig_v1.rb +1 -1
  124. data/generated/google/apis/osconfig_v1/classes.rb +75 -0
  125. data/generated/google/apis/osconfig_v1/representations.rb +35 -0
  126. data/generated/google/apis/osconfig_v1beta.rb +1 -1
  127. data/generated/google/apis/osconfig_v1beta/classes.rb +75 -0
  128. data/generated/google/apis/osconfig_v1beta/representations.rb +35 -0
  129. data/generated/google/apis/pagespeedonline_v5.rb +1 -1
  130. data/generated/google/apis/people_v1.rb +1 -1
  131. data/generated/google/apis/people_v1/classes.rb +243 -397
  132. data/generated/google/apis/people_v1/service.rb +156 -384
  133. data/generated/google/apis/prod_tt_sasportal_v1alpha1.rb +1 -1
  134. data/generated/google/apis/prod_tt_sasportal_v1alpha1/classes.rb +0 -73
  135. data/generated/google/apis/prod_tt_sasportal_v1alpha1/representations.rb +0 -32
  136. data/generated/google/apis/prod_tt_sasportal_v1alpha1/service.rb +0 -477
  137. data/generated/google/apis/pubsub_v1.rb +1 -1
  138. data/generated/google/apis/pubsub_v1/classes.rb +21 -0
  139. data/generated/google/apis/pubsub_v1/representations.rb +2 -0
  140. data/generated/google/apis/realtimebidding_v1.rb +1 -1
  141. data/generated/google/apis/redis_v1.rb +1 -1
  142. data/generated/google/apis/redis_v1/classes.rb +397 -0
  143. data/generated/google/apis/redis_v1/representations.rb +139 -0
  144. data/generated/google/apis/redis_v1beta1.rb +1 -1
  145. data/generated/google/apis/redis_v1beta1/classes.rb +397 -0
  146. data/generated/google/apis/redis_v1beta1/representations.rb +139 -0
  147. data/generated/google/apis/remotebuildexecution_v1.rb +1 -1
  148. data/generated/google/apis/remotebuildexecution_v1alpha.rb +1 -1
  149. data/generated/google/apis/remotebuildexecution_v2.rb +1 -1
  150. data/generated/google/apis/run_v1.rb +1 -1
  151. data/generated/google/apis/run_v1/classes.rb +835 -1248
  152. data/generated/google/apis/run_v1/service.rb +195 -245
  153. data/generated/google/apis/run_v1alpha1.rb +1 -1
  154. data/generated/google/apis/run_v1alpha1/classes.rb +934 -1331
  155. data/generated/google/apis/run_v1alpha1/service.rb +321 -377
  156. data/generated/google/apis/run_v1beta1.rb +1 -1
  157. data/generated/google/apis/run_v1beta1/classes.rb +209 -276
  158. data/generated/google/apis/run_v1beta1/service.rb +16 -18
  159. data/generated/google/apis/sasportal_v1alpha1.rb +1 -1
  160. data/generated/google/apis/sasportal_v1alpha1/classes.rb +0 -73
  161. data/generated/google/apis/sasportal_v1alpha1/representations.rb +0 -32
  162. data/generated/google/apis/sasportal_v1alpha1/service.rb +0 -477
  163. data/generated/google/apis/serviceconsumermanagement_v1.rb +1 -1
  164. data/generated/google/apis/serviceconsumermanagement_v1/classes.rb +2 -2
  165. data/generated/google/apis/serviceconsumermanagement_v1/service.rb +7 -7
  166. data/generated/google/apis/serviceconsumermanagement_v1beta1.rb +1 -1
  167. data/generated/google/apis/serviceconsumermanagement_v1beta1/classes.rb +1 -1
  168. data/generated/google/apis/servicenetworking_v1.rb +1 -1
  169. data/generated/google/apis/servicenetworking_v1/classes.rb +1 -1
  170. data/generated/google/apis/servicenetworking_v1beta.rb +1 -1
  171. data/generated/google/apis/servicenetworking_v1beta/classes.rb +1 -1
  172. data/generated/google/apis/serviceusage_v1.rb +1 -1
  173. data/generated/google/apis/serviceusage_v1/classes.rb +1 -1
  174. data/generated/google/apis/serviceusage_v1beta1.rb +1 -1
  175. data/generated/google/apis/serviceusage_v1beta1/classes.rb +1 -1
  176. data/generated/google/apis/spanner_v1.rb +1 -1
  177. data/generated/google/apis/sql_v1beta4.rb +1 -1
  178. data/generated/google/apis/sql_v1beta4/classes.rb +207 -200
  179. data/generated/google/apis/sql_v1beta4/representations.rb +2 -1
  180. data/generated/google/apis/sql_v1beta4/service.rb +2 -2
  181. data/generated/google/apis/testing_v1.rb +1 -1
  182. data/generated/google/apis/testing_v1/classes.rb +63 -0
  183. data/generated/google/apis/testing_v1/representations.rb +32 -0
  184. data/generated/google/apis/toolresults_v1beta3.rb +1 -1
  185. data/generated/google/apis/toolresults_v1beta3/classes.rb +9 -0
  186. data/generated/google/apis/toolresults_v1beta3/representations.rb +1 -0
  187. data/generated/google/apis/toolresults_v1beta3/service.rb +498 -498
  188. data/generated/google/apis/webfonts_v1.rb +1 -1
  189. data/generated/google/apis/webfonts_v1/service.rb +2 -2
  190. data/generated/google/apis/youtube_partner_v1.rb +1 -1
  191. data/generated/google/apis/youtube_partner_v1/classes.rb +637 -761
  192. data/generated/google/apis/youtube_partner_v1/service.rb +511 -651
  193. data/generated/google/apis/youtube_v3.rb +1 -1
  194. data/generated/google/apis/youtube_v3/classes.rb +6 -0
  195. data/generated/google/apis/youtube_v3/representations.rb +1 -0
  196. data/generated/google/apis/youtube_v3/service.rb +32 -32
  197. data/lib/google/apis/version.rb +1 -1
  198. metadata +7 -7
  199. data/generated/google/apis/cloudfunctions_v1beta2/classes.rb +0 -848
  200. data/generated/google/apis/cloudfunctions_v1beta2/representations.rb +0 -346
  201. data/generated/google/apis/cloudfunctions_v1beta2/service.rb +0 -486
@@ -0,0 +1,1537 @@
1
+ # Copyright 2015 Google Inc.
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
+
15
+ require 'date'
16
+ require 'google/apis/core/base_service'
17
+ require 'google/apis/core/json_representation'
18
+ require 'google/apis/core/hashable'
19
+ require 'google/apis/errors'
20
+
21
+ module Google
22
+ module Apis
23
+ module CloudassetV1p5beta1
24
+
25
+ # An asset in Google Cloud. An asset can be any resource in the Google Cloud
26
+ # [resource
27
+ # hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-
28
+ # resource-hierarchy),
29
+ # a resource outside the Google Cloud resource hierarchy (such as Google
30
+ # Kubernetes Engine clusters and objects), or a policy (e.g. Cloud IAM policy).
31
+ # See [Supported asset
32
+ # types](https://cloud.google.com/asset-inventory/docs/supported-asset-types)
33
+ # for more information.
34
+ class Asset
35
+ include Google::Apis::Core::Hashable
36
+
37
+ # An `AccessLevel` is a label that can be applied to requests to Google Cloud
38
+ # services, along with a list of requirements necessary for the label to be
39
+ # applied.
40
+ # Corresponds to the JSON property `accessLevel`
41
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1AccessLevel]
42
+ attr_accessor :access_level
43
+
44
+ # `AccessPolicy` is a container for `AccessLevels` (which define the necessary
45
+ # attributes to use Google Cloud services) and `ServicePerimeters` (which
46
+ # define regions of services able to freely pass data within a perimeter). An
47
+ # access policy is globally visible within an organization, and the
48
+ # restrictions it specifies apply to all projects within an organization.
49
+ # Corresponds to the JSON property `accessPolicy`
50
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1AccessPolicy]
51
+ attr_accessor :access_policy
52
+
53
+ # The ancestry path of an asset in Google Cloud [resource
54
+ # hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-
55
+ # resource-hierarchy),
56
+ # represented as a list of relative resource names. An ancestry path starts
57
+ # with the closest ancestor in the hierarchy and ends at root. If the asset
58
+ # is a project, folder, or organization, the ancestry path starts from the
59
+ # asset itself.
60
+ # Example: `["projects/123456789", "folders/5432", "organizations/1234"]`
61
+ # Corresponds to the JSON property `ancestors`
62
+ # @return [Array<String>]
63
+ attr_accessor :ancestors
64
+
65
+ # The type of the asset. Example: `compute.googleapis.com/Disk`
66
+ # See [Supported asset
67
+ # types](https://cloud.google.com/asset-inventory/docs/supported-asset-types)
68
+ # for more information.
69
+ # Corresponds to the JSON property `assetType`
70
+ # @return [String]
71
+ attr_accessor :asset_type
72
+
73
+ # An Identity and Access Management (IAM) policy, which specifies access
74
+ # controls for Google Cloud resources.
75
+ # A `Policy` is a collection of `bindings`. A `binding` binds one or more
76
+ # `members` to a single `role`. Members can be user accounts, service accounts,
77
+ # Google groups, and domains (such as G Suite). A `role` is a named list of
78
+ # permissions; each `role` can be an IAM predefined role or a user-created
79
+ # custom role.
80
+ # For some types of Google Cloud resources, a `binding` can also specify a
81
+ # `condition`, which is a logical expression that allows access to a resource
82
+ # only if the expression evaluates to `true`. A condition can add constraints
83
+ # based on attributes of the request, the resource, or both. To learn which
84
+ # resources support conditions in their IAM policies, see the
85
+ # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-
86
+ # policies).
87
+ # **JSON example:**
88
+ # `
89
+ # "bindings": [
90
+ # `
91
+ # "role": "roles/resourcemanager.organizationAdmin",
92
+ # "members": [
93
+ # "user:mike@example.com",
94
+ # "group:admins@example.com",
95
+ # "domain:google.com",
96
+ # "serviceAccount:my-project-id@appspot.gserviceaccount.com"
97
+ # ]
98
+ # `,
99
+ # `
100
+ # "role": "roles/resourcemanager.organizationViewer",
101
+ # "members": [
102
+ # "user:eve@example.com"
103
+ # ],
104
+ # "condition": `
105
+ # "title": "expirable access",
106
+ # "description": "Does not grant access after Sep 2020",
107
+ # "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')
108
+ # ",
109
+ # `
110
+ # `
111
+ # ],
112
+ # "etag": "BwWWja0YfJA=",
113
+ # "version": 3
114
+ # `
115
+ # **YAML example:**
116
+ # bindings:
117
+ # - members:
118
+ # - user:mike@example.com
119
+ # - group:admins@example.com
120
+ # - domain:google.com
121
+ # - serviceAccount:my-project-id@appspot.gserviceaccount.com
122
+ # role: roles/resourcemanager.organizationAdmin
123
+ # - members:
124
+ # - user:eve@example.com
125
+ # role: roles/resourcemanager.organizationViewer
126
+ # condition:
127
+ # title: expirable access
128
+ # description: Does not grant access after Sep 2020
129
+ # expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
130
+ # - etag: BwWWja0YfJA=
131
+ # - version: 3
132
+ # For a description of IAM and its features, see the
133
+ # [IAM documentation](https://cloud.google.com/iam/docs/).
134
+ # Corresponds to the JSON property `iamPolicy`
135
+ # @return [Google::Apis::CloudassetV1p5beta1::Policy]
136
+ attr_accessor :iam_policy
137
+
138
+ # The full name of the asset. Example:
139
+ # `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/
140
+ # instance1`
141
+ # See [Resource
142
+ # names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
143
+ # for more information.
144
+ # Corresponds to the JSON property `name`
145
+ # @return [String]
146
+ attr_accessor :name
147
+
148
+ # A representation of an [organization
149
+ # policy](https://cloud.google.com/resource-manager/docs/organization-policy/
150
+ # overview#organization_policy).
151
+ # There can be more than one organization policy with different constraints
152
+ # set on a given resource.
153
+ # Corresponds to the JSON property `orgPolicy`
154
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::GoogleCloudOrgpolicyV1Policy>]
155
+ attr_accessor :org_policy
156
+
157
+ # A representation of a Google Cloud resource.
158
+ # Corresponds to the JSON property `resource`
159
+ # @return [Google::Apis::CloudassetV1p5beta1::Resource]
160
+ attr_accessor :resource
161
+
162
+ # `ServicePerimeter` describes a set of Google Cloud resources which can freely
163
+ # import and export data amongst themselves, but not export outside of the
164
+ # `ServicePerimeter`. If a request with a source within this `ServicePerimeter`
165
+ # has a target outside of the `ServicePerimeter`, the request will be blocked.
166
+ # Otherwise the request is allowed. There are two types of Service Perimeter -
167
+ # Regular and Bridge. Regular Service Perimeters cannot overlap, a single
168
+ # Google Cloud project can only belong to a single regular Service Perimeter.
169
+ # Service Perimeter Bridges can contain only Google Cloud projects as members,
170
+ # a single Google Cloud project may belong to multiple Service Perimeter
171
+ # Bridges.
172
+ # Corresponds to the JSON property `servicePerimeter`
173
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeter]
174
+ attr_accessor :service_perimeter
175
+
176
+ def initialize(**args)
177
+ update!(**args)
178
+ end
179
+
180
+ # Update properties of this object
181
+ def update!(**args)
182
+ @access_level = args[:access_level] if args.key?(:access_level)
183
+ @access_policy = args[:access_policy] if args.key?(:access_policy)
184
+ @ancestors = args[:ancestors] if args.key?(:ancestors)
185
+ @asset_type = args[:asset_type] if args.key?(:asset_type)
186
+ @iam_policy = args[:iam_policy] if args.key?(:iam_policy)
187
+ @name = args[:name] if args.key?(:name)
188
+ @org_policy = args[:org_policy] if args.key?(:org_policy)
189
+ @resource = args[:resource] if args.key?(:resource)
190
+ @service_perimeter = args[:service_perimeter] if args.key?(:service_perimeter)
191
+ end
192
+ end
193
+
194
+ # Specifies the audit configuration for a service.
195
+ # The configuration determines which permission types are logged, and what
196
+ # identities, if any, are exempted from logging.
197
+ # An AuditConfig must have one or more AuditLogConfigs.
198
+ # If there are AuditConfigs for both `allServices` and a specific service,
199
+ # the union of the two AuditConfigs is used for that service: the log_types
200
+ # specified in each AuditConfig are enabled, and the exempted_members in each
201
+ # AuditLogConfig are exempted.
202
+ # Example Policy with multiple AuditConfigs:
203
+ # `
204
+ # "audit_configs": [
205
+ # `
206
+ # "service": "allServices",
207
+ # "audit_log_configs": [
208
+ # `
209
+ # "log_type": "DATA_READ",
210
+ # "exempted_members": [
211
+ # "user:jose@example.com"
212
+ # ]
213
+ # `,
214
+ # `
215
+ # "log_type": "DATA_WRITE"
216
+ # `,
217
+ # `
218
+ # "log_type": "ADMIN_READ"
219
+ # `
220
+ # ]
221
+ # `,
222
+ # `
223
+ # "service": "sampleservice.googleapis.com",
224
+ # "audit_log_configs": [
225
+ # `
226
+ # "log_type": "DATA_READ"
227
+ # `,
228
+ # `
229
+ # "log_type": "DATA_WRITE",
230
+ # "exempted_members": [
231
+ # "user:aliya@example.com"
232
+ # ]
233
+ # `
234
+ # ]
235
+ # `
236
+ # ]
237
+ # `
238
+ # For sampleservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ
239
+ # logging. It also exempts jose@example.com from DATA_READ logging, and
240
+ # aliya@example.com from DATA_WRITE logging.
241
+ class AuditConfig
242
+ include Google::Apis::Core::Hashable
243
+
244
+ # The configuration for logging of each type of permission.
245
+ # Corresponds to the JSON property `auditLogConfigs`
246
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::AuditLogConfig>]
247
+ attr_accessor :audit_log_configs
248
+
249
+ # Specifies a service that will be enabled for audit logging.
250
+ # For example, `storage.googleapis.com`, `cloudsql.googleapis.com`.
251
+ # `allServices` is a special value that covers all services.
252
+ # Corresponds to the JSON property `service`
253
+ # @return [String]
254
+ attr_accessor :service
255
+
256
+ def initialize(**args)
257
+ update!(**args)
258
+ end
259
+
260
+ # Update properties of this object
261
+ def update!(**args)
262
+ @audit_log_configs = args[:audit_log_configs] if args.key?(:audit_log_configs)
263
+ @service = args[:service] if args.key?(:service)
264
+ end
265
+ end
266
+
267
+ # Provides the configuration for logging a type of permissions.
268
+ # Example:
269
+ # `
270
+ # "audit_log_configs": [
271
+ # `
272
+ # "log_type": "DATA_READ",
273
+ # "exempted_members": [
274
+ # "user:jose@example.com"
275
+ # ]
276
+ # `,
277
+ # `
278
+ # "log_type": "DATA_WRITE"
279
+ # `
280
+ # ]
281
+ # `
282
+ # This enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting
283
+ # jose@example.com from DATA_READ logging.
284
+ class AuditLogConfig
285
+ include Google::Apis::Core::Hashable
286
+
287
+ # Specifies the identities that do not cause logging for this type of
288
+ # permission.
289
+ # Follows the same format of Binding.members.
290
+ # Corresponds to the JSON property `exemptedMembers`
291
+ # @return [Array<String>]
292
+ attr_accessor :exempted_members
293
+
294
+ # The log type that this config enables.
295
+ # Corresponds to the JSON property `logType`
296
+ # @return [String]
297
+ attr_accessor :log_type
298
+
299
+ def initialize(**args)
300
+ update!(**args)
301
+ end
302
+
303
+ # Update properties of this object
304
+ def update!(**args)
305
+ @exempted_members = args[:exempted_members] if args.key?(:exempted_members)
306
+ @log_type = args[:log_type] if args.key?(:log_type)
307
+ end
308
+ end
309
+
310
+ # Associates `members` with a `role`.
311
+ class Binding
312
+ include Google::Apis::Core::Hashable
313
+
314
+ # Represents a textual expression in the Common Expression Language (CEL)
315
+ # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
316
+ # are documented at https://github.com/google/cel-spec.
317
+ # Example (Comparison):
318
+ # title: "Summary size limit"
319
+ # description: "Determines if a summary is less than 100 chars"
320
+ # expression: "document.summary.size() < 100"
321
+ # Example (Equality):
322
+ # title: "Requestor is owner"
323
+ # description: "Determines if requestor is the document owner"
324
+ # expression: "document.owner == request.auth.claims.email"
325
+ # Example (Logic):
326
+ # title: "Public documents"
327
+ # description: "Determine whether the document should be publicly visible"
328
+ # expression: "document.type != 'private' && document.type != 'internal'"
329
+ # Example (Data Manipulation):
330
+ # title: "Notification string"
331
+ # description: "Create a notification string with a timestamp."
332
+ # expression: "'New message received at ' + string(document.create_time)"
333
+ # The exact variables and functions that may be referenced within an expression
334
+ # are determined by the service that evaluates it. See the service
335
+ # documentation for additional information.
336
+ # Corresponds to the JSON property `condition`
337
+ # @return [Google::Apis::CloudassetV1p5beta1::Expr]
338
+ attr_accessor :condition
339
+
340
+ # Specifies the identities requesting access for a Cloud Platform resource.
341
+ # `members` can have the following values:
342
+ # * `allUsers`: A special identifier that represents anyone who is
343
+ # on the internet; with or without a Google account.
344
+ # * `allAuthenticatedUsers`: A special identifier that represents anyone
345
+ # who is authenticated with a Google account or a service account.
346
+ # * `user:`emailid``: An email address that represents a specific Google
347
+ # account. For example, `alice@example.com` .
348
+ # * `serviceAccount:`emailid``: An email address that represents a service
349
+ # account. For example, `my-other-app@appspot.gserviceaccount.com`.
350
+ # * `group:`emailid``: An email address that represents a Google group.
351
+ # For example, `admins@example.com`.
352
+ # * `deleted:user:`emailid`?uid=`uniqueid``: An email address (plus unique
353
+ # identifier) representing a user that has been recently deleted. For
354
+ # example, `alice@example.com?uid=123456789012345678901`. If the user is
355
+ # recovered, this value reverts to `user:`emailid`` and the recovered user
356
+ # retains the role in the binding.
357
+ # * `deleted:serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus
358
+ # unique identifier) representing a service account that has been recently
359
+ # deleted. For example,
360
+ # `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
361
+ # If the service account is undeleted, this value reverts to
362
+ # `serviceAccount:`emailid`` and the undeleted service account retains the
363
+ # role in the binding.
364
+ # * `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
365
+ # identifier) representing a Google group that has been recently
366
+ # deleted. For example, `admins@example.com?uid=123456789012345678901`. If
367
+ # the group is recovered, this value reverts to `group:`emailid`` and the
368
+ # recovered group retains the role in the binding.
369
+ # * `domain:`domain``: The G Suite domain (primary) that represents all the
370
+ # users of that domain. For example, `google.com` or `example.com`.
371
+ # Corresponds to the JSON property `members`
372
+ # @return [Array<String>]
373
+ attr_accessor :members
374
+
375
+ # Role that is assigned to `members`.
376
+ # For example, `roles/viewer`, `roles/editor`, or `roles/owner`.
377
+ # Corresponds to the JSON property `role`
378
+ # @return [String]
379
+ attr_accessor :role
380
+
381
+ def initialize(**args)
382
+ update!(**args)
383
+ end
384
+
385
+ # Update properties of this object
386
+ def update!(**args)
387
+ @condition = args[:condition] if args.key?(:condition)
388
+ @members = args[:members] if args.key?(:members)
389
+ @role = args[:role] if args.key?(:role)
390
+ end
391
+ end
392
+
393
+ # Represents a textual expression in the Common Expression Language (CEL)
394
+ # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
395
+ # are documented at https://github.com/google/cel-spec.
396
+ # Example (Comparison):
397
+ # title: "Summary size limit"
398
+ # description: "Determines if a summary is less than 100 chars"
399
+ # expression: "document.summary.size() < 100"
400
+ # Example (Equality):
401
+ # title: "Requestor is owner"
402
+ # description: "Determines if requestor is the document owner"
403
+ # expression: "document.owner == request.auth.claims.email"
404
+ # Example (Logic):
405
+ # title: "Public documents"
406
+ # description: "Determine whether the document should be publicly visible"
407
+ # expression: "document.type != 'private' && document.type != 'internal'"
408
+ # Example (Data Manipulation):
409
+ # title: "Notification string"
410
+ # description: "Create a notification string with a timestamp."
411
+ # expression: "'New message received at ' + string(document.create_time)"
412
+ # The exact variables and functions that may be referenced within an expression
413
+ # are determined by the service that evaluates it. See the service
414
+ # documentation for additional information.
415
+ class Expr
416
+ include Google::Apis::Core::Hashable
417
+
418
+ # Optional. Description of the expression. This is a longer text which
419
+ # describes the expression, e.g. when hovered over it in a UI.
420
+ # Corresponds to the JSON property `description`
421
+ # @return [String]
422
+ attr_accessor :description
423
+
424
+ # Textual representation of an expression in Common Expression Language
425
+ # syntax.
426
+ # Corresponds to the JSON property `expression`
427
+ # @return [String]
428
+ attr_accessor :expression
429
+
430
+ # Optional. String indicating the location of the expression for error
431
+ # reporting, e.g. a file name and a position in the file.
432
+ # Corresponds to the JSON property `location`
433
+ # @return [String]
434
+ attr_accessor :location
435
+
436
+ # Optional. Title for the expression, i.e. a short string describing
437
+ # its purpose. This can be used e.g. in UIs which allow to enter the
438
+ # expression.
439
+ # Corresponds to the JSON property `title`
440
+ # @return [String]
441
+ attr_accessor :title
442
+
443
+ def initialize(**args)
444
+ update!(**args)
445
+ end
446
+
447
+ # Update properties of this object
448
+ def update!(**args)
449
+ @description = args[:description] if args.key?(:description)
450
+ @expression = args[:expression] if args.key?(:expression)
451
+ @location = args[:location] if args.key?(:location)
452
+ @title = args[:title] if args.key?(:title)
453
+ end
454
+ end
455
+
456
+ # Used in `policy_type` to specify how `boolean_policy` will behave at this
457
+ # resource.
458
+ class GoogleCloudOrgpolicyV1BooleanPolicy
459
+ include Google::Apis::Core::Hashable
460
+
461
+ # If `true`, then the `Policy` is enforced. If `false`, then any
462
+ # configuration is acceptable.
463
+ # Suppose you have a `Constraint`
464
+ # `constraints/compute.disableSerialPortAccess` with `constraint_default`
465
+ # set to `ALLOW`. A `Policy` for that `Constraint` exhibits the following
466
+ # behavior:
467
+ # - If the `Policy` at this resource has enforced set to `false`, serial
468
+ # port connection attempts will be allowed.
469
+ # - If the `Policy` at this resource has enforced set to `true`, serial
470
+ # port connection attempts will be refused.
471
+ # - If the `Policy` at this resource is `RestoreDefault`, serial port
472
+ # connection attempts will be allowed.
473
+ # - If no `Policy` is set at this resource or anywhere higher in the
474
+ # resource hierarchy, serial port connection attempts will be allowed.
475
+ # - If no `Policy` is set at this resource, but one exists higher in the
476
+ # resource hierarchy, the behavior is as if the`Policy` were set at
477
+ # this resource.
478
+ # The following examples demonstrate the different possible layerings:
479
+ # Example 1 (nearest `Constraint` wins):
480
+ # `organizations/foo` has a `Policy` with:
481
+ # `enforced: false`
482
+ # `projects/bar` has no `Policy` set.
483
+ # The constraint at `projects/bar` and `organizations/foo` will not be
484
+ # enforced.
485
+ # Example 2 (enforcement gets replaced):
486
+ # `organizations/foo` has a `Policy` with:
487
+ # `enforced: false`
488
+ # `projects/bar` has a `Policy` with:
489
+ # `enforced: true`
490
+ # The constraint at `organizations/foo` is not enforced.
491
+ # The constraint at `projects/bar` is enforced.
492
+ # Example 3 (RestoreDefault):
493
+ # `organizations/foo` has a `Policy` with:
494
+ # `enforced: true`
495
+ # `projects/bar` has a `Policy` with:
496
+ # `RestoreDefault: ```
497
+ # The constraint at `organizations/foo` is enforced.
498
+ # The constraint at `projects/bar` is not enforced, because
499
+ # `constraint_default` for the `Constraint` is `ALLOW`.
500
+ # Corresponds to the JSON property `enforced`
501
+ # @return [Boolean]
502
+ attr_accessor :enforced
503
+ alias_method :enforced?, :enforced
504
+
505
+ def initialize(**args)
506
+ update!(**args)
507
+ end
508
+
509
+ # Update properties of this object
510
+ def update!(**args)
511
+ @enforced = args[:enforced] if args.key?(:enforced)
512
+ end
513
+ end
514
+
515
+ # Used in `policy_type` to specify how `list_policy` behaves at this
516
+ # resource.
517
+ # `ListPolicy` can define specific values and subtrees of Cloud Resource
518
+ # Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that
519
+ # are allowed or denied by setting the `allowed_values` and `denied_values`
520
+ # fields. This is achieved by using the `under:` and optional `is:` prefixes.
521
+ # The `under:` prefix is used to denote resource subtree values.
522
+ # The `is:` prefix is used to denote specific values, and is required only
523
+ # if the value contains a ":". Values prefixed with "is:" are treated the
524
+ # same as values with no prefix.
525
+ # Ancestry subtrees must be in one of the following formats:
526
+ # - "projects/<project-id>", e.g. "projects/tokyo-rain-123"
527
+ # - "folders/<folder-id>", e.g. "folders/1234"
528
+ # - "organizations/<organization-id>", e.g. "organizations/1234"
529
+ # The `supports_under` field of the associated `Constraint` defines whether
530
+ # ancestry prefixes can be used. You can set `allowed_values` and
531
+ # `denied_values` in the same `Policy` if `all_values` is
532
+ # `ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all
533
+ # values. If `all_values` is set to either `ALLOW` or `DENY`,
534
+ # `allowed_values` and `denied_values` must be unset.
535
+ class GoogleCloudOrgpolicyV1ListPolicy
536
+ include Google::Apis::Core::Hashable
537
+
538
+ # The policy all_values state.
539
+ # Corresponds to the JSON property `allValues`
540
+ # @return [String]
541
+ attr_accessor :all_values
542
+
543
+ # List of values allowed at this resource. Can only be set if `all_values`
544
+ # is set to `ALL_VALUES_UNSPECIFIED`.
545
+ # Corresponds to the JSON property `allowedValues`
546
+ # @return [Array<String>]
547
+ attr_accessor :allowed_values
548
+
549
+ # List of values denied at this resource. Can only be set if `all_values`
550
+ # is set to `ALL_VALUES_UNSPECIFIED`.
551
+ # Corresponds to the JSON property `deniedValues`
552
+ # @return [Array<String>]
553
+ attr_accessor :denied_values
554
+
555
+ # Determines the inheritance behavior for this `Policy`.
556
+ # By default, a `ListPolicy` set at a resource supersedes any `Policy` set
557
+ # anywhere up the resource hierarchy. However, if `inherit_from_parent` is
558
+ # set to `true`, then the values from the effective `Policy` of the parent
559
+ # resource are inherited, meaning the values set in this `Policy` are
560
+ # added to the values inherited up the hierarchy.
561
+ # Setting `Policy` hierarchies that inherit both allowed values and denied
562
+ # values isn't recommended in most circumstances to keep the configuration
563
+ # simple and understandable. However, it is possible to set a `Policy` with
564
+ # `allowed_values` set that inherits a `Policy` with `denied_values` set.
565
+ # In this case, the values that are allowed must be in `allowed_values` and
566
+ # not present in `denied_values`.
567
+ # For example, suppose you have a `Constraint`
568
+ # `constraints/serviceuser.services`, which has a `constraint_type` of
569
+ # `list_constraint`, and with `constraint_default` set to `ALLOW`.
570
+ # Suppose that at the Organization level, a `Policy` is applied that
571
+ # restricts the allowed API activations to ``E1`, `E2``. Then, if a
572
+ # `Policy` is applied to a project below the Organization that has
573
+ # `inherit_from_parent` set to `false` and field all_values set to DENY,
574
+ # then an attempt to activate any API will be denied.
575
+ # The following examples demonstrate different possible layerings for
576
+ # `projects/bar` parented by `organizations/foo`:
577
+ # Example 1 (no inherited values):
578
+ # `organizations/foo` has a `Policy` with values:
579
+ # `allowed_values: "E1" allowed_values:"E2"`
580
+ # `projects/bar` has `inherit_from_parent` `false` and values:
581
+ # `allowed_values: "E3" allowed_values: "E4"`
582
+ # The accepted values at `organizations/foo` are `E1`, `E2`.
583
+ # The accepted values at `projects/bar` are `E3`, and `E4`.
584
+ # Example 2 (inherited values):
585
+ # `organizations/foo` has a `Policy` with values:
586
+ # `allowed_values: "E1" allowed_values:"E2"`
587
+ # `projects/bar` has a `Policy` with values:
588
+ # `value: "E3" value: "E4" inherit_from_parent: true`
589
+ # The accepted values at `organizations/foo` are `E1`, `E2`.
590
+ # The accepted values at `projects/bar` are `E1`, `E2`, `E3`, and `E4`.
591
+ # Example 3 (inheriting both allowed and denied values):
592
+ # `organizations/foo` has a `Policy` with values:
593
+ # `allowed_values: "E1" allowed_values: "E2"`
594
+ # `projects/bar` has a `Policy` with:
595
+ # `denied_values: "E1"`
596
+ # The accepted values at `organizations/foo` are `E1`, `E2`.
597
+ # The value accepted at `projects/bar` is `E2`.
598
+ # Example 4 (RestoreDefault):
599
+ # `organizations/foo` has a `Policy` with values:
600
+ # `allowed_values: "E1" allowed_values:"E2"`
601
+ # `projects/bar` has a `Policy` with values:
602
+ # `RestoreDefault: ```
603
+ # The accepted values at `organizations/foo` are `E1`, `E2`.
604
+ # The accepted values at `projects/bar` are either all or none depending on
605
+ # the value of `constraint_default` (if `ALLOW`, all; if
606
+ # `DENY`, none).
607
+ # Example 5 (no policy inherits parent policy):
608
+ # `organizations/foo` has no `Policy` set.
609
+ # `projects/bar` has no `Policy` set.
610
+ # The accepted values at both levels are either all or none depending on
611
+ # the value of `constraint_default` (if `ALLOW`, all; if
612
+ # `DENY`, none).
613
+ # Example 6 (ListConstraint allowing all):
614
+ # `organizations/foo` has a `Policy` with values:
615
+ # `allowed_values: "E1" allowed_values: "E2"`
616
+ # `projects/bar` has a `Policy` with:
617
+ # `all: ALLOW`
618
+ # The accepted values at `organizations/foo` are `E1`, E2`.
619
+ # Any value is accepted at `projects/bar`.
620
+ # Example 7 (ListConstraint allowing none):
621
+ # `organizations/foo` has a `Policy` with values:
622
+ # `allowed_values: "E1" allowed_values: "E2"`
623
+ # `projects/bar` has a `Policy` with:
624
+ # `all: DENY`
625
+ # The accepted values at `organizations/foo` are `E1`, E2`.
626
+ # No value is accepted at `projects/bar`.
627
+ # Example 10 (allowed and denied subtrees of Resource Manager hierarchy):
628
+ # Given the following resource hierarchy
629
+ # O1->`F1, F2`; F1->`P1`; F2->`P2, P3`,
630
+ # `organizations/foo` has a `Policy` with values:
631
+ # `allowed_values: "under:organizations/O1"`
632
+ # `projects/bar` has a `Policy` with:
633
+ # `allowed_values: "under:projects/P3"`
634
+ # `denied_values: "under:folders/F2"`
635
+ # The accepted values at `organizations/foo` are `organizations/O1`,
636
+ # `folders/F1`, `folders/F2`, `projects/P1`, `projects/P2`,
637
+ # `projects/P3`.
638
+ # The accepted values at `projects/bar` are `organizations/O1`,
639
+ # `folders/F1`, `projects/P1`.
640
+ # Corresponds to the JSON property `inheritFromParent`
641
+ # @return [Boolean]
642
+ attr_accessor :inherit_from_parent
643
+ alias_method :inherit_from_parent?, :inherit_from_parent
644
+
645
+ # Optional. The Google Cloud Console will try to default to a configuration
646
+ # that matches the value specified in this `Policy`. If `suggested_value`
647
+ # is not set, it will inherit the value specified higher in the hierarchy,
648
+ # unless `inherit_from_parent` is `false`.
649
+ # Corresponds to the JSON property `suggestedValue`
650
+ # @return [String]
651
+ attr_accessor :suggested_value
652
+
653
+ def initialize(**args)
654
+ update!(**args)
655
+ end
656
+
657
+ # Update properties of this object
658
+ def update!(**args)
659
+ @all_values = args[:all_values] if args.key?(:all_values)
660
+ @allowed_values = args[:allowed_values] if args.key?(:allowed_values)
661
+ @denied_values = args[:denied_values] if args.key?(:denied_values)
662
+ @inherit_from_parent = args[:inherit_from_parent] if args.key?(:inherit_from_parent)
663
+ @suggested_value = args[:suggested_value] if args.key?(:suggested_value)
664
+ end
665
+ end
666
+
667
+ # Defines a Cloud Organization `Policy` which is used to specify `Constraints`
668
+ # for configurations of Cloud Platform resources.
669
+ class GoogleCloudOrgpolicyV1Policy
670
+ include Google::Apis::Core::Hashable
671
+
672
+ # Used in `policy_type` to specify how `boolean_policy` will behave at this
673
+ # resource.
674
+ # Corresponds to the JSON property `booleanPolicy`
675
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleCloudOrgpolicyV1BooleanPolicy]
676
+ attr_accessor :boolean_policy
677
+
678
+ # The name of the `Constraint` the `Policy` is configuring, for example,
679
+ # `constraints/serviceuser.services`.
680
+ # A [list of available
681
+ # constraints](/resource-manager/docs/organization-policy/org-policy-constraints)
682
+ # is available.
683
+ # Immutable after creation.
684
+ # Corresponds to the JSON property `constraint`
685
+ # @return [String]
686
+ attr_accessor :constraint
687
+
688
+ # An opaque tag indicating the current version of the `Policy`, used for
689
+ # concurrency control.
690
+ # When the `Policy` is returned from either a `GetPolicy` or a
691
+ # `ListOrgPolicy` request, this `etag` indicates the version of the current
692
+ # `Policy` to use when executing a read-modify-write loop.
693
+ # When the `Policy` is returned from a `GetEffectivePolicy` request, the
694
+ # `etag` will be unset.
695
+ # When the `Policy` is used in a `SetOrgPolicy` method, use the `etag` value
696
+ # that was returned from a `GetOrgPolicy` request as part of a
697
+ # read-modify-write loop for concurrency control. Not setting the `etag`in a
698
+ # `SetOrgPolicy` request will result in an unconditional write of the
699
+ # `Policy`.
700
+ # Corresponds to the JSON property `etag`
701
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
702
+ # @return [String]
703
+ attr_accessor :etag
704
+
705
+ # Used in `policy_type` to specify how `list_policy` behaves at this
706
+ # resource.
707
+ # `ListPolicy` can define specific values and subtrees of Cloud Resource
708
+ # Manager resource hierarchy (`Organizations`, `Folders`, `Projects`) that
709
+ # are allowed or denied by setting the `allowed_values` and `denied_values`
710
+ # fields. This is achieved by using the `under:` and optional `is:` prefixes.
711
+ # The `under:` prefix is used to denote resource subtree values.
712
+ # The `is:` prefix is used to denote specific values, and is required only
713
+ # if the value contains a ":". Values prefixed with "is:" are treated the
714
+ # same as values with no prefix.
715
+ # Ancestry subtrees must be in one of the following formats:
716
+ # - "projects/<project-id>", e.g. "projects/tokyo-rain-123"
717
+ # - "folders/<folder-id>", e.g. "folders/1234"
718
+ # - "organizations/<organization-id>", e.g. "organizations/1234"
719
+ # The `supports_under` field of the associated `Constraint` defines whether
720
+ # ancestry prefixes can be used. You can set `allowed_values` and
721
+ # `denied_values` in the same `Policy` if `all_values` is
722
+ # `ALL_VALUES_UNSPECIFIED`. `ALLOW` or `DENY` are used to allow or deny all
723
+ # values. If `all_values` is set to either `ALLOW` or `DENY`,
724
+ # `allowed_values` and `denied_values` must be unset.
725
+ # Corresponds to the JSON property `listPolicy`
726
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleCloudOrgpolicyV1ListPolicy]
727
+ attr_accessor :list_policy
728
+
729
+ # Ignores policies set above this resource and restores the
730
+ # `constraint_default` enforcement behavior of the specific `Constraint` at
731
+ # this resource.
732
+ # Suppose that `constraint_default` is set to `ALLOW` for the
733
+ # `Constraint` `constraints/serviceuser.services`. Suppose that organization
734
+ # foo.com sets a `Policy` at their Organization resource node that restricts
735
+ # the allowed service activations to deny all service activations. They
736
+ # could then set a `Policy` with the `policy_type` `restore_default` on
737
+ # several experimental projects, restoring the `constraint_default`
738
+ # enforcement of the `Constraint` for only those projects, allowing those
739
+ # projects to have all services activated.
740
+ # Corresponds to the JSON property `restoreDefault`
741
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleCloudOrgpolicyV1RestoreDefault]
742
+ attr_accessor :restore_default
743
+
744
+ # The time stamp the `Policy` was previously updated. This is set by the
745
+ # server, not specified by the caller, and represents the last time a call to
746
+ # `SetOrgPolicy` was made for that `Policy`. Any value set by the client will
747
+ # be ignored.
748
+ # Corresponds to the JSON property `updateTime`
749
+ # @return [String]
750
+ attr_accessor :update_time
751
+
752
+ # Version of the `Policy`. Default version is 0;
753
+ # Corresponds to the JSON property `version`
754
+ # @return [Fixnum]
755
+ attr_accessor :version
756
+
757
+ def initialize(**args)
758
+ update!(**args)
759
+ end
760
+
761
+ # Update properties of this object
762
+ def update!(**args)
763
+ @boolean_policy = args[:boolean_policy] if args.key?(:boolean_policy)
764
+ @constraint = args[:constraint] if args.key?(:constraint)
765
+ @etag = args[:etag] if args.key?(:etag)
766
+ @list_policy = args[:list_policy] if args.key?(:list_policy)
767
+ @restore_default = args[:restore_default] if args.key?(:restore_default)
768
+ @update_time = args[:update_time] if args.key?(:update_time)
769
+ @version = args[:version] if args.key?(:version)
770
+ end
771
+ end
772
+
773
+ # Ignores policies set above this resource and restores the
774
+ # `constraint_default` enforcement behavior of the specific `Constraint` at
775
+ # this resource.
776
+ # Suppose that `constraint_default` is set to `ALLOW` for the
777
+ # `Constraint` `constraints/serviceuser.services`. Suppose that organization
778
+ # foo.com sets a `Policy` at their Organization resource node that restricts
779
+ # the allowed service activations to deny all service activations. They
780
+ # could then set a `Policy` with the `policy_type` `restore_default` on
781
+ # several experimental projects, restoring the `constraint_default`
782
+ # enforcement of the `Constraint` for only those projects, allowing those
783
+ # projects to have all services activated.
784
+ class GoogleCloudOrgpolicyV1RestoreDefault
785
+ include Google::Apis::Core::Hashable
786
+
787
+ def initialize(**args)
788
+ update!(**args)
789
+ end
790
+
791
+ # Update properties of this object
792
+ def update!(**args)
793
+ end
794
+ end
795
+
796
+ # An `AccessLevel` is a label that can be applied to requests to Google Cloud
797
+ # services, along with a list of requirements necessary for the label to be
798
+ # applied.
799
+ class GoogleIdentityAccesscontextmanagerV1AccessLevel
800
+ include Google::Apis::Core::Hashable
801
+
802
+ # `BasicLevel` is an `AccessLevel` using a set of recommended features.
803
+ # Corresponds to the JSON property `basic`
804
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1BasicLevel]
805
+ attr_accessor :basic
806
+
807
+ # `CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language
808
+ # to represent the necessary conditions for the level to apply to a request.
809
+ # See CEL spec at: https://github.com/google/cel-spec
810
+ # Corresponds to the JSON property `custom`
811
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1CustomLevel]
812
+ attr_accessor :custom
813
+
814
+ # Description of the `AccessLevel` and its use. Does not affect behavior.
815
+ # Corresponds to the JSON property `description`
816
+ # @return [String]
817
+ attr_accessor :description
818
+
819
+ # Required. Resource name for the Access Level. The `short_name` component
820
+ # must begin with a letter and only include alphanumeric and '_'. Format:
821
+ # `accessPolicies/`policy_id`/accessLevels/`short_name``. The maximum length
822
+ # of the `short_name` component is 50 characters.
823
+ # Corresponds to the JSON property `name`
824
+ # @return [String]
825
+ attr_accessor :name
826
+
827
+ # Human readable title. Must be unique within the Policy.
828
+ # Corresponds to the JSON property `title`
829
+ # @return [String]
830
+ attr_accessor :title
831
+
832
+ def initialize(**args)
833
+ update!(**args)
834
+ end
835
+
836
+ # Update properties of this object
837
+ def update!(**args)
838
+ @basic = args[:basic] if args.key?(:basic)
839
+ @custom = args[:custom] if args.key?(:custom)
840
+ @description = args[:description] if args.key?(:description)
841
+ @name = args[:name] if args.key?(:name)
842
+ @title = args[:title] if args.key?(:title)
843
+ end
844
+ end
845
+
846
+ # `AccessPolicy` is a container for `AccessLevels` (which define the necessary
847
+ # attributes to use Google Cloud services) and `ServicePerimeters` (which
848
+ # define regions of services able to freely pass data within a perimeter). An
849
+ # access policy is globally visible within an organization, and the
850
+ # restrictions it specifies apply to all projects within an organization.
851
+ class GoogleIdentityAccesscontextmanagerV1AccessPolicy
852
+ include Google::Apis::Core::Hashable
853
+
854
+ # Output only. An opaque identifier for the current version of the
855
+ # `AccessPolicy`. This will always be a strongly validated etag, meaning that
856
+ # two Access Polices will be identical if and only if their etags are
857
+ # identical. Clients should not expect this to be in any specific format.
858
+ # Corresponds to the JSON property `etag`
859
+ # @return [String]
860
+ attr_accessor :etag
861
+
862
+ # Output only. Resource name of the `AccessPolicy`. Format:
863
+ # `accessPolicies/`policy_id``
864
+ # Corresponds to the JSON property `name`
865
+ # @return [String]
866
+ attr_accessor :name
867
+
868
+ # Required. The parent of this `AccessPolicy` in the Cloud Resource
869
+ # Hierarchy. Currently immutable once created. Format:
870
+ # `organizations/`organization_id``
871
+ # Corresponds to the JSON property `parent`
872
+ # @return [String]
873
+ attr_accessor :parent
874
+
875
+ # Required. Human readable title. Does not affect behavior.
876
+ # Corresponds to the JSON property `title`
877
+ # @return [String]
878
+ attr_accessor :title
879
+
880
+ def initialize(**args)
881
+ update!(**args)
882
+ end
883
+
884
+ # Update properties of this object
885
+ def update!(**args)
886
+ @etag = args[:etag] if args.key?(:etag)
887
+ @name = args[:name] if args.key?(:name)
888
+ @parent = args[:parent] if args.key?(:parent)
889
+ @title = args[:title] if args.key?(:title)
890
+ end
891
+ end
892
+
893
+ # `BasicLevel` is an `AccessLevel` using a set of recommended features.
894
+ class GoogleIdentityAccesscontextmanagerV1BasicLevel
895
+ include Google::Apis::Core::Hashable
896
+
897
+ # How the `conditions` list should be combined to determine if a request is
898
+ # granted this `AccessLevel`. If AND is used, each `Condition` in
899
+ # `conditions` must be satisfied for the `AccessLevel` to be applied. If OR
900
+ # is used, at least one `Condition` in `conditions` must be satisfied for the
901
+ # `AccessLevel` to be applied. Default behavior is AND.
902
+ # Corresponds to the JSON property `combiningFunction`
903
+ # @return [String]
904
+ attr_accessor :combining_function
905
+
906
+ # Required. A list of requirements for the `AccessLevel` to be granted.
907
+ # Corresponds to the JSON property `conditions`
908
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1Condition>]
909
+ attr_accessor :conditions
910
+
911
+ def initialize(**args)
912
+ update!(**args)
913
+ end
914
+
915
+ # Update properties of this object
916
+ def update!(**args)
917
+ @combining_function = args[:combining_function] if args.key?(:combining_function)
918
+ @conditions = args[:conditions] if args.key?(:conditions)
919
+ end
920
+ end
921
+
922
+ # A condition necessary for an `AccessLevel` to be granted. The Condition is an
923
+ # AND over its fields. So a Condition is true if: 1) the request IP is from one
924
+ # of the listed subnetworks AND 2) the originating device complies with the
925
+ # listed device policy AND 3) all listed access levels are granted AND 4) the
926
+ # request was sent at a time allowed by the DateTimeRestriction.
927
+ class GoogleIdentityAccesscontextmanagerV1Condition
928
+ include Google::Apis::Core::Hashable
929
+
930
+ # `DevicePolicy` specifies device specific restrictions necessary to acquire a
931
+ # given access level. A `DevicePolicy` specifies requirements for requests from
932
+ # devices to be granted access levels, it does not do any enforcement on the
933
+ # device. `DevicePolicy` acts as an AND over all specified fields, and each
934
+ # repeated field is an OR over its elements. Any unset fields are ignored. For
935
+ # example, if the proto is ` os_type : DESKTOP_WINDOWS, os_type :
936
+ # DESKTOP_LINUX, encryption_status: ENCRYPTED`, then the DevicePolicy will be
937
+ # true for requests originating from encrypted Linux desktops and encrypted
938
+ # Windows desktops.
939
+ # Corresponds to the JSON property `devicePolicy`
940
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1DevicePolicy]
941
+ attr_accessor :device_policy
942
+
943
+ # CIDR block IP subnetwork specification. May be IPv4 or IPv6. Note that for
944
+ # a CIDR IP address block, the specified IP address portion must be properly
945
+ # truncated (i.e. all the host bits must be zero) or the input is considered
946
+ # malformed. For example, "192.0.2.0/24" is accepted but "192.0.2.1/24" is
947
+ # not. Similarly, for IPv6, "2001:db8::/32" is accepted whereas
948
+ # "2001:db8::1/32" is not. The originating IP of a request must be in one of
949
+ # the listed subnets in order for this Condition to be true. If empty, all IP
950
+ # addresses are allowed.
951
+ # Corresponds to the JSON property `ipSubnetworks`
952
+ # @return [Array<String>]
953
+ attr_accessor :ip_subnetworks
954
+
955
+ # The request must be made by one of the provided user or service
956
+ # accounts. Groups are not supported.
957
+ # Syntax:
958
+ # `user:`emailid``
959
+ # `serviceAccount:`emailid``
960
+ # If not specified, a request may come from any user.
961
+ # Corresponds to the JSON property `members`
962
+ # @return [Array<String>]
963
+ attr_accessor :members
964
+
965
+ # Whether to negate the Condition. If true, the Condition becomes a NAND over
966
+ # its non-empty fields, each field must be false for the Condition overall to
967
+ # be satisfied. Defaults to false.
968
+ # Corresponds to the JSON property `negate`
969
+ # @return [Boolean]
970
+ attr_accessor :negate
971
+ alias_method :negate?, :negate
972
+
973
+ # The request must originate from one of the provided countries/regions.
974
+ # Must be valid ISO 3166-1 alpha-2 codes.
975
+ # Corresponds to the JSON property `regions`
976
+ # @return [Array<String>]
977
+ attr_accessor :regions
978
+
979
+ # A list of other access levels defined in the same `Policy`, referenced by
980
+ # resource name. Referencing an `AccessLevel` which does not exist is an
981
+ # error. All access levels listed must be granted for the Condition
982
+ # to be true. Example:
983
+ # "`accessPolicies/MY_POLICY/accessLevels/LEVEL_NAME"`
984
+ # Corresponds to the JSON property `requiredAccessLevels`
985
+ # @return [Array<String>]
986
+ attr_accessor :required_access_levels
987
+
988
+ def initialize(**args)
989
+ update!(**args)
990
+ end
991
+
992
+ # Update properties of this object
993
+ def update!(**args)
994
+ @device_policy = args[:device_policy] if args.key?(:device_policy)
995
+ @ip_subnetworks = args[:ip_subnetworks] if args.key?(:ip_subnetworks)
996
+ @members = args[:members] if args.key?(:members)
997
+ @negate = args[:negate] if args.key?(:negate)
998
+ @regions = args[:regions] if args.key?(:regions)
999
+ @required_access_levels = args[:required_access_levels] if args.key?(:required_access_levels)
1000
+ end
1001
+ end
1002
+
1003
+ # `CustomLevel` is an `AccessLevel` using the Cloud Common Expression Language
1004
+ # to represent the necessary conditions for the level to apply to a request.
1005
+ # See CEL spec at: https://github.com/google/cel-spec
1006
+ class GoogleIdentityAccesscontextmanagerV1CustomLevel
1007
+ include Google::Apis::Core::Hashable
1008
+
1009
+ # Represents a textual expression in the Common Expression Language (CEL)
1010
+ # syntax. CEL is a C-like expression language. The syntax and semantics of CEL
1011
+ # are documented at https://github.com/google/cel-spec.
1012
+ # Example (Comparison):
1013
+ # title: "Summary size limit"
1014
+ # description: "Determines if a summary is less than 100 chars"
1015
+ # expression: "document.summary.size() < 100"
1016
+ # Example (Equality):
1017
+ # title: "Requestor is owner"
1018
+ # description: "Determines if requestor is the document owner"
1019
+ # expression: "document.owner == request.auth.claims.email"
1020
+ # Example (Logic):
1021
+ # title: "Public documents"
1022
+ # description: "Determine whether the document should be publicly visible"
1023
+ # expression: "document.type != 'private' && document.type != 'internal'"
1024
+ # Example (Data Manipulation):
1025
+ # title: "Notification string"
1026
+ # description: "Create a notification string with a timestamp."
1027
+ # expression: "'New message received at ' + string(document.create_time)"
1028
+ # The exact variables and functions that may be referenced within an expression
1029
+ # are determined by the service that evaluates it. See the service
1030
+ # documentation for additional information.
1031
+ # Corresponds to the JSON property `expr`
1032
+ # @return [Google::Apis::CloudassetV1p5beta1::Expr]
1033
+ attr_accessor :expr
1034
+
1035
+ def initialize(**args)
1036
+ update!(**args)
1037
+ end
1038
+
1039
+ # Update properties of this object
1040
+ def update!(**args)
1041
+ @expr = args[:expr] if args.key?(:expr)
1042
+ end
1043
+ end
1044
+
1045
+ # `DevicePolicy` specifies device specific restrictions necessary to acquire a
1046
+ # given access level. A `DevicePolicy` specifies requirements for requests from
1047
+ # devices to be granted access levels, it does not do any enforcement on the
1048
+ # device. `DevicePolicy` acts as an AND over all specified fields, and each
1049
+ # repeated field is an OR over its elements. Any unset fields are ignored. For
1050
+ # example, if the proto is ` os_type : DESKTOP_WINDOWS, os_type :
1051
+ # DESKTOP_LINUX, encryption_status: ENCRYPTED`, then the DevicePolicy will be
1052
+ # true for requests originating from encrypted Linux desktops and encrypted
1053
+ # Windows desktops.
1054
+ class GoogleIdentityAccesscontextmanagerV1DevicePolicy
1055
+ include Google::Apis::Core::Hashable
1056
+
1057
+ # Allowed device management levels, an empty list allows all management
1058
+ # levels.
1059
+ # Corresponds to the JSON property `allowedDeviceManagementLevels`
1060
+ # @return [Array<String>]
1061
+ attr_accessor :allowed_device_management_levels
1062
+
1063
+ # Allowed encryptions statuses, an empty list allows all statuses.
1064
+ # Corresponds to the JSON property `allowedEncryptionStatuses`
1065
+ # @return [Array<String>]
1066
+ attr_accessor :allowed_encryption_statuses
1067
+
1068
+ # Allowed OS versions, an empty list allows all types and all versions.
1069
+ # Corresponds to the JSON property `osConstraints`
1070
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1OsConstraint>]
1071
+ attr_accessor :os_constraints
1072
+
1073
+ # Whether the device needs to be approved by the customer admin.
1074
+ # Corresponds to the JSON property `requireAdminApproval`
1075
+ # @return [Boolean]
1076
+ attr_accessor :require_admin_approval
1077
+ alias_method :require_admin_approval?, :require_admin_approval
1078
+
1079
+ # Whether the device needs to be corp owned.
1080
+ # Corresponds to the JSON property `requireCorpOwned`
1081
+ # @return [Boolean]
1082
+ attr_accessor :require_corp_owned
1083
+ alias_method :require_corp_owned?, :require_corp_owned
1084
+
1085
+ # Whether or not screenlock is required for the DevicePolicy to be true.
1086
+ # Defaults to `false`.
1087
+ # Corresponds to the JSON property `requireScreenlock`
1088
+ # @return [Boolean]
1089
+ attr_accessor :require_screenlock
1090
+ alias_method :require_screenlock?, :require_screenlock
1091
+
1092
+ def initialize(**args)
1093
+ update!(**args)
1094
+ end
1095
+
1096
+ # Update properties of this object
1097
+ def update!(**args)
1098
+ @allowed_device_management_levels = args[:allowed_device_management_levels] if args.key?(:allowed_device_management_levels)
1099
+ @allowed_encryption_statuses = args[:allowed_encryption_statuses] if args.key?(:allowed_encryption_statuses)
1100
+ @os_constraints = args[:os_constraints] if args.key?(:os_constraints)
1101
+ @require_admin_approval = args[:require_admin_approval] if args.key?(:require_admin_approval)
1102
+ @require_corp_owned = args[:require_corp_owned] if args.key?(:require_corp_owned)
1103
+ @require_screenlock = args[:require_screenlock] if args.key?(:require_screenlock)
1104
+ end
1105
+ end
1106
+
1107
+ # A restriction on the OS type and version of devices making requests.
1108
+ class GoogleIdentityAccesscontextmanagerV1OsConstraint
1109
+ include Google::Apis::Core::Hashable
1110
+
1111
+ # The minimum allowed OS version. If not set, any version of this OS
1112
+ # satisfies the constraint. Format: `"major.minor.patch"`.
1113
+ # Examples: `"10.5.301"`, `"9.2.1"`.
1114
+ # Corresponds to the JSON property `minimumVersion`
1115
+ # @return [String]
1116
+ attr_accessor :minimum_version
1117
+
1118
+ # Required. The allowed OS type.
1119
+ # Corresponds to the JSON property `osType`
1120
+ # @return [String]
1121
+ attr_accessor :os_type
1122
+
1123
+ # Only allows requests from devices with a verified Chrome OS.
1124
+ # Verifications includes requirements that the device is enterprise-managed,
1125
+ # conformant to domain policies, and the caller has permission to call
1126
+ # the API targeted by the request.
1127
+ # Corresponds to the JSON property `requireVerifiedChromeOs`
1128
+ # @return [Boolean]
1129
+ attr_accessor :require_verified_chrome_os
1130
+ alias_method :require_verified_chrome_os?, :require_verified_chrome_os
1131
+
1132
+ def initialize(**args)
1133
+ update!(**args)
1134
+ end
1135
+
1136
+ # Update properties of this object
1137
+ def update!(**args)
1138
+ @minimum_version = args[:minimum_version] if args.key?(:minimum_version)
1139
+ @os_type = args[:os_type] if args.key?(:os_type)
1140
+ @require_verified_chrome_os = args[:require_verified_chrome_os] if args.key?(:require_verified_chrome_os)
1141
+ end
1142
+ end
1143
+
1144
+ # `ServicePerimeter` describes a set of Google Cloud resources which can freely
1145
+ # import and export data amongst themselves, but not export outside of the
1146
+ # `ServicePerimeter`. If a request with a source within this `ServicePerimeter`
1147
+ # has a target outside of the `ServicePerimeter`, the request will be blocked.
1148
+ # Otherwise the request is allowed. There are two types of Service Perimeter -
1149
+ # Regular and Bridge. Regular Service Perimeters cannot overlap, a single
1150
+ # Google Cloud project can only belong to a single regular Service Perimeter.
1151
+ # Service Perimeter Bridges can contain only Google Cloud projects as members,
1152
+ # a single Google Cloud project may belong to multiple Service Perimeter
1153
+ # Bridges.
1154
+ class GoogleIdentityAccesscontextmanagerV1ServicePerimeter
1155
+ include Google::Apis::Core::Hashable
1156
+
1157
+ # Description of the `ServicePerimeter` and its use. Does not affect
1158
+ # behavior.
1159
+ # Corresponds to the JSON property `description`
1160
+ # @return [String]
1161
+ attr_accessor :description
1162
+
1163
+ # Required. Resource name for the ServicePerimeter. The `short_name`
1164
+ # component must begin with a letter and only include alphanumeric and '_'.
1165
+ # Format: `accessPolicies/`policy_id`/servicePerimeters/`short_name``
1166
+ # Corresponds to the JSON property `name`
1167
+ # @return [String]
1168
+ attr_accessor :name
1169
+
1170
+ # Perimeter type indicator. A single project is
1171
+ # allowed to be a member of single regular perimeter, but multiple service
1172
+ # perimeter bridges. A project cannot be a included in a perimeter bridge
1173
+ # without being included in regular perimeter. For perimeter bridges,
1174
+ # the restricted service list as well as access level lists must be
1175
+ # empty.
1176
+ # Corresponds to the JSON property `perimeterType`
1177
+ # @return [String]
1178
+ attr_accessor :perimeter_type
1179
+
1180
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1181
+ # describe specific Service Perimeter configuration.
1182
+ # Corresponds to the JSON property `spec`
1183
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig]
1184
+ attr_accessor :spec
1185
+
1186
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1187
+ # describe specific Service Perimeter configuration.
1188
+ # Corresponds to the JSON property `status`
1189
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig]
1190
+ attr_accessor :status
1191
+
1192
+ # Human readable title. Must be unique within the Policy.
1193
+ # Corresponds to the JSON property `title`
1194
+ # @return [String]
1195
+ attr_accessor :title
1196
+
1197
+ # Use explicit dry run spec flag. Ordinarily, a dry-run spec implicitly
1198
+ # exists for all Service Perimeters, and that spec is identical to the
1199
+ # status for those Service Perimeters. When this flag is set, it inhibits the
1200
+ # generation of the implicit spec, thereby allowing the user to explicitly
1201
+ # provide a configuration ("spec") to use in a dry-run version of the Service
1202
+ # Perimeter. This allows the user to test changes to the enforced config
1203
+ # ("status") without actually enforcing them. This testing is done through
1204
+ # analyzing the differences between currently enforced and suggested
1205
+ # restrictions. use_explicit_dry_run_spec must bet set to True if any of the
1206
+ # fields in the spec are set to non-default values.
1207
+ # Corresponds to the JSON property `useExplicitDryRunSpec`
1208
+ # @return [Boolean]
1209
+ attr_accessor :use_explicit_dry_run_spec
1210
+ alias_method :use_explicit_dry_run_spec?, :use_explicit_dry_run_spec
1211
+
1212
+ def initialize(**args)
1213
+ update!(**args)
1214
+ end
1215
+
1216
+ # Update properties of this object
1217
+ def update!(**args)
1218
+ @description = args[:description] if args.key?(:description)
1219
+ @name = args[:name] if args.key?(:name)
1220
+ @perimeter_type = args[:perimeter_type] if args.key?(:perimeter_type)
1221
+ @spec = args[:spec] if args.key?(:spec)
1222
+ @status = args[:status] if args.key?(:status)
1223
+ @title = args[:title] if args.key?(:title)
1224
+ @use_explicit_dry_run_spec = args[:use_explicit_dry_run_spec] if args.key?(:use_explicit_dry_run_spec)
1225
+ end
1226
+ end
1227
+
1228
+ # `ServicePerimeterConfig` specifies a set of Google Cloud resources that
1229
+ # describe specific Service Perimeter configuration.
1230
+ class GoogleIdentityAccesscontextmanagerV1ServicePerimeterConfig
1231
+ include Google::Apis::Core::Hashable
1232
+
1233
+ # A list of `AccessLevel` resource names that allow resources within the
1234
+ # `ServicePerimeter` to be accessed from the internet. `AccessLevels` listed
1235
+ # must be in the same policy as this `ServicePerimeter`. Referencing a
1236
+ # nonexistent `AccessLevel` is a syntax error. If no `AccessLevel` names are
1237
+ # listed, resources within the perimeter can only be accessed via Google
1238
+ # Cloud calls with request origins within the perimeter. Example:
1239
+ # `"accessPolicies/MY_POLICY/accessLevels/MY_LEVEL"`.
1240
+ # For Service Perimeter Bridge, must be empty.
1241
+ # Corresponds to the JSON property `accessLevels`
1242
+ # @return [Array<String>]
1243
+ attr_accessor :access_levels
1244
+
1245
+ # A list of Google Cloud resources that are inside of the service perimeter.
1246
+ # Currently only projects are allowed. Format: `projects/`project_number``
1247
+ # Corresponds to the JSON property `resources`
1248
+ # @return [Array<String>]
1249
+ attr_accessor :resources
1250
+
1251
+ # Google Cloud services that are subject to the Service Perimeter
1252
+ # restrictions. For example, if `storage.googleapis.com` is specified, access
1253
+ # to the storage buckets inside the perimeter must meet the perimeter's
1254
+ # access restrictions.
1255
+ # Corresponds to the JSON property `restrictedServices`
1256
+ # @return [Array<String>]
1257
+ attr_accessor :restricted_services
1258
+
1259
+ # Specifies how APIs are allowed to communicate within the Service
1260
+ # Perimeter.
1261
+ # Corresponds to the JSON property `vpcAccessibleServices`
1262
+ # @return [Google::Apis::CloudassetV1p5beta1::GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices]
1263
+ attr_accessor :vpc_accessible_services
1264
+
1265
+ def initialize(**args)
1266
+ update!(**args)
1267
+ end
1268
+
1269
+ # Update properties of this object
1270
+ def update!(**args)
1271
+ @access_levels = args[:access_levels] if args.key?(:access_levels)
1272
+ @resources = args[:resources] if args.key?(:resources)
1273
+ @restricted_services = args[:restricted_services] if args.key?(:restricted_services)
1274
+ @vpc_accessible_services = args[:vpc_accessible_services] if args.key?(:vpc_accessible_services)
1275
+ end
1276
+ end
1277
+
1278
+ # Specifies how APIs are allowed to communicate within the Service
1279
+ # Perimeter.
1280
+ class GoogleIdentityAccesscontextmanagerV1VpcAccessibleServices
1281
+ include Google::Apis::Core::Hashable
1282
+
1283
+ # The list of APIs usable within the Service Perimeter. Must be empty
1284
+ # unless 'enable_restriction' is True.
1285
+ # Corresponds to the JSON property `allowedServices`
1286
+ # @return [Array<String>]
1287
+ attr_accessor :allowed_services
1288
+
1289
+ # Whether to restrict API calls within the Service Perimeter to the list of
1290
+ # APIs specified in 'allowed_services'.
1291
+ # Corresponds to the JSON property `enableRestriction`
1292
+ # @return [Boolean]
1293
+ attr_accessor :enable_restriction
1294
+ alias_method :enable_restriction?, :enable_restriction
1295
+
1296
+ def initialize(**args)
1297
+ update!(**args)
1298
+ end
1299
+
1300
+ # Update properties of this object
1301
+ def update!(**args)
1302
+ @allowed_services = args[:allowed_services] if args.key?(:allowed_services)
1303
+ @enable_restriction = args[:enable_restriction] if args.key?(:enable_restriction)
1304
+ end
1305
+ end
1306
+
1307
+ # ListAssets response.
1308
+ class ListAssetsResponse
1309
+ include Google::Apis::Core::Hashable
1310
+
1311
+ # Assets.
1312
+ # Corresponds to the JSON property `assets`
1313
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::Asset>]
1314
+ attr_accessor :assets
1315
+
1316
+ # Token to retrieve the next page of results. Set to empty if there are no
1317
+ # remaining results.
1318
+ # Corresponds to the JSON property `nextPageToken`
1319
+ # @return [String]
1320
+ attr_accessor :next_page_token
1321
+
1322
+ # Time the snapshot was taken.
1323
+ # Corresponds to the JSON property `readTime`
1324
+ # @return [String]
1325
+ attr_accessor :read_time
1326
+
1327
+ def initialize(**args)
1328
+ update!(**args)
1329
+ end
1330
+
1331
+ # Update properties of this object
1332
+ def update!(**args)
1333
+ @assets = args[:assets] if args.key?(:assets)
1334
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1335
+ @read_time = args[:read_time] if args.key?(:read_time)
1336
+ end
1337
+ end
1338
+
1339
+ # An Identity and Access Management (IAM) policy, which specifies access
1340
+ # controls for Google Cloud resources.
1341
+ # A `Policy` is a collection of `bindings`. A `binding` binds one or more
1342
+ # `members` to a single `role`. Members can be user accounts, service accounts,
1343
+ # Google groups, and domains (such as G Suite). A `role` is a named list of
1344
+ # permissions; each `role` can be an IAM predefined role or a user-created
1345
+ # custom role.
1346
+ # For some types of Google Cloud resources, a `binding` can also specify a
1347
+ # `condition`, which is a logical expression that allows access to a resource
1348
+ # only if the expression evaluates to `true`. A condition can add constraints
1349
+ # based on attributes of the request, the resource, or both. To learn which
1350
+ # resources support conditions in their IAM policies, see the
1351
+ # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-
1352
+ # policies).
1353
+ # **JSON example:**
1354
+ # `
1355
+ # "bindings": [
1356
+ # `
1357
+ # "role": "roles/resourcemanager.organizationAdmin",
1358
+ # "members": [
1359
+ # "user:mike@example.com",
1360
+ # "group:admins@example.com",
1361
+ # "domain:google.com",
1362
+ # "serviceAccount:my-project-id@appspot.gserviceaccount.com"
1363
+ # ]
1364
+ # `,
1365
+ # `
1366
+ # "role": "roles/resourcemanager.organizationViewer",
1367
+ # "members": [
1368
+ # "user:eve@example.com"
1369
+ # ],
1370
+ # "condition": `
1371
+ # "title": "expirable access",
1372
+ # "description": "Does not grant access after Sep 2020",
1373
+ # "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')
1374
+ # ",
1375
+ # `
1376
+ # `
1377
+ # ],
1378
+ # "etag": "BwWWja0YfJA=",
1379
+ # "version": 3
1380
+ # `
1381
+ # **YAML example:**
1382
+ # bindings:
1383
+ # - members:
1384
+ # - user:mike@example.com
1385
+ # - group:admins@example.com
1386
+ # - domain:google.com
1387
+ # - serviceAccount:my-project-id@appspot.gserviceaccount.com
1388
+ # role: roles/resourcemanager.organizationAdmin
1389
+ # - members:
1390
+ # - user:eve@example.com
1391
+ # role: roles/resourcemanager.organizationViewer
1392
+ # condition:
1393
+ # title: expirable access
1394
+ # description: Does not grant access after Sep 2020
1395
+ # expression: request.time < timestamp('2020-10-01T00:00:00.000Z')
1396
+ # - etag: BwWWja0YfJA=
1397
+ # - version: 3
1398
+ # For a description of IAM and its features, see the
1399
+ # [IAM documentation](https://cloud.google.com/iam/docs/).
1400
+ class Policy
1401
+ include Google::Apis::Core::Hashable
1402
+
1403
+ # Specifies cloud audit logging configuration for this policy.
1404
+ # Corresponds to the JSON property `auditConfigs`
1405
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::AuditConfig>]
1406
+ attr_accessor :audit_configs
1407
+
1408
+ # Associates a list of `members` to a `role`. Optionally, may specify a
1409
+ # `condition` that determines how and when the `bindings` are applied. Each
1410
+ # of the `bindings` must contain at least one member.
1411
+ # Corresponds to the JSON property `bindings`
1412
+ # @return [Array<Google::Apis::CloudassetV1p5beta1::Binding>]
1413
+ attr_accessor :bindings
1414
+
1415
+ # `etag` is used for optimistic concurrency control as a way to help
1416
+ # prevent simultaneous updates of a policy from overwriting each other.
1417
+ # It is strongly suggested that systems make use of the `etag` in the
1418
+ # read-modify-write cycle to perform policy updates in order to avoid race
1419
+ # conditions: An `etag` is returned in the response to `getIamPolicy`, and
1420
+ # systems are expected to put that etag in the request to `setIamPolicy` to
1421
+ # ensure that their change will be applied to the same version of the policy.
1422
+ # **Important:** If you use IAM Conditions, you must include the `etag` field
1423
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
1424
+ # you to overwrite a version `3` policy with a version `1` policy, and all of
1425
+ # the conditions in the version `3` policy are lost.
1426
+ # Corresponds to the JSON property `etag`
1427
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1428
+ # @return [String]
1429
+ attr_accessor :etag
1430
+
1431
+ # Specifies the format of the policy.
1432
+ # Valid values are `0`, `1`, and `3`. Requests that specify an invalid value
1433
+ # are rejected.
1434
+ # Any operation that affects conditional role bindings must specify version
1435
+ # `3`. This requirement applies to the following operations:
1436
+ # * Getting a policy that includes a conditional role binding
1437
+ # * Adding a conditional role binding to a policy
1438
+ # * Changing a conditional role binding in a policy
1439
+ # * Removing any role binding, with or without a condition, from a policy
1440
+ # that includes conditions
1441
+ # **Important:** If you use IAM Conditions, you must include the `etag` field
1442
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows
1443
+ # you to overwrite a version `3` policy with a version `1` policy, and all of
1444
+ # the conditions in the version `3` policy are lost.
1445
+ # If a policy does not include any conditions, operations on that policy may
1446
+ # specify any valid version or leave the field unset.
1447
+ # To learn which resources support conditions in their IAM policies, see the
1448
+ # [IAM documentation](https://cloud.google.com/iam/help/conditions/resource-
1449
+ # policies).
1450
+ # Corresponds to the JSON property `version`
1451
+ # @return [Fixnum]
1452
+ attr_accessor :version
1453
+
1454
+ def initialize(**args)
1455
+ update!(**args)
1456
+ end
1457
+
1458
+ # Update properties of this object
1459
+ def update!(**args)
1460
+ @audit_configs = args[:audit_configs] if args.key?(:audit_configs)
1461
+ @bindings = args[:bindings] if args.key?(:bindings)
1462
+ @etag = args[:etag] if args.key?(:etag)
1463
+ @version = args[:version] if args.key?(:version)
1464
+ end
1465
+ end
1466
+
1467
+ # A representation of a Google Cloud resource.
1468
+ class Resource
1469
+ include Google::Apis::Core::Hashable
1470
+
1471
+ # The content of the resource, in which some sensitive fields are removed
1472
+ # and may not be present.
1473
+ # Corresponds to the JSON property `data`
1474
+ # @return [Hash<String,Object>]
1475
+ attr_accessor :data
1476
+
1477
+ # The URL of the discovery document containing the resource's JSON schema.
1478
+ # Example:
1479
+ # `https://www.googleapis.com/discovery/v1/apis/compute/v1/rest`
1480
+ # This value is unspecified for resources that do not have an API based on a
1481
+ # discovery document, such as Cloud Bigtable.
1482
+ # Corresponds to the JSON property `discoveryDocumentUri`
1483
+ # @return [String]
1484
+ attr_accessor :discovery_document_uri
1485
+
1486
+ # The JSON schema name listed in the discovery document. Example:
1487
+ # `Project`
1488
+ # This value is unspecified for resources that do not have an API based on a
1489
+ # discovery document, such as Cloud Bigtable.
1490
+ # Corresponds to the JSON property `discoveryName`
1491
+ # @return [String]
1492
+ attr_accessor :discovery_name
1493
+
1494
+ # The full name of the immediate parent of this resource. See
1495
+ # [Resource
1496
+ # Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
1497
+ # for more information.
1498
+ # For Google Cloud assets, this value is the parent resource defined in the
1499
+ # [Cloud IAM policy
1500
+ # hierarchy](https://cloud.google.com/iam/docs/overview#policy_hierarchy).
1501
+ # Example:
1502
+ # `//cloudresourcemanager.googleapis.com/projects/my_project_123`
1503
+ # For third-party assets, this field may be set differently.
1504
+ # Corresponds to the JSON property `parent`
1505
+ # @return [String]
1506
+ attr_accessor :parent
1507
+
1508
+ # The REST URL for accessing the resource. An HTTP `GET` request using this
1509
+ # URL returns the resource itself. Example:
1510
+ # `https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123`
1511
+ # This value is unspecified for resources without a REST API.
1512
+ # Corresponds to the JSON property `resourceUrl`
1513
+ # @return [String]
1514
+ attr_accessor :resource_url
1515
+
1516
+ # The API version. Example: "v1".
1517
+ # Corresponds to the JSON property `version`
1518
+ # @return [String]
1519
+ attr_accessor :version
1520
+
1521
+ def initialize(**args)
1522
+ update!(**args)
1523
+ end
1524
+
1525
+ # Update properties of this object
1526
+ def update!(**args)
1527
+ @data = args[:data] if args.key?(:data)
1528
+ @discovery_document_uri = args[:discovery_document_uri] if args.key?(:discovery_document_uri)
1529
+ @discovery_name = args[:discovery_name] if args.key?(:discovery_name)
1530
+ @parent = args[:parent] if args.key?(:parent)
1531
+ @resource_url = args[:resource_url] if args.key?(:resource_url)
1532
+ @version = args[:version] if args.key?(:version)
1533
+ end
1534
+ end
1535
+ end
1536
+ end
1537
+ end