google-apis-storage_v1 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2b4448a4cf3e21c7781e68f9ff348927ddf318e3ee8ed740f074315ac5180532
4
+ data.tar.gz: cd4c1f8a4dadcc27fbb471a37b5cb17ad06ebed48404eb95e78ea6726d85d825
5
+ SHA512:
6
+ metadata.gz: 897139e74f6e9f5b0a5f2691ac858b854d3c9220e9643f032a901d1f8cc8022067b6958789745660800bbad07bc11f5a1bc75476e85e966484674b4f80e1c8d8
7
+ data.tar.gz: b508e3cfe0ec0dbbf0a879e86c6468c220b1f8f96f0e4b2eb92db47f5c87036aa5c0a8e31f4301d43956960de9320e08cb5bc6ef3f9a8ad95b65c53b9a68a9e5
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-storage_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/storage_v1/*.rb
9
+ lib/google/apis/storage_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-storage_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201112
7
+
@@ -0,0 +1,202 @@
1
+
2
+ Apache License
3
+ Version 2.0, January 2004
4
+ http://www.apache.org/licenses/
5
+
6
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
7
+
8
+ 1. Definitions.
9
+
10
+ "License" shall mean the terms and conditions for use, reproduction,
11
+ and distribution as defined by Sections 1 through 9 of this document.
12
+
13
+ "Licensor" shall mean the copyright owner or entity authorized by
14
+ the copyright owner that is granting the License.
15
+
16
+ "Legal Entity" shall mean the union of the acting entity and all
17
+ other entities that control, are controlled by, or are under common
18
+ control with that entity. For the purposes of this definition,
19
+ "control" means (i) the power, direct or indirect, to cause the
20
+ direction or management of such entity, whether by contract or
21
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
22
+ outstanding shares, or (iii) beneficial ownership of such entity.
23
+
24
+ "You" (or "Your") shall mean an individual or Legal Entity
25
+ exercising permissions granted by this License.
26
+
27
+ "Source" form shall mean the preferred form for making modifications,
28
+ including but not limited to software source code, documentation
29
+ source, and configuration files.
30
+
31
+ "Object" form shall mean any form resulting from mechanical
32
+ transformation or translation of a Source form, including but
33
+ not limited to compiled object code, generated documentation,
34
+ and conversions to other media types.
35
+
36
+ "Work" shall mean the work of authorship, whether in Source or
37
+ Object form, made available under the License, as indicated by a
38
+ copyright notice that is included in or attached to the work
39
+ (an example is provided in the Appendix below).
40
+
41
+ "Derivative Works" shall mean any work, whether in Source or Object
42
+ form, that is based on (or derived from) the Work and for which the
43
+ editorial revisions, annotations, elaborations, or other modifications
44
+ represent, as a whole, an original work of authorship. For the purposes
45
+ of this License, Derivative Works shall not include works that remain
46
+ separable from, or merely link (or bind by name) to the interfaces of,
47
+ the Work and Derivative Works thereof.
48
+
49
+ "Contribution" shall mean any work of authorship, including
50
+ the original version of the Work and any modifications or additions
51
+ to that Work or Derivative Works thereof, that is intentionally
52
+ submitted to Licensor for inclusion in the Work by the copyright owner
53
+ or by an individual or Legal Entity authorized to submit on behalf of
54
+ the copyright owner. For the purposes of this definition, "submitted"
55
+ means any form of electronic, verbal, or written communication sent
56
+ to the Licensor or its representatives, including but not limited to
57
+ communication on electronic mailing lists, source code control systems,
58
+ and issue tracking systems that are managed by, or on behalf of, the
59
+ Licensor for the purpose of discussing and improving the Work, but
60
+ excluding communication that is conspicuously marked or otherwise
61
+ designated in writing by the copyright owner as "Not a Contribution."
62
+
63
+ "Contributor" shall mean Licensor and any individual or Legal Entity
64
+ on behalf of whom a Contribution has been received by Licensor and
65
+ subsequently incorporated within the Work.
66
+
67
+ 2. Grant of Copyright License. Subject to the terms and conditions of
68
+ this License, each Contributor hereby grants to You a perpetual,
69
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
70
+ copyright license to reproduce, prepare Derivative Works of,
71
+ publicly display, publicly perform, sublicense, and distribute the
72
+ Work and such Derivative Works in Source or Object form.
73
+
74
+ 3. Grant of Patent License. Subject to the terms and conditions of
75
+ this License, each Contributor hereby grants to You a perpetual,
76
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
77
+ (except as stated in this section) patent license to make, have made,
78
+ use, offer to sell, sell, import, and otherwise transfer the Work,
79
+ where such license applies only to those patent claims licensable
80
+ by such Contributor that are necessarily infringed by their
81
+ Contribution(s) alone or by combination of their Contribution(s)
82
+ with the Work to which such Contribution(s) was submitted. If You
83
+ institute patent litigation against any entity (including a
84
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
85
+ or a Contribution incorporated within the Work constitutes direct
86
+ or contributory patent infringement, then any patent licenses
87
+ granted to You under this License for that Work shall terminate
88
+ as of the date such litigation is filed.
89
+
90
+ 4. Redistribution. You may reproduce and distribute copies of the
91
+ Work or Derivative Works thereof in any medium, with or without
92
+ modifications, and in Source or Object form, provided that You
93
+ meet the following conditions:
94
+
95
+ (a) You must give any other recipients of the Work or
96
+ Derivative Works a copy of this License; and
97
+
98
+ (b) You must cause any modified files to carry prominent notices
99
+ stating that You changed the files; and
100
+
101
+ (c) You must retain, in the Source form of any Derivative Works
102
+ that You distribute, all copyright, patent, trademark, and
103
+ attribution notices from the Source form of the Work,
104
+ excluding those notices that do not pertain to any part of
105
+ the Derivative Works; and
106
+
107
+ (d) If the Work includes a "NOTICE" text file as part of its
108
+ distribution, then any Derivative Works that You distribute must
109
+ include a readable copy of the attribution notices contained
110
+ within such NOTICE file, excluding those notices that do not
111
+ pertain to any part of the Derivative Works, in at least one
112
+ of the following places: within a NOTICE text file distributed
113
+ as part of the Derivative Works; within the Source form or
114
+ documentation, if provided along with the Derivative Works; or,
115
+ within a display generated by the Derivative Works, if and
116
+ wherever such third-party notices normally appear. The contents
117
+ of the NOTICE file are for informational purposes only and
118
+ do not modify the License. You may add Your own attribution
119
+ notices within Derivative Works that You distribute, alongside
120
+ or as an addendum to the NOTICE text from the Work, provided
121
+ that such additional attribution notices cannot be construed
122
+ as modifying the License.
123
+
124
+ You may add Your own copyright statement to Your modifications and
125
+ may provide additional or different license terms and conditions
126
+ for use, reproduction, or distribution of Your modifications, or
127
+ for any such Derivative Works as a whole, provided Your use,
128
+ reproduction, and distribution of the Work otherwise complies with
129
+ the conditions stated in this License.
130
+
131
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
132
+ any Contribution intentionally submitted for inclusion in the Work
133
+ by You to the Licensor shall be under the terms and conditions of
134
+ this License, without any additional terms or conditions.
135
+ Notwithstanding the above, nothing herein shall supersede or modify
136
+ the terms of any separate license agreement you may have executed
137
+ with Licensor regarding such Contributions.
138
+
139
+ 6. Trademarks. This License does not grant permission to use the trade
140
+ names, trademarks, service marks, or product names of the Licensor,
141
+ except as required for reasonable and customary use in describing the
142
+ origin of the Work and reproducing the content of the NOTICE file.
143
+
144
+ 7. Disclaimer of Warranty. Unless required by applicable law or
145
+ agreed to in writing, Licensor provides the Work (and each
146
+ Contributor provides its Contributions) on an "AS IS" BASIS,
147
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
148
+ implied, including, without limitation, any warranties or conditions
149
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
150
+ PARTICULAR PURPOSE. You are solely responsible for determining the
151
+ appropriateness of using or redistributing the Work and assume any
152
+ risks associated with Your exercise of permissions under this License.
153
+
154
+ 8. Limitation of Liability. In no event and under no legal theory,
155
+ whether in tort (including negligence), contract, or otherwise,
156
+ unless required by applicable law (such as deliberate and grossly
157
+ negligent acts) or agreed to in writing, shall any Contributor be
158
+ liable to You for damages, including any direct, indirect, special,
159
+ incidental, or consequential damages of any character arising as a
160
+ result of this License or out of the use or inability to use the
161
+ Work (including but not limited to damages for loss of goodwill,
162
+ work stoppage, computer failure or malfunction, or any and all
163
+ other commercial damages or losses), even if such Contributor
164
+ has been advised of the possibility of such damages.
165
+
166
+ 9. Accepting Warranty or Additional Liability. While redistributing
167
+ the Work or Derivative Works thereof, You may choose to offer,
168
+ and charge a fee for, acceptance of support, warranty, indemnity,
169
+ or other liability obligations and/or rights consistent with this
170
+ License. However, in accepting such obligations, You may act only
171
+ on Your own behalf and on Your sole responsibility, not on behalf
172
+ of any other Contributor, and only if You agree to indemnify,
173
+ defend, and hold each Contributor harmless for any liability
174
+ incurred by, or claims asserted against, such Contributor by reason
175
+ of your accepting any such warranty or additional liability.
176
+
177
+ END OF TERMS AND CONDITIONS
178
+
179
+ APPENDIX: How to apply the Apache License to your work.
180
+
181
+ To apply the Apache License to your work, attach the following
182
+ boilerplate notice, with the fields enclosed by brackets "[]"
183
+ replaced with your own identifying information. (Don't include
184
+ the brackets!) The text should be enclosed in the appropriate
185
+ comment syntax for the file format. We also recommend that a
186
+ file or class name and description of purpose be included on the
187
+ same "printed page" as the copyright notice for easier
188
+ identification within third-party archives.
189
+
190
+ Copyright [yyyy] [name of copyright owner]
191
+
192
+ Licensed under the Apache License, Version 2.0 (the "License");
193
+ you may not use this file except in compliance with the License.
194
+ You may obtain a copy of the License at
195
+
196
+ http://www.apache.org/licenses/LICENSE-2.0
197
+
198
+ Unless required by applicable law or agreed to in writing, software
199
+ distributed under the License is distributed on an "AS IS" BASIS,
200
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
201
+ See the License for the specific language governing permissions and
202
+ limitations under the License.
@@ -0,0 +1,96 @@
1
+ # Simple REST client for version V1 of the Cloud Storage JSON API
2
+
3
+ This is a simple client library for version V1 of the Cloud Storage JSON API. It provides:
4
+
5
+ * A client object that connects to the HTTP/JSON REST endpoint for the service.
6
+ * Ruby objects for data structures related to the service.
7
+ * Integration with the googleauth gem for authentication using OAuth, API keys, and service accounts.
8
+ * Control of retry, pagination, and timeouts.
9
+
10
+ Note that although this client library is supported and will continue to be updated to track changes to the service, it is otherwise considered complete and not under active development. Many Google services, especially Google Cloud Platform services, may provide a more modern client that is under more active development and improvement. See the section below titled *Which client should I use?* for more information.
11
+
12
+ ## Getting started
13
+
14
+ ### Before you begin
15
+
16
+ There are a few setup steps you need to complete before you can use this library:
17
+
18
+ 1. If you don't already have a Google account, [sign up](https://www.google.com/accounts).
19
+ 2. If you have never created a Google APIs Console project, read about [Managing Projects](https://cloud.google.com/resource-manager/docs/creating-managing-projects) and create a project in the [Google API Console](https://console.cloud.google.com/).
20
+ 3. Most APIs need to be enabled for your project. [Enable it](https://console.cloud.google.com/apis/library/storage.googleapis.com) in the console.
21
+
22
+ ### Installation
23
+
24
+ Add this line to your application's Gemfile:
25
+
26
+ ```ruby
27
+ gem 'google-apis-storage_v1', '~> 0.1'
28
+ ```
29
+
30
+ And then execute:
31
+
32
+ ```
33
+ $ bundle
34
+ ```
35
+
36
+ Or install it yourself as:
37
+
38
+ ```
39
+ $ gem install google-apis-storage_v1
40
+ ```
41
+
42
+ ### Creating a client object
43
+
44
+ Once the gem is installed, you can load the client code and instantiate a client.
45
+
46
+ ```ruby
47
+ # Load the client
48
+ require "google/apis/storage_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::StorageV1::StorageService.new
52
+
53
+ # Authenticate calls
54
+ client.authentication = # ... use the googleauth gem to create credentials
55
+ ```
56
+
57
+ See the class reference docs for information on the methods you can call from a client.
58
+
59
+ ## Documentation
60
+
61
+ More detailed descriptions of the Google simple REST clients are available in two documents.
62
+
63
+ * The [Usage Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/usage-guide.md) discusses how to make API calls, how to use the provided data structures, and how to work the various features of the client library, including media upload and download, error handling, retries, pagination, and logging.
64
+ * The [Auth Guide](https://github.com/googleapis/google-api-ruby-client/blob/master/docs/auth-guide.md) discusses authentication in the client libraries, including API keys, OAuth 2.0, service accounts, and environment variables.
65
+
66
+ (Note: the above documents are written for the simple REST clients in general, and their examples may not reflect the Storage service in particular.)
67
+
68
+ For reference information on specific calls in the Cloud Storage JSON API, see the {Google::Apis::StorageV1::StorageService class reference docs}.
69
+
70
+ ## Which client should I use?
71
+
72
+ Google provides two types of Ruby API client libraries: **simple REST clients** and **modern clients**.
73
+
74
+ This library, `google-apis-storage_v1`, is a simple REST client. You can identify these clients by their gem names, which are always in the form `google-apis-<servicename>_<serviceversion>`. The simple REST clients connect to HTTP/JSON REST endpoints and are automatically generated from service discovery documents. They support most API functionality, but their class interfaces are sometimes awkward.
75
+
76
+ Modern clients are produced by a modern code generator, sometimes combined with hand-crafted functionality. Most modern clients connect to high-performance gRPC endpoints, although a few are backed by REST services. Modern clients are available for many Google services, especially Google Cloud Platform services, but do not yet support all the services covered by the simple clients.
77
+
78
+ Gem names for modern clients are often of the form `google-cloud-<service_name>`. (For example, [google-cloud-pubsub](https://rubygems.org/gems/google-cloud-pubsub).) Note that most modern clients also have corresponding "versioned" gems with names like `google-cloud-<service_name>-<version>`. (For example, [google-cloud-pubsub-v1](https://rubygems.org/gems/google-cloud-pubsub-v1).) The "versioned" gems can be used directly, but often provide lower-level interfaces. In most cases, the main gem is recommended.
79
+
80
+ **For most users, we recommend the modern client, if one is available.** Compared with simple clients, modern clients are generally much easier to use and more Ruby-like, support more advanced features such as streaming and long-running operations, and often provide much better performance. You may consider using a simple client instead, if a modern client is not yet available for the service you want to use, or if you are not able to use gRPC on your infrastructure.
81
+
82
+ The [product documentation](https://developers.google.com/storage/docs/json_api/) may provide guidance regarding the preferred client library to use.
83
+
84
+ ## Supported Ruby versions
85
+
86
+ This library is supported on Ruby 2.5+.
87
+
88
+ Google provides official support for Ruby versions that are actively supported by Ruby Core -- that is, Ruby versions that are either in normal maintenance or in security maintenance, and not end of life. Currently, this means Ruby 2.5 and later. Older versions of Ruby _may_ still work, but are unsupported and not recommended. See https://www.ruby-lang.org/en/downloads/branches/ for details about the Ruby support schedule.
89
+
90
+ ## License
91
+
92
+ This library is licensed under Apache 2.0. Full license text is available in the {file:LICENSE.md LICENSE}.
93
+
94
+ ## Support
95
+
96
+ Please [report bugs at the project on Github](https://github.com/google/google-api-ruby-client/issues). Don't hesitate to [ask questions](http://stackoverflow.com/questions/tagged/google-api-ruby-client) about the client or APIs on [StackOverflow](http://stackoverflow.com).
@@ -0,0 +1,15 @@
1
+ # Copyright 2020 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
+
15
+ require "google/apis/storage_v1"
@@ -0,0 +1,48 @@
1
+ # Copyright 2020 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
+
15
+ require 'google/apis/storage_v1/service.rb'
16
+ require 'google/apis/storage_v1/classes.rb'
17
+ require 'google/apis/storage_v1/representations.rb'
18
+ require 'google/apis/storage_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Cloud Storage JSON API
23
+ #
24
+ # Stores and retrieves potentially large, immutable data objects.
25
+ #
26
+ # @see https://developers.google.com/storage/docs/json_api/
27
+ module StorageV1
28
+ # Version of the Cloud Storage JSON API this client connects to.
29
+ # This is NOT the gem version.
30
+ VERSION = 'V1'
31
+
32
+ # View and manage your data across Google Cloud Platform services
33
+ AUTH_CLOUD_PLATFORM = 'https://www.googleapis.com/auth/cloud-platform'
34
+
35
+ # View your data across Google Cloud Platform services
36
+ AUTH_CLOUD_PLATFORM_READ_ONLY = 'https://www.googleapis.com/auth/cloud-platform.read-only'
37
+
38
+ # Manage your data and permissions in Google Cloud Storage
39
+ AUTH_DEVSTORAGE_FULL_CONTROL = 'https://www.googleapis.com/auth/devstorage.full_control'
40
+
41
+ # View your data in Google Cloud Storage
42
+ AUTH_DEVSTORAGE_READ_ONLY = 'https://www.googleapis.com/auth/devstorage.read_only'
43
+
44
+ # Manage your data in Google Cloud Storage
45
+ AUTH_DEVSTORAGE_READ_WRITE = 'https://www.googleapis.com/auth/devstorage.read_write'
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,2079 @@
1
+ # Copyright 2020 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
+
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 StorageV1
24
+
25
+ # A bucket.
26
+ class Bucket
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Access controls on the bucket.
30
+ # Corresponds to the JSON property `acl`
31
+ # @return [Array<Google::Apis::StorageV1::BucketAccessControl>]
32
+ attr_accessor :acl
33
+
34
+ # The bucket's billing configuration.
35
+ # Corresponds to the JSON property `billing`
36
+ # @return [Google::Apis::StorageV1::Bucket::Billing]
37
+ attr_accessor :billing
38
+
39
+ # The bucket's Cross-Origin Resource Sharing (CORS) configuration.
40
+ # Corresponds to the JSON property `cors`
41
+ # @return [Array<Google::Apis::StorageV1::Bucket::CorsConfiguration>]
42
+ attr_accessor :cors_configurations
43
+
44
+ # The default value for event-based hold on newly created objects in this bucket.
45
+ # Event-based hold is a way to retain objects indefinitely until an event
46
+ # occurs, signified by the hold's release. After being released, such objects
47
+ # will be subject to bucket-level retention (if any). One sample use case of
48
+ # this flag is for banks to hold loan documents for at least 3 years after loan
49
+ # is paid in full. Here, bucket-level retention is 3 years and the event is loan
50
+ # being paid in full. In this example, these objects will be held intact for any
51
+ # number of years until the event has occurred (event-based hold on the object
52
+ # is released) and then 3 more years after that. That means retention duration
53
+ # of the objects begins from the moment event-based hold transitioned from true
54
+ # to false. Objects under event-based hold cannot be deleted, overwritten or
55
+ # archived until the hold is removed.
56
+ # Corresponds to the JSON property `defaultEventBasedHold`
57
+ # @return [Boolean]
58
+ attr_accessor :default_event_based_hold
59
+ alias_method :default_event_based_hold?, :default_event_based_hold
60
+
61
+ # Default access controls to apply to new objects when no ACL is provided.
62
+ # Corresponds to the JSON property `defaultObjectAcl`
63
+ # @return [Array<Google::Apis::StorageV1::ObjectAccessControl>]
64
+ attr_accessor :default_object_acl
65
+
66
+ # Encryption configuration for a bucket.
67
+ # Corresponds to the JSON property `encryption`
68
+ # @return [Google::Apis::StorageV1::Bucket::Encryption]
69
+ attr_accessor :encryption
70
+
71
+ # HTTP 1.1 Entity tag for the bucket.
72
+ # Corresponds to the JSON property `etag`
73
+ # @return [String]
74
+ attr_accessor :etag
75
+
76
+ # The bucket's IAM configuration.
77
+ # Corresponds to the JSON property `iamConfiguration`
78
+ # @return [Google::Apis::StorageV1::Bucket::IamConfiguration]
79
+ attr_accessor :iam_configuration
80
+
81
+ # The ID of the bucket. For buckets, the id and name properties are the same.
82
+ # Corresponds to the JSON property `id`
83
+ # @return [String]
84
+ attr_accessor :id
85
+
86
+ # The kind of item this is. For buckets, this is always storage#bucket.
87
+ # Corresponds to the JSON property `kind`
88
+ # @return [String]
89
+ attr_accessor :kind
90
+
91
+ # User-provided labels, in key/value pairs.
92
+ # Corresponds to the JSON property `labels`
93
+ # @return [Hash<String,String>]
94
+ attr_accessor :labels
95
+
96
+ # The bucket's lifecycle configuration. See lifecycle management for more
97
+ # information.
98
+ # Corresponds to the JSON property `lifecycle`
99
+ # @return [Google::Apis::StorageV1::Bucket::Lifecycle]
100
+ attr_accessor :lifecycle
101
+
102
+ # The location of the bucket. Object data for objects in the bucket resides in
103
+ # physical storage within this region. Defaults to US. See the developer's guide
104
+ # for the authoritative list.
105
+ # Corresponds to the JSON property `location`
106
+ # @return [String]
107
+ attr_accessor :location
108
+
109
+ # The type of the bucket location.
110
+ # Corresponds to the JSON property `locationType`
111
+ # @return [String]
112
+ attr_accessor :location_type
113
+
114
+ # The bucket's logging configuration, which defines the destination bucket and
115
+ # optional name prefix for the current bucket's logs.
116
+ # Corresponds to the JSON property `logging`
117
+ # @return [Google::Apis::StorageV1::Bucket::Logging]
118
+ attr_accessor :logging
119
+
120
+ # The metadata generation of this bucket.
121
+ # Corresponds to the JSON property `metageneration`
122
+ # @return [Fixnum]
123
+ attr_accessor :metageneration
124
+
125
+ # The name of the bucket.
126
+ # Corresponds to the JSON property `name`
127
+ # @return [String]
128
+ attr_accessor :name
129
+
130
+ # The owner of the bucket. This is always the project team's owner group.
131
+ # Corresponds to the JSON property `owner`
132
+ # @return [Google::Apis::StorageV1::Bucket::Owner]
133
+ attr_accessor :owner
134
+
135
+ # The project number of the project the bucket belongs to.
136
+ # Corresponds to the JSON property `projectNumber`
137
+ # @return [Fixnum]
138
+ attr_accessor :project_number
139
+
140
+ # The bucket's retention policy. The retention policy enforces a minimum
141
+ # retention time for all objects contained in the bucket, based on their
142
+ # creation time. Any attempt to overwrite or delete objects younger than the
143
+ # retention period will result in a PERMISSION_DENIED error. An unlocked
144
+ # retention policy can be modified or removed from the bucket via a storage.
145
+ # buckets.update operation. A locked retention policy cannot be removed or
146
+ # shortened in duration for the lifetime of the bucket. Attempting to remove or
147
+ # decrease period of a locked retention policy will result in a
148
+ # PERMISSION_DENIED error.
149
+ # Corresponds to the JSON property `retentionPolicy`
150
+ # @return [Google::Apis::StorageV1::Bucket::RetentionPolicy]
151
+ attr_accessor :retention_policy
152
+
153
+ # The URI of this bucket.
154
+ # Corresponds to the JSON property `selfLink`
155
+ # @return [String]
156
+ attr_accessor :self_link
157
+
158
+ # The bucket's default storage class, used whenever no storageClass is specified
159
+ # for a newly-created object. This defines how objects in the bucket are stored
160
+ # and determines the SLA and the cost of storage. Values include MULTI_REGIONAL,
161
+ # REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and
162
+ # DURABLE_REDUCED_AVAILABILITY. If this value is not specified when the bucket
163
+ # is created, it will default to STANDARD. For more information, see storage
164
+ # classes.
165
+ # Corresponds to the JSON property `storageClass`
166
+ # @return [String]
167
+ attr_accessor :storage_class
168
+
169
+ # The creation time of the bucket in RFC 3339 format.
170
+ # Corresponds to the JSON property `timeCreated`
171
+ # @return [DateTime]
172
+ attr_accessor :time_created
173
+
174
+ # The modification time of the bucket in RFC 3339 format.
175
+ # Corresponds to the JSON property `updated`
176
+ # @return [DateTime]
177
+ attr_accessor :updated
178
+
179
+ # The bucket's versioning configuration.
180
+ # Corresponds to the JSON property `versioning`
181
+ # @return [Google::Apis::StorageV1::Bucket::Versioning]
182
+ attr_accessor :versioning
183
+
184
+ # The bucket's website configuration, controlling how the service behaves when
185
+ # accessing bucket contents as a web site. See the Static Website Examples for
186
+ # more information.
187
+ # Corresponds to the JSON property `website`
188
+ # @return [Google::Apis::StorageV1::Bucket::Website]
189
+ attr_accessor :website
190
+
191
+ # The zone or zones from which the bucket is intended to use zonal quota.
192
+ # Requests for data from outside the specified affinities are still allowed but
193
+ # won't be able to use zonal quota. The zone or zones need to be within the
194
+ # bucket location otherwise the requests will fail with a 400 Bad Request
195
+ # response.
196
+ # Corresponds to the JSON property `zoneAffinity`
197
+ # @return [Array<String>]
198
+ attr_accessor :zone_affinity
199
+
200
+ def initialize(**args)
201
+ update!(**args)
202
+ end
203
+
204
+ # Update properties of this object
205
+ def update!(**args)
206
+ @acl = args[:acl] if args.key?(:acl)
207
+ @billing = args[:billing] if args.key?(:billing)
208
+ @cors_configurations = args[:cors_configurations] if args.key?(:cors_configurations)
209
+ @default_event_based_hold = args[:default_event_based_hold] if args.key?(:default_event_based_hold)
210
+ @default_object_acl = args[:default_object_acl] if args.key?(:default_object_acl)
211
+ @encryption = args[:encryption] if args.key?(:encryption)
212
+ @etag = args[:etag] if args.key?(:etag)
213
+ @iam_configuration = args[:iam_configuration] if args.key?(:iam_configuration)
214
+ @id = args[:id] if args.key?(:id)
215
+ @kind = args[:kind] if args.key?(:kind)
216
+ @labels = args[:labels] if args.key?(:labels)
217
+ @lifecycle = args[:lifecycle] if args.key?(:lifecycle)
218
+ @location = args[:location] if args.key?(:location)
219
+ @location_type = args[:location_type] if args.key?(:location_type)
220
+ @logging = args[:logging] if args.key?(:logging)
221
+ @metageneration = args[:metageneration] if args.key?(:metageneration)
222
+ @name = args[:name] if args.key?(:name)
223
+ @owner = args[:owner] if args.key?(:owner)
224
+ @project_number = args[:project_number] if args.key?(:project_number)
225
+ @retention_policy = args[:retention_policy] if args.key?(:retention_policy)
226
+ @self_link = args[:self_link] if args.key?(:self_link)
227
+ @storage_class = args[:storage_class] if args.key?(:storage_class)
228
+ @time_created = args[:time_created] if args.key?(:time_created)
229
+ @updated = args[:updated] if args.key?(:updated)
230
+ @versioning = args[:versioning] if args.key?(:versioning)
231
+ @website = args[:website] if args.key?(:website)
232
+ @zone_affinity = args[:zone_affinity] if args.key?(:zone_affinity)
233
+ end
234
+
235
+ # The bucket's billing configuration.
236
+ class Billing
237
+ include Google::Apis::Core::Hashable
238
+
239
+ # When set to true, Requester Pays is enabled for this bucket.
240
+ # Corresponds to the JSON property `requesterPays`
241
+ # @return [Boolean]
242
+ attr_accessor :requester_pays
243
+ alias_method :requester_pays?, :requester_pays
244
+
245
+ def initialize(**args)
246
+ update!(**args)
247
+ end
248
+
249
+ # Update properties of this object
250
+ def update!(**args)
251
+ @requester_pays = args[:requester_pays] if args.key?(:requester_pays)
252
+ end
253
+ end
254
+
255
+ #
256
+ class CorsConfiguration
257
+ include Google::Apis::Core::Hashable
258
+
259
+ # The value, in seconds, to return in the Access-Control-Max-Age header used in
260
+ # preflight responses.
261
+ # Corresponds to the JSON property `maxAgeSeconds`
262
+ # @return [Fixnum]
263
+ attr_accessor :max_age_seconds
264
+
265
+ # The list of HTTP methods on which to include CORS response headers, (GET,
266
+ # OPTIONS, POST, etc) Note: "*" is permitted in the list of methods, and means "
267
+ # any method".
268
+ # Corresponds to the JSON property `method`
269
+ # @return [Array<String>]
270
+ attr_accessor :http_method
271
+
272
+ # The list of Origins eligible to receive CORS response headers. Note: "*" is
273
+ # permitted in the list of origins, and means "any Origin".
274
+ # Corresponds to the JSON property `origin`
275
+ # @return [Array<String>]
276
+ attr_accessor :origin
277
+
278
+ # The list of HTTP headers other than the simple response headers to give
279
+ # permission for the user-agent to share across domains.
280
+ # Corresponds to the JSON property `responseHeader`
281
+ # @return [Array<String>]
282
+ attr_accessor :response_header
283
+
284
+ def initialize(**args)
285
+ update!(**args)
286
+ end
287
+
288
+ # Update properties of this object
289
+ def update!(**args)
290
+ @max_age_seconds = args[:max_age_seconds] if args.key?(:max_age_seconds)
291
+ @http_method = args[:http_method] if args.key?(:http_method)
292
+ @origin = args[:origin] if args.key?(:origin)
293
+ @response_header = args[:response_header] if args.key?(:response_header)
294
+ end
295
+ end
296
+
297
+ # Encryption configuration for a bucket.
298
+ class Encryption
299
+ include Google::Apis::Core::Hashable
300
+
301
+ # A Cloud KMS key that will be used to encrypt objects inserted into this bucket,
302
+ # if no encryption method is specified.
303
+ # Corresponds to the JSON property `defaultKmsKeyName`
304
+ # @return [String]
305
+ attr_accessor :default_kms_key_name
306
+
307
+ def initialize(**args)
308
+ update!(**args)
309
+ end
310
+
311
+ # Update properties of this object
312
+ def update!(**args)
313
+ @default_kms_key_name = args[:default_kms_key_name] if args.key?(:default_kms_key_name)
314
+ end
315
+ end
316
+
317
+ # The bucket's IAM configuration.
318
+ class IamConfiguration
319
+ include Google::Apis::Core::Hashable
320
+
321
+ # The bucket's uniform bucket-level access configuration. The feature was
322
+ # formerly known as Bucket Policy Only. For backward compatibility, this field
323
+ # will be populated with identical information as the uniformBucketLevelAccess
324
+ # field. We recommend using the uniformBucketLevelAccess field to enable and
325
+ # disable the feature.
326
+ # Corresponds to the JSON property `bucketPolicyOnly`
327
+ # @return [Google::Apis::StorageV1::Bucket::IamConfiguration::BucketPolicyOnly]
328
+ attr_accessor :bucket_policy_only
329
+
330
+ # The bucket's Public Access Prevention configuration. Currently, 'unspecified'
331
+ # and 'enforced' are supported.
332
+ # Corresponds to the JSON property `publicAccessPrevention`
333
+ # @return [String]
334
+ attr_accessor :public_access_prevention
335
+
336
+ # The bucket's uniform bucket-level access configuration.
337
+ # Corresponds to the JSON property `uniformBucketLevelAccess`
338
+ # @return [Google::Apis::StorageV1::Bucket::IamConfiguration::UniformBucketLevelAccess]
339
+ attr_accessor :uniform_bucket_level_access
340
+
341
+ def initialize(**args)
342
+ update!(**args)
343
+ end
344
+
345
+ # Update properties of this object
346
+ def update!(**args)
347
+ @bucket_policy_only = args[:bucket_policy_only] if args.key?(:bucket_policy_only)
348
+ @public_access_prevention = args[:public_access_prevention] if args.key?(:public_access_prevention)
349
+ @uniform_bucket_level_access = args[:uniform_bucket_level_access] if args.key?(:uniform_bucket_level_access)
350
+ end
351
+
352
+ # The bucket's uniform bucket-level access configuration. The feature was
353
+ # formerly known as Bucket Policy Only. For backward compatibility, this field
354
+ # will be populated with identical information as the uniformBucketLevelAccess
355
+ # field. We recommend using the uniformBucketLevelAccess field to enable and
356
+ # disable the feature.
357
+ class BucketPolicyOnly
358
+ include Google::Apis::Core::Hashable
359
+
360
+ # If set, access is controlled only by bucket-level or above IAM policies.
361
+ # Corresponds to the JSON property `enabled`
362
+ # @return [Boolean]
363
+ attr_accessor :enabled
364
+ alias_method :enabled?, :enabled
365
+
366
+ # The deadline for changing iamConfiguration.bucketPolicyOnly.enabled from true
367
+ # to false in RFC 3339 format. iamConfiguration.bucketPolicyOnly.enabled may be
368
+ # changed from true to false until the locked time, after which the field is
369
+ # immutable.
370
+ # Corresponds to the JSON property `lockedTime`
371
+ # @return [DateTime]
372
+ attr_accessor :locked_time
373
+
374
+ def initialize(**args)
375
+ update!(**args)
376
+ end
377
+
378
+ # Update properties of this object
379
+ def update!(**args)
380
+ @enabled = args[:enabled] if args.key?(:enabled)
381
+ @locked_time = args[:locked_time] if args.key?(:locked_time)
382
+ end
383
+ end
384
+
385
+ # The bucket's uniform bucket-level access configuration.
386
+ class UniformBucketLevelAccess
387
+ include Google::Apis::Core::Hashable
388
+
389
+ # If set, access is controlled only by bucket-level or above IAM policies.
390
+ # Corresponds to the JSON property `enabled`
391
+ # @return [Boolean]
392
+ attr_accessor :enabled
393
+ alias_method :enabled?, :enabled
394
+
395
+ # The deadline for changing iamConfiguration.uniformBucketLevelAccess.enabled
396
+ # from true to false in RFC 3339 format. iamConfiguration.
397
+ # uniformBucketLevelAccess.enabled may be changed from true to false until the
398
+ # locked time, after which the field is immutable.
399
+ # Corresponds to the JSON property `lockedTime`
400
+ # @return [DateTime]
401
+ attr_accessor :locked_time
402
+
403
+ def initialize(**args)
404
+ update!(**args)
405
+ end
406
+
407
+ # Update properties of this object
408
+ def update!(**args)
409
+ @enabled = args[:enabled] if args.key?(:enabled)
410
+ @locked_time = args[:locked_time] if args.key?(:locked_time)
411
+ end
412
+ end
413
+ end
414
+
415
+ # The bucket's lifecycle configuration. See lifecycle management for more
416
+ # information.
417
+ class Lifecycle
418
+ include Google::Apis::Core::Hashable
419
+
420
+ # A lifecycle management rule, which is made of an action to take and the
421
+ # condition(s) under which the action will be taken.
422
+ # Corresponds to the JSON property `rule`
423
+ # @return [Array<Google::Apis::StorageV1::Bucket::Lifecycle::Rule>]
424
+ attr_accessor :rule
425
+
426
+ def initialize(**args)
427
+ update!(**args)
428
+ end
429
+
430
+ # Update properties of this object
431
+ def update!(**args)
432
+ @rule = args[:rule] if args.key?(:rule)
433
+ end
434
+
435
+ #
436
+ class Rule
437
+ include Google::Apis::Core::Hashable
438
+
439
+ # The action to take.
440
+ # Corresponds to the JSON property `action`
441
+ # @return [Google::Apis::StorageV1::Bucket::Lifecycle::Rule::Action]
442
+ attr_accessor :action
443
+
444
+ # The condition(s) under which the action will be taken.
445
+ # Corresponds to the JSON property `condition`
446
+ # @return [Google::Apis::StorageV1::Bucket::Lifecycle::Rule::Condition]
447
+ attr_accessor :condition
448
+
449
+ def initialize(**args)
450
+ update!(**args)
451
+ end
452
+
453
+ # Update properties of this object
454
+ def update!(**args)
455
+ @action = args[:action] if args.key?(:action)
456
+ @condition = args[:condition] if args.key?(:condition)
457
+ end
458
+
459
+ # The action to take.
460
+ class Action
461
+ include Google::Apis::Core::Hashable
462
+
463
+ # Target storage class. Required iff the type of the action is SetStorageClass.
464
+ # Corresponds to the JSON property `storageClass`
465
+ # @return [String]
466
+ attr_accessor :storage_class
467
+
468
+ # Type of the action. Currently, only Delete and SetStorageClass are supported.
469
+ # Corresponds to the JSON property `type`
470
+ # @return [String]
471
+ attr_accessor :type
472
+
473
+ def initialize(**args)
474
+ update!(**args)
475
+ end
476
+
477
+ # Update properties of this object
478
+ def update!(**args)
479
+ @storage_class = args[:storage_class] if args.key?(:storage_class)
480
+ @type = args[:type] if args.key?(:type)
481
+ end
482
+ end
483
+
484
+ # The condition(s) under which the action will be taken.
485
+ class Condition
486
+ include Google::Apis::Core::Hashable
487
+
488
+ # Age of an object (in days). This condition is satisfied when an object reaches
489
+ # the specified age.
490
+ # Corresponds to the JSON property `age`
491
+ # @return [Fixnum]
492
+ attr_accessor :age
493
+
494
+ # A date in RFC 3339 format with only the date part (for instance, "2013-01-15").
495
+ # This condition is satisfied when an object is created before midnight of the
496
+ # specified date in UTC.
497
+ # Corresponds to the JSON property `createdBefore`
498
+ # @return [Date]
499
+ attr_accessor :created_before
500
+
501
+ # A date in RFC 3339 format with only the date part (for instance, "2013-01-15").
502
+ # This condition is satisfied when the custom time on an object is before this
503
+ # date in UTC.
504
+ # Corresponds to the JSON property `customTimeBefore`
505
+ # @return [Date]
506
+ attr_accessor :custom_time_before
507
+
508
+ # Number of days elapsed since the user-specified timestamp set on an object.
509
+ # The condition is satisfied if the days elapsed is at least this number. If no
510
+ # custom timestamp is specified on an object, the condition does not apply.
511
+ # Corresponds to the JSON property `daysSinceCustomTime`
512
+ # @return [Fixnum]
513
+ attr_accessor :days_since_custom_time
514
+
515
+ # Number of days elapsed since the noncurrent timestamp of an object. The
516
+ # condition is satisfied if the days elapsed is at least this number. This
517
+ # condition is relevant only for versioned objects. The value of the field must
518
+ # be a nonnegative integer. If it's zero, the object version will become
519
+ # eligible for Lifecycle action as soon as it becomes noncurrent.
520
+ # Corresponds to the JSON property `daysSinceNoncurrentTime`
521
+ # @return [Fixnum]
522
+ attr_accessor :days_since_noncurrent_time
523
+
524
+ # Relevant only for versioned objects. If the value is true, this condition
525
+ # matches live objects; if the value is false, it matches archived objects.
526
+ # Corresponds to the JSON property `isLive`
527
+ # @return [Boolean]
528
+ attr_accessor :is_live
529
+ alias_method :is_live?, :is_live
530
+
531
+ # A regular expression that satisfies the RE2 syntax. This condition is
532
+ # satisfied when the name of the object matches the RE2 pattern. Note: This
533
+ # feature is currently in the "Early Access" launch stage and is only available
534
+ # to a whitelisted set of users; that means that this feature may be changed in
535
+ # backward-incompatible ways and that it is not guaranteed to be released.
536
+ # Corresponds to the JSON property `matchesPattern`
537
+ # @return [String]
538
+ attr_accessor :matches_pattern
539
+
540
+ # Objects having any of the storage classes specified by this condition will be
541
+ # matched. Values include MULTI_REGIONAL, REGIONAL, NEARLINE, COLDLINE, ARCHIVE,
542
+ # STANDARD, and DURABLE_REDUCED_AVAILABILITY.
543
+ # Corresponds to the JSON property `matchesStorageClass`
544
+ # @return [Array<String>]
545
+ attr_accessor :matches_storage_class
546
+
547
+ # A date in RFC 3339 format with only the date part (for instance, "2013-01-15").
548
+ # This condition is satisfied when the noncurrent time on an object is before
549
+ # this date in UTC. This condition is relevant only for versioned objects.
550
+ # Corresponds to the JSON property `noncurrentTimeBefore`
551
+ # @return [Date]
552
+ attr_accessor :noncurrent_time_before
553
+
554
+ # Relevant only for versioned objects. If the value is N, this condition is
555
+ # satisfied when there are at least N versions (including the live version)
556
+ # newer than this version of the object.
557
+ # Corresponds to the JSON property `numNewerVersions`
558
+ # @return [Fixnum]
559
+ attr_accessor :num_newer_versions
560
+
561
+ def initialize(**args)
562
+ update!(**args)
563
+ end
564
+
565
+ # Update properties of this object
566
+ def update!(**args)
567
+ @age = args[:age] if args.key?(:age)
568
+ @created_before = args[:created_before] if args.key?(:created_before)
569
+ @custom_time_before = args[:custom_time_before] if args.key?(:custom_time_before)
570
+ @days_since_custom_time = args[:days_since_custom_time] if args.key?(:days_since_custom_time)
571
+ @days_since_noncurrent_time = args[:days_since_noncurrent_time] if args.key?(:days_since_noncurrent_time)
572
+ @is_live = args[:is_live] if args.key?(:is_live)
573
+ @matches_pattern = args[:matches_pattern] if args.key?(:matches_pattern)
574
+ @matches_storage_class = args[:matches_storage_class] if args.key?(:matches_storage_class)
575
+ @noncurrent_time_before = args[:noncurrent_time_before] if args.key?(:noncurrent_time_before)
576
+ @num_newer_versions = args[:num_newer_versions] if args.key?(:num_newer_versions)
577
+ end
578
+ end
579
+ end
580
+ end
581
+
582
+ # The bucket's logging configuration, which defines the destination bucket and
583
+ # optional name prefix for the current bucket's logs.
584
+ class Logging
585
+ include Google::Apis::Core::Hashable
586
+
587
+ # The destination bucket where the current bucket's logs should be placed.
588
+ # Corresponds to the JSON property `logBucket`
589
+ # @return [String]
590
+ attr_accessor :log_bucket
591
+
592
+ # A prefix for log object names.
593
+ # Corresponds to the JSON property `logObjectPrefix`
594
+ # @return [String]
595
+ attr_accessor :log_object_prefix
596
+
597
+ def initialize(**args)
598
+ update!(**args)
599
+ end
600
+
601
+ # Update properties of this object
602
+ def update!(**args)
603
+ @log_bucket = args[:log_bucket] if args.key?(:log_bucket)
604
+ @log_object_prefix = args[:log_object_prefix] if args.key?(:log_object_prefix)
605
+ end
606
+ end
607
+
608
+ # The owner of the bucket. This is always the project team's owner group.
609
+ class Owner
610
+ include Google::Apis::Core::Hashable
611
+
612
+ # The entity, in the form project-owner-projectId.
613
+ # Corresponds to the JSON property `entity`
614
+ # @return [String]
615
+ attr_accessor :entity
616
+
617
+ # The ID for the entity.
618
+ # Corresponds to the JSON property `entityId`
619
+ # @return [String]
620
+ attr_accessor :entity_id
621
+
622
+ def initialize(**args)
623
+ update!(**args)
624
+ end
625
+
626
+ # Update properties of this object
627
+ def update!(**args)
628
+ @entity = args[:entity] if args.key?(:entity)
629
+ @entity_id = args[:entity_id] if args.key?(:entity_id)
630
+ end
631
+ end
632
+
633
+ # The bucket's retention policy. The retention policy enforces a minimum
634
+ # retention time for all objects contained in the bucket, based on their
635
+ # creation time. Any attempt to overwrite or delete objects younger than the
636
+ # retention period will result in a PERMISSION_DENIED error. An unlocked
637
+ # retention policy can be modified or removed from the bucket via a storage.
638
+ # buckets.update operation. A locked retention policy cannot be removed or
639
+ # shortened in duration for the lifetime of the bucket. Attempting to remove or
640
+ # decrease period of a locked retention policy will result in a
641
+ # PERMISSION_DENIED error.
642
+ class RetentionPolicy
643
+ include Google::Apis::Core::Hashable
644
+
645
+ # Server-determined value that indicates the time from which policy was enforced
646
+ # and effective. This value is in RFC 3339 format.
647
+ # Corresponds to the JSON property `effectiveTime`
648
+ # @return [DateTime]
649
+ attr_accessor :effective_time
650
+
651
+ # Once locked, an object retention policy cannot be modified.
652
+ # Corresponds to the JSON property `isLocked`
653
+ # @return [Boolean]
654
+ attr_accessor :is_locked
655
+ alias_method :is_locked?, :is_locked
656
+
657
+ # The duration in seconds that objects need to be retained. Retention duration
658
+ # must be greater than zero and less than 100 years. Note that enforcement of
659
+ # retention periods less than a day is not guaranteed. Such periods should only
660
+ # be used for testing purposes.
661
+ # Corresponds to the JSON property `retentionPeriod`
662
+ # @return [Fixnum]
663
+ attr_accessor :retention_period
664
+
665
+ def initialize(**args)
666
+ update!(**args)
667
+ end
668
+
669
+ # Update properties of this object
670
+ def update!(**args)
671
+ @effective_time = args[:effective_time] if args.key?(:effective_time)
672
+ @is_locked = args[:is_locked] if args.key?(:is_locked)
673
+ @retention_period = args[:retention_period] if args.key?(:retention_period)
674
+ end
675
+ end
676
+
677
+ # The bucket's versioning configuration.
678
+ class Versioning
679
+ include Google::Apis::Core::Hashable
680
+
681
+ # While set to true, versioning is fully enabled for this bucket.
682
+ # Corresponds to the JSON property `enabled`
683
+ # @return [Boolean]
684
+ attr_accessor :enabled
685
+ alias_method :enabled?, :enabled
686
+
687
+ def initialize(**args)
688
+ update!(**args)
689
+ end
690
+
691
+ # Update properties of this object
692
+ def update!(**args)
693
+ @enabled = args[:enabled] if args.key?(:enabled)
694
+ end
695
+ end
696
+
697
+ # The bucket's website configuration, controlling how the service behaves when
698
+ # accessing bucket contents as a web site. See the Static Website Examples for
699
+ # more information.
700
+ class Website
701
+ include Google::Apis::Core::Hashable
702
+
703
+ # If the requested object path is missing, the service will ensure the path has
704
+ # a trailing '/', append this suffix, and attempt to retrieve the resulting
705
+ # object. This allows the creation of index.html objects to represent directory
706
+ # pages.
707
+ # Corresponds to the JSON property `mainPageSuffix`
708
+ # @return [String]
709
+ attr_accessor :main_page_suffix
710
+
711
+ # If the requested object path is missing, and any mainPageSuffix object is
712
+ # missing, if applicable, the service will return the named object from this
713
+ # bucket as the content for a 404 Not Found result.
714
+ # Corresponds to the JSON property `notFoundPage`
715
+ # @return [String]
716
+ attr_accessor :not_found_page
717
+
718
+ def initialize(**args)
719
+ update!(**args)
720
+ end
721
+
722
+ # Update properties of this object
723
+ def update!(**args)
724
+ @main_page_suffix = args[:main_page_suffix] if args.key?(:main_page_suffix)
725
+ @not_found_page = args[:not_found_page] if args.key?(:not_found_page)
726
+ end
727
+ end
728
+ end
729
+
730
+ # An access-control entry.
731
+ class BucketAccessControl
732
+ include Google::Apis::Core::Hashable
733
+
734
+ # The name of the bucket.
735
+ # Corresponds to the JSON property `bucket`
736
+ # @return [String]
737
+ attr_accessor :bucket
738
+
739
+ # The domain associated with the entity, if any.
740
+ # Corresponds to the JSON property `domain`
741
+ # @return [String]
742
+ attr_accessor :domain
743
+
744
+ # The email address associated with the entity, if any.
745
+ # Corresponds to the JSON property `email`
746
+ # @return [String]
747
+ attr_accessor :email
748
+
749
+ # The entity holding the permission, in one of the following forms:
750
+ # - user-userId
751
+ # - user-email
752
+ # - group-groupId
753
+ # - group-email
754
+ # - domain-domain
755
+ # - project-team-projectId
756
+ # - allUsers
757
+ # - allAuthenticatedUsers Examples:
758
+ # - The user liz@example.com would be user-liz@example.com.
759
+ # - The group example@googlegroups.com would be group-example@googlegroups.com.
760
+ # - To refer to all members of the Google Apps for Business domain example.com,
761
+ # the entity would be domain-example.com.
762
+ # Corresponds to the JSON property `entity`
763
+ # @return [String]
764
+ attr_accessor :entity
765
+
766
+ # The ID for the entity, if any.
767
+ # Corresponds to the JSON property `entityId`
768
+ # @return [String]
769
+ attr_accessor :entity_id
770
+
771
+ # HTTP 1.1 Entity tag for the access-control entry.
772
+ # Corresponds to the JSON property `etag`
773
+ # @return [String]
774
+ attr_accessor :etag
775
+
776
+ # The ID of the access-control entry.
777
+ # Corresponds to the JSON property `id`
778
+ # @return [String]
779
+ attr_accessor :id
780
+
781
+ # The kind of item this is. For bucket access control entries, this is always
782
+ # storage#bucketAccessControl.
783
+ # Corresponds to the JSON property `kind`
784
+ # @return [String]
785
+ attr_accessor :kind
786
+
787
+ # The project team associated with the entity, if any.
788
+ # Corresponds to the JSON property `projectTeam`
789
+ # @return [Google::Apis::StorageV1::BucketAccessControl::ProjectTeam]
790
+ attr_accessor :project_team
791
+
792
+ # The access permission for the entity.
793
+ # Corresponds to the JSON property `role`
794
+ # @return [String]
795
+ attr_accessor :role
796
+
797
+ # The link to this access-control entry.
798
+ # Corresponds to the JSON property `selfLink`
799
+ # @return [String]
800
+ attr_accessor :self_link
801
+
802
+ def initialize(**args)
803
+ update!(**args)
804
+ end
805
+
806
+ # Update properties of this object
807
+ def update!(**args)
808
+ @bucket = args[:bucket] if args.key?(:bucket)
809
+ @domain = args[:domain] if args.key?(:domain)
810
+ @email = args[:email] if args.key?(:email)
811
+ @entity = args[:entity] if args.key?(:entity)
812
+ @entity_id = args[:entity_id] if args.key?(:entity_id)
813
+ @etag = args[:etag] if args.key?(:etag)
814
+ @id = args[:id] if args.key?(:id)
815
+ @kind = args[:kind] if args.key?(:kind)
816
+ @project_team = args[:project_team] if args.key?(:project_team)
817
+ @role = args[:role] if args.key?(:role)
818
+ @self_link = args[:self_link] if args.key?(:self_link)
819
+ end
820
+
821
+ # The project team associated with the entity, if any.
822
+ class ProjectTeam
823
+ include Google::Apis::Core::Hashable
824
+
825
+ # The project number.
826
+ # Corresponds to the JSON property `projectNumber`
827
+ # @return [String]
828
+ attr_accessor :project_number
829
+
830
+ # The team.
831
+ # Corresponds to the JSON property `team`
832
+ # @return [String]
833
+ attr_accessor :team
834
+
835
+ def initialize(**args)
836
+ update!(**args)
837
+ end
838
+
839
+ # Update properties of this object
840
+ def update!(**args)
841
+ @project_number = args[:project_number] if args.key?(:project_number)
842
+ @team = args[:team] if args.key?(:team)
843
+ end
844
+ end
845
+ end
846
+
847
+ # An access-control list.
848
+ class BucketAccessControls
849
+ include Google::Apis::Core::Hashable
850
+
851
+ # The list of items.
852
+ # Corresponds to the JSON property `items`
853
+ # @return [Array<Google::Apis::StorageV1::BucketAccessControl>]
854
+ attr_accessor :items
855
+
856
+ # The kind of item this is. For lists of bucket access control entries, this is
857
+ # always storage#bucketAccessControls.
858
+ # Corresponds to the JSON property `kind`
859
+ # @return [String]
860
+ attr_accessor :kind
861
+
862
+ def initialize(**args)
863
+ update!(**args)
864
+ end
865
+
866
+ # Update properties of this object
867
+ def update!(**args)
868
+ @items = args[:items] if args.key?(:items)
869
+ @kind = args[:kind] if args.key?(:kind)
870
+ end
871
+ end
872
+
873
+ # A list of buckets.
874
+ class Buckets
875
+ include Google::Apis::Core::Hashable
876
+
877
+ # The list of items.
878
+ # Corresponds to the JSON property `items`
879
+ # @return [Array<Google::Apis::StorageV1::Bucket>]
880
+ attr_accessor :items
881
+
882
+ # The kind of item this is. For lists of buckets, this is always storage#buckets.
883
+ # Corresponds to the JSON property `kind`
884
+ # @return [String]
885
+ attr_accessor :kind
886
+
887
+ # The continuation token, used to page through large result sets. Provide this
888
+ # value in a subsequent request to return the next page of results.
889
+ # Corresponds to the JSON property `nextPageToken`
890
+ # @return [String]
891
+ attr_accessor :next_page_token
892
+
893
+ def initialize(**args)
894
+ update!(**args)
895
+ end
896
+
897
+ # Update properties of this object
898
+ def update!(**args)
899
+ @items = args[:items] if args.key?(:items)
900
+ @kind = args[:kind] if args.key?(:kind)
901
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
902
+ end
903
+ end
904
+
905
+ # An notification channel used to watch for resource changes.
906
+ class Channel
907
+ include Google::Apis::Core::Hashable
908
+
909
+ # The address where notifications are delivered for this channel.
910
+ # Corresponds to the JSON property `address`
911
+ # @return [String]
912
+ attr_accessor :address
913
+
914
+ # Date and time of notification channel expiration, expressed as a Unix
915
+ # timestamp, in milliseconds. Optional.
916
+ # Corresponds to the JSON property `expiration`
917
+ # @return [Fixnum]
918
+ attr_accessor :expiration
919
+
920
+ # A UUID or similar unique string that identifies this channel.
921
+ # Corresponds to the JSON property `id`
922
+ # @return [String]
923
+ attr_accessor :id
924
+
925
+ # Identifies this as a notification channel used to watch for changes to a
926
+ # resource, which is "api#channel".
927
+ # Corresponds to the JSON property `kind`
928
+ # @return [String]
929
+ attr_accessor :kind
930
+
931
+ # Additional parameters controlling delivery channel behavior. Optional.
932
+ # Corresponds to the JSON property `params`
933
+ # @return [Hash<String,String>]
934
+ attr_accessor :params
935
+
936
+ # A Boolean value to indicate whether payload is wanted. Optional.
937
+ # Corresponds to the JSON property `payload`
938
+ # @return [Boolean]
939
+ attr_accessor :payload
940
+ alias_method :payload?, :payload
941
+
942
+ # An opaque ID that identifies the resource being watched on this channel.
943
+ # Stable across different API versions.
944
+ # Corresponds to the JSON property `resourceId`
945
+ # @return [String]
946
+ attr_accessor :resource_id
947
+
948
+ # A version-specific identifier for the watched resource.
949
+ # Corresponds to the JSON property `resourceUri`
950
+ # @return [String]
951
+ attr_accessor :resource_uri
952
+
953
+ # An arbitrary string delivered to the target address with each notification
954
+ # delivered over this channel. Optional.
955
+ # Corresponds to the JSON property `token`
956
+ # @return [String]
957
+ attr_accessor :token
958
+
959
+ # The type of delivery mechanism used for this channel.
960
+ # Corresponds to the JSON property `type`
961
+ # @return [String]
962
+ attr_accessor :type
963
+
964
+ def initialize(**args)
965
+ update!(**args)
966
+ end
967
+
968
+ # Update properties of this object
969
+ def update!(**args)
970
+ @address = args[:address] if args.key?(:address)
971
+ @expiration = args[:expiration] if args.key?(:expiration)
972
+ @id = args[:id] if args.key?(:id)
973
+ @kind = args[:kind] if args.key?(:kind)
974
+ @params = args[:params] if args.key?(:params)
975
+ @payload = args[:payload] if args.key?(:payload)
976
+ @resource_id = args[:resource_id] if args.key?(:resource_id)
977
+ @resource_uri = args[:resource_uri] if args.key?(:resource_uri)
978
+ @token = args[:token] if args.key?(:token)
979
+ @type = args[:type] if args.key?(:type)
980
+ end
981
+ end
982
+
983
+ # A Compose request.
984
+ class ComposeRequest
985
+ include Google::Apis::Core::Hashable
986
+
987
+ # An object.
988
+ # Corresponds to the JSON property `destination`
989
+ # @return [Google::Apis::StorageV1::Object]
990
+ attr_accessor :destination
991
+
992
+ # The kind of item this is.
993
+ # Corresponds to the JSON property `kind`
994
+ # @return [String]
995
+ attr_accessor :kind
996
+
997
+ # The list of source objects that will be concatenated into a single object.
998
+ # Corresponds to the JSON property `sourceObjects`
999
+ # @return [Array<Google::Apis::StorageV1::ComposeRequest::SourceObject>]
1000
+ attr_accessor :source_objects
1001
+
1002
+ def initialize(**args)
1003
+ update!(**args)
1004
+ end
1005
+
1006
+ # Update properties of this object
1007
+ def update!(**args)
1008
+ @destination = args[:destination] if args.key?(:destination)
1009
+ @kind = args[:kind] if args.key?(:kind)
1010
+ @source_objects = args[:source_objects] if args.key?(:source_objects)
1011
+ end
1012
+
1013
+ #
1014
+ class SourceObject
1015
+ include Google::Apis::Core::Hashable
1016
+
1017
+ # The generation of this object to use as the source.
1018
+ # Corresponds to the JSON property `generation`
1019
+ # @return [Fixnum]
1020
+ attr_accessor :generation
1021
+
1022
+ # The source object's name. All source objects must reside in the same bucket.
1023
+ # Corresponds to the JSON property `name`
1024
+ # @return [String]
1025
+ attr_accessor :name
1026
+
1027
+ # Conditions that must be met for this operation to execute.
1028
+ # Corresponds to the JSON property `objectPreconditions`
1029
+ # @return [Google::Apis::StorageV1::ComposeRequest::SourceObject::ObjectPreconditions]
1030
+ attr_accessor :object_preconditions
1031
+
1032
+ def initialize(**args)
1033
+ update!(**args)
1034
+ end
1035
+
1036
+ # Update properties of this object
1037
+ def update!(**args)
1038
+ @generation = args[:generation] if args.key?(:generation)
1039
+ @name = args[:name] if args.key?(:name)
1040
+ @object_preconditions = args[:object_preconditions] if args.key?(:object_preconditions)
1041
+ end
1042
+
1043
+ # Conditions that must be met for this operation to execute.
1044
+ class ObjectPreconditions
1045
+ include Google::Apis::Core::Hashable
1046
+
1047
+ # Only perform the composition if the generation of the source object that would
1048
+ # be used matches this value. If this value and a generation are both specified,
1049
+ # they must be the same value or the call will fail.
1050
+ # Corresponds to the JSON property `ifGenerationMatch`
1051
+ # @return [Fixnum]
1052
+ attr_accessor :if_generation_match
1053
+
1054
+ def initialize(**args)
1055
+ update!(**args)
1056
+ end
1057
+
1058
+ # Update properties of this object
1059
+ def update!(**args)
1060
+ @if_generation_match = args[:if_generation_match] if args.key?(:if_generation_match)
1061
+ end
1062
+ end
1063
+ end
1064
+ end
1065
+
1066
+ # Represents an expression text. Example: title: "User account presence"
1067
+ # description: "Determines whether the request has a user account" expression: "
1068
+ # size(request.user) > 0"
1069
+ class Expr
1070
+ include Google::Apis::Core::Hashable
1071
+
1072
+ # An optional description of the expression. This is a longer text which
1073
+ # describes the expression, e.g. when hovered over it in a UI.
1074
+ # Corresponds to the JSON property `description`
1075
+ # @return [String]
1076
+ attr_accessor :description
1077
+
1078
+ # Textual representation of an expression in Common Expression Language syntax.
1079
+ # The application context of the containing message determines which well-known
1080
+ # feature set of CEL is supported.
1081
+ # Corresponds to the JSON property `expression`
1082
+ # @return [String]
1083
+ attr_accessor :expression
1084
+
1085
+ # An optional string indicating the location of the expression for error
1086
+ # reporting, e.g. a file name and a position in the file.
1087
+ # Corresponds to the JSON property `location`
1088
+ # @return [String]
1089
+ attr_accessor :location
1090
+
1091
+ # An optional title for the expression, i.e. a short string describing its
1092
+ # purpose. This can be used e.g. in UIs which allow to enter the expression.
1093
+ # Corresponds to the JSON property `title`
1094
+ # @return [String]
1095
+ attr_accessor :title
1096
+
1097
+ def initialize(**args)
1098
+ update!(**args)
1099
+ end
1100
+
1101
+ # Update properties of this object
1102
+ def update!(**args)
1103
+ @description = args[:description] if args.key?(:description)
1104
+ @expression = args[:expression] if args.key?(:expression)
1105
+ @location = args[:location] if args.key?(:location)
1106
+ @title = args[:title] if args.key?(:title)
1107
+ end
1108
+ end
1109
+
1110
+ # JSON template to produce a JSON-style HMAC Key resource for Create responses.
1111
+ class HmacKey
1112
+ include Google::Apis::Core::Hashable
1113
+
1114
+ # The kind of item this is. For HMAC keys, this is always storage#hmacKey.
1115
+ # Corresponds to the JSON property `kind`
1116
+ # @return [String]
1117
+ attr_accessor :kind
1118
+
1119
+ # JSON template to produce a JSON-style HMAC Key metadata resource.
1120
+ # Corresponds to the JSON property `metadata`
1121
+ # @return [Google::Apis::StorageV1::HmacKeyMetadata]
1122
+ attr_accessor :metadata
1123
+
1124
+ # HMAC secret key material.
1125
+ # Corresponds to the JSON property `secret`
1126
+ # @return [String]
1127
+ attr_accessor :secret
1128
+
1129
+ def initialize(**args)
1130
+ update!(**args)
1131
+ end
1132
+
1133
+ # Update properties of this object
1134
+ def update!(**args)
1135
+ @kind = args[:kind] if args.key?(:kind)
1136
+ @metadata = args[:metadata] if args.key?(:metadata)
1137
+ @secret = args[:secret] if args.key?(:secret)
1138
+ end
1139
+ end
1140
+
1141
+ # JSON template to produce a JSON-style HMAC Key metadata resource.
1142
+ class HmacKeyMetadata
1143
+ include Google::Apis::Core::Hashable
1144
+
1145
+ # The ID of the HMAC Key.
1146
+ # Corresponds to the JSON property `accessId`
1147
+ # @return [String]
1148
+ attr_accessor :access_id
1149
+
1150
+ # HTTP 1.1 Entity tag for the HMAC key.
1151
+ # Corresponds to the JSON property `etag`
1152
+ # @return [String]
1153
+ attr_accessor :etag
1154
+
1155
+ # The ID of the HMAC key, including the Project ID and the Access ID.
1156
+ # Corresponds to the JSON property `id`
1157
+ # @return [String]
1158
+ attr_accessor :id
1159
+
1160
+ # The kind of item this is. For HMAC Key metadata, this is always storage#
1161
+ # hmacKeyMetadata.
1162
+ # Corresponds to the JSON property `kind`
1163
+ # @return [String]
1164
+ attr_accessor :kind
1165
+
1166
+ # Project ID owning the service account to which the key authenticates.
1167
+ # Corresponds to the JSON property `projectId`
1168
+ # @return [String]
1169
+ attr_accessor :project_id
1170
+
1171
+ # The link to this resource.
1172
+ # Corresponds to the JSON property `selfLink`
1173
+ # @return [String]
1174
+ attr_accessor :self_link
1175
+
1176
+ # The email address of the key's associated service account.
1177
+ # Corresponds to the JSON property `serviceAccountEmail`
1178
+ # @return [String]
1179
+ attr_accessor :service_account_email
1180
+
1181
+ # The state of the key. Can be one of ACTIVE, INACTIVE, or DELETED.
1182
+ # Corresponds to the JSON property `state`
1183
+ # @return [String]
1184
+ attr_accessor :state
1185
+
1186
+ # The creation time of the HMAC key in RFC 3339 format.
1187
+ # Corresponds to the JSON property `timeCreated`
1188
+ # @return [DateTime]
1189
+ attr_accessor :time_created
1190
+
1191
+ # The last modification time of the HMAC key metadata in RFC 3339 format.
1192
+ # Corresponds to the JSON property `updated`
1193
+ # @return [DateTime]
1194
+ attr_accessor :updated
1195
+
1196
+ def initialize(**args)
1197
+ update!(**args)
1198
+ end
1199
+
1200
+ # Update properties of this object
1201
+ def update!(**args)
1202
+ @access_id = args[:access_id] if args.key?(:access_id)
1203
+ @etag = args[:etag] if args.key?(:etag)
1204
+ @id = args[:id] if args.key?(:id)
1205
+ @kind = args[:kind] if args.key?(:kind)
1206
+ @project_id = args[:project_id] if args.key?(:project_id)
1207
+ @self_link = args[:self_link] if args.key?(:self_link)
1208
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
1209
+ @state = args[:state] if args.key?(:state)
1210
+ @time_created = args[:time_created] if args.key?(:time_created)
1211
+ @updated = args[:updated] if args.key?(:updated)
1212
+ end
1213
+ end
1214
+
1215
+ # A list of hmacKeys.
1216
+ class HmacKeysMetadata
1217
+ include Google::Apis::Core::Hashable
1218
+
1219
+ # The list of items.
1220
+ # Corresponds to the JSON property `items`
1221
+ # @return [Array<Google::Apis::StorageV1::HmacKeyMetadata>]
1222
+ attr_accessor :items
1223
+
1224
+ # The kind of item this is. For lists of hmacKeys, this is always storage#
1225
+ # hmacKeysMetadata.
1226
+ # Corresponds to the JSON property `kind`
1227
+ # @return [String]
1228
+ attr_accessor :kind
1229
+
1230
+ # The continuation token, used to page through large result sets. Provide this
1231
+ # value in a subsequent request to return the next page of results.
1232
+ # Corresponds to the JSON property `nextPageToken`
1233
+ # @return [String]
1234
+ attr_accessor :next_page_token
1235
+
1236
+ def initialize(**args)
1237
+ update!(**args)
1238
+ end
1239
+
1240
+ # Update properties of this object
1241
+ def update!(**args)
1242
+ @items = args[:items] if args.key?(:items)
1243
+ @kind = args[:kind] if args.key?(:kind)
1244
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1245
+ end
1246
+ end
1247
+
1248
+ # A subscription to receive Google PubSub notifications.
1249
+ class Notification
1250
+ include Google::Apis::Core::Hashable
1251
+
1252
+ # An optional list of additional attributes to attach to each Cloud PubSub
1253
+ # message published for this notification subscription.
1254
+ # Corresponds to the JSON property `custom_attributes`
1255
+ # @return [Hash<String,String>]
1256
+ attr_accessor :custom_attributes
1257
+
1258
+ # HTTP 1.1 Entity tag for this subscription notification.
1259
+ # Corresponds to the JSON property `etag`
1260
+ # @return [String]
1261
+ attr_accessor :etag
1262
+
1263
+ # If present, only send notifications about listed event types. If empty, sent
1264
+ # notifications for all event types.
1265
+ # Corresponds to the JSON property `event_types`
1266
+ # @return [Array<String>]
1267
+ attr_accessor :event_types
1268
+
1269
+ # The ID of the notification.
1270
+ # Corresponds to the JSON property `id`
1271
+ # @return [String]
1272
+ attr_accessor :id
1273
+
1274
+ # The kind of item this is. For notifications, this is always storage#
1275
+ # notification.
1276
+ # Corresponds to the JSON property `kind`
1277
+ # @return [String]
1278
+ attr_accessor :kind
1279
+
1280
+ # If present, only apply this notification configuration to object names that
1281
+ # begin with this prefix.
1282
+ # Corresponds to the JSON property `object_name_prefix`
1283
+ # @return [String]
1284
+ attr_accessor :object_name_prefix
1285
+
1286
+ # The desired content of the Payload.
1287
+ # Corresponds to the JSON property `payload_format`
1288
+ # @return [String]
1289
+ attr_accessor :payload_format
1290
+
1291
+ # The canonical URL of this notification.
1292
+ # Corresponds to the JSON property `selfLink`
1293
+ # @return [String]
1294
+ attr_accessor :self_link
1295
+
1296
+ # The Cloud PubSub topic to which this subscription publishes. Formatted as: '//
1297
+ # pubsub.googleapis.com/projects/`project-identifier`/topics/`my-topic`'
1298
+ # Corresponds to the JSON property `topic`
1299
+ # @return [String]
1300
+ attr_accessor :topic
1301
+
1302
+ def initialize(**args)
1303
+ update!(**args)
1304
+ end
1305
+
1306
+ # Update properties of this object
1307
+ def update!(**args)
1308
+ @custom_attributes = args[:custom_attributes] if args.key?(:custom_attributes)
1309
+ @etag = args[:etag] if args.key?(:etag)
1310
+ @event_types = args[:event_types] if args.key?(:event_types)
1311
+ @id = args[:id] if args.key?(:id)
1312
+ @kind = args[:kind] if args.key?(:kind)
1313
+ @object_name_prefix = args[:object_name_prefix] if args.key?(:object_name_prefix)
1314
+ @payload_format = args[:payload_format] if args.key?(:payload_format)
1315
+ @self_link = args[:self_link] if args.key?(:self_link)
1316
+ @topic = args[:topic] if args.key?(:topic)
1317
+ end
1318
+ end
1319
+
1320
+ # A list of notification subscriptions.
1321
+ class Notifications
1322
+ include Google::Apis::Core::Hashable
1323
+
1324
+ # The list of items.
1325
+ # Corresponds to the JSON property `items`
1326
+ # @return [Array<Google::Apis::StorageV1::Notification>]
1327
+ attr_accessor :items
1328
+
1329
+ # The kind of item this is. For lists of notifications, this is always storage#
1330
+ # notifications.
1331
+ # Corresponds to the JSON property `kind`
1332
+ # @return [String]
1333
+ attr_accessor :kind
1334
+
1335
+ def initialize(**args)
1336
+ update!(**args)
1337
+ end
1338
+
1339
+ # Update properties of this object
1340
+ def update!(**args)
1341
+ @items = args[:items] if args.key?(:items)
1342
+ @kind = args[:kind] if args.key?(:kind)
1343
+ end
1344
+ end
1345
+
1346
+ # An object.
1347
+ class Object
1348
+ include Google::Apis::Core::Hashable
1349
+
1350
+ # Access controls on the object.
1351
+ # Corresponds to the JSON property `acl`
1352
+ # @return [Array<Google::Apis::StorageV1::ObjectAccessControl>]
1353
+ attr_accessor :acl
1354
+
1355
+ # The name of the bucket containing this object.
1356
+ # Corresponds to the JSON property `bucket`
1357
+ # @return [String]
1358
+ attr_accessor :bucket
1359
+
1360
+ # Cache-Control directive for the object data. If omitted, and the object is
1361
+ # accessible to all anonymous users, the default will be public, max-age=3600.
1362
+ # Corresponds to the JSON property `cacheControl`
1363
+ # @return [String]
1364
+ attr_accessor :cache_control
1365
+
1366
+ # Number of underlying components that make up this object. Components are
1367
+ # accumulated by compose operations.
1368
+ # Corresponds to the JSON property `componentCount`
1369
+ # @return [Fixnum]
1370
+ attr_accessor :component_count
1371
+
1372
+ # Content-Disposition of the object data.
1373
+ # Corresponds to the JSON property `contentDisposition`
1374
+ # @return [String]
1375
+ attr_accessor :content_disposition
1376
+
1377
+ # Content-Encoding of the object data.
1378
+ # Corresponds to the JSON property `contentEncoding`
1379
+ # @return [String]
1380
+ attr_accessor :content_encoding
1381
+
1382
+ # Content-Language of the object data.
1383
+ # Corresponds to the JSON property `contentLanguage`
1384
+ # @return [String]
1385
+ attr_accessor :content_language
1386
+
1387
+ # Content-Type of the object data. If an object is stored without a Content-Type,
1388
+ # it is served as application/octet-stream.
1389
+ # Corresponds to the JSON property `contentType`
1390
+ # @return [String]
1391
+ attr_accessor :content_type
1392
+
1393
+ # CRC32c checksum, as described in RFC 4960, Appendix B; encoded using base64 in
1394
+ # big-endian byte order. For more information about using the CRC32c checksum,
1395
+ # see Hashes and ETags: Best Practices.
1396
+ # Corresponds to the JSON property `crc32c`
1397
+ # @return [String]
1398
+ attr_accessor :crc32c
1399
+
1400
+ # A timestamp in RFC 3339 format specified by the user for an object.
1401
+ # Corresponds to the JSON property `customTime`
1402
+ # @return [DateTime]
1403
+ attr_accessor :custom_time
1404
+
1405
+ # Metadata of customer-supplied encryption key, if the object is encrypted by
1406
+ # such a key.
1407
+ # Corresponds to the JSON property `customerEncryption`
1408
+ # @return [Google::Apis::StorageV1::Object::CustomerEncryption]
1409
+ attr_accessor :customer_encryption
1410
+
1411
+ # HTTP 1.1 Entity tag for the object.
1412
+ # Corresponds to the JSON property `etag`
1413
+ # @return [String]
1414
+ attr_accessor :etag
1415
+
1416
+ # Whether an object is under event-based hold. Event-based hold is a way to
1417
+ # retain objects until an event occurs, which is signified by the hold's release
1418
+ # (i.e. this value is set to false). After being released (set to false), such
1419
+ # objects will be subject to bucket-level retention (if any). One sample use
1420
+ # case of this flag is for banks to hold loan documents for at least 3 years
1421
+ # after loan is paid in full. Here, bucket-level retention is 3 years and the
1422
+ # event is the loan being paid in full. In this example, these objects will be
1423
+ # held intact for any number of years until the event has occurred (event-based
1424
+ # hold on the object is released) and then 3 more years after that. That means
1425
+ # retention duration of the objects begins from the moment event-based hold
1426
+ # transitioned from true to false.
1427
+ # Corresponds to the JSON property `eventBasedHold`
1428
+ # @return [Boolean]
1429
+ attr_accessor :event_based_hold
1430
+ alias_method :event_based_hold?, :event_based_hold
1431
+
1432
+ # The content generation of this object. Used for object versioning.
1433
+ # Corresponds to the JSON property `generation`
1434
+ # @return [Fixnum]
1435
+ attr_accessor :generation
1436
+
1437
+ # The ID of the object, including the bucket name, object name, and generation
1438
+ # number.
1439
+ # Corresponds to the JSON property `id`
1440
+ # @return [String]
1441
+ attr_accessor :id
1442
+
1443
+ # The kind of item this is. For objects, this is always storage#object.
1444
+ # Corresponds to the JSON property `kind`
1445
+ # @return [String]
1446
+ attr_accessor :kind
1447
+
1448
+ # Not currently supported. Specifying the parameter causes the request to fail
1449
+ # with status code 400 - Bad Request.
1450
+ # Corresponds to the JSON property `kmsKeyName`
1451
+ # @return [String]
1452
+ attr_accessor :kms_key_name
1453
+
1454
+ # MD5 hash of the data; encoded using base64. For more information about using
1455
+ # the MD5 hash, see Hashes and ETags: Best Practices.
1456
+ # Corresponds to the JSON property `md5Hash`
1457
+ # @return [String]
1458
+ attr_accessor :md5_hash
1459
+
1460
+ # Media download link.
1461
+ # Corresponds to the JSON property `mediaLink`
1462
+ # @return [String]
1463
+ attr_accessor :media_link
1464
+
1465
+ # User-provided metadata, in key/value pairs.
1466
+ # Corresponds to the JSON property `metadata`
1467
+ # @return [Hash<String,String>]
1468
+ attr_accessor :metadata
1469
+
1470
+ # The version of the metadata for this object at this generation. Used for
1471
+ # preconditions and for detecting changes in metadata. A metageneration number
1472
+ # is only meaningful in the context of a particular generation of a particular
1473
+ # object.
1474
+ # Corresponds to the JSON property `metageneration`
1475
+ # @return [Fixnum]
1476
+ attr_accessor :metageneration
1477
+
1478
+ # The name of the object. Required if not specified by URL parameter.
1479
+ # Corresponds to the JSON property `name`
1480
+ # @return [String]
1481
+ attr_accessor :name
1482
+
1483
+ # The owner of the object. This will always be the uploader of the object.
1484
+ # Corresponds to the JSON property `owner`
1485
+ # @return [Google::Apis::StorageV1::Object::Owner]
1486
+ attr_accessor :owner
1487
+
1488
+ # A server-determined value that specifies the earliest time that the object's
1489
+ # retention period expires. This value is in RFC 3339 format. Note 1: This field
1490
+ # is not provided for objects with an active event-based hold, since retention
1491
+ # expiration is unknown until the hold is removed. Note 2: This value can be
1492
+ # provided even when temporary hold is set (so that the user can reason about
1493
+ # policy without having to first unset the temporary hold).
1494
+ # Corresponds to the JSON property `retentionExpirationTime`
1495
+ # @return [DateTime]
1496
+ attr_accessor :retention_expiration_time
1497
+
1498
+ # The link to this object.
1499
+ # Corresponds to the JSON property `selfLink`
1500
+ # @return [String]
1501
+ attr_accessor :self_link
1502
+
1503
+ # Content-Length of the data in bytes.
1504
+ # Corresponds to the JSON property `size`
1505
+ # @return [Fixnum]
1506
+ attr_accessor :size
1507
+
1508
+ # Storage class of the object.
1509
+ # Corresponds to the JSON property `storageClass`
1510
+ # @return [String]
1511
+ attr_accessor :storage_class
1512
+
1513
+ # Whether an object is under temporary hold. While this flag is set to true, the
1514
+ # object is protected against deletion and overwrites. A common use case of this
1515
+ # flag is regulatory investigations where objects need to be retained while the
1516
+ # investigation is ongoing. Note that unlike event-based hold, temporary hold
1517
+ # does not impact retention expiration time of an object.
1518
+ # Corresponds to the JSON property `temporaryHold`
1519
+ # @return [Boolean]
1520
+ attr_accessor :temporary_hold
1521
+ alias_method :temporary_hold?, :temporary_hold
1522
+
1523
+ # The creation time of the object in RFC 3339 format.
1524
+ # Corresponds to the JSON property `timeCreated`
1525
+ # @return [DateTime]
1526
+ attr_accessor :time_created
1527
+
1528
+ # The deletion time of the object in RFC 3339 format. Will be returned if and
1529
+ # only if this version of the object has been deleted.
1530
+ # Corresponds to the JSON property `timeDeleted`
1531
+ # @return [DateTime]
1532
+ attr_accessor :time_deleted
1533
+
1534
+ # The time at which the object's storage class was last changed. When the object
1535
+ # is initially created, it will be set to timeCreated.
1536
+ # Corresponds to the JSON property `timeStorageClassUpdated`
1537
+ # @return [DateTime]
1538
+ attr_accessor :time_storage_class_updated
1539
+
1540
+ # The modification time of the object metadata in RFC 3339 format.
1541
+ # Corresponds to the JSON property `updated`
1542
+ # @return [DateTime]
1543
+ attr_accessor :updated
1544
+
1545
+ def initialize(**args)
1546
+ update!(**args)
1547
+ end
1548
+
1549
+ # Update properties of this object
1550
+ def update!(**args)
1551
+ @acl = args[:acl] if args.key?(:acl)
1552
+ @bucket = args[:bucket] if args.key?(:bucket)
1553
+ @cache_control = args[:cache_control] if args.key?(:cache_control)
1554
+ @component_count = args[:component_count] if args.key?(:component_count)
1555
+ @content_disposition = args[:content_disposition] if args.key?(:content_disposition)
1556
+ @content_encoding = args[:content_encoding] if args.key?(:content_encoding)
1557
+ @content_language = args[:content_language] if args.key?(:content_language)
1558
+ @content_type = args[:content_type] if args.key?(:content_type)
1559
+ @crc32c = args[:crc32c] if args.key?(:crc32c)
1560
+ @custom_time = args[:custom_time] if args.key?(:custom_time)
1561
+ @customer_encryption = args[:customer_encryption] if args.key?(:customer_encryption)
1562
+ @etag = args[:etag] if args.key?(:etag)
1563
+ @event_based_hold = args[:event_based_hold] if args.key?(:event_based_hold)
1564
+ @generation = args[:generation] if args.key?(:generation)
1565
+ @id = args[:id] if args.key?(:id)
1566
+ @kind = args[:kind] if args.key?(:kind)
1567
+ @kms_key_name = args[:kms_key_name] if args.key?(:kms_key_name)
1568
+ @md5_hash = args[:md5_hash] if args.key?(:md5_hash)
1569
+ @media_link = args[:media_link] if args.key?(:media_link)
1570
+ @metadata = args[:metadata] if args.key?(:metadata)
1571
+ @metageneration = args[:metageneration] if args.key?(:metageneration)
1572
+ @name = args[:name] if args.key?(:name)
1573
+ @owner = args[:owner] if args.key?(:owner)
1574
+ @retention_expiration_time = args[:retention_expiration_time] if args.key?(:retention_expiration_time)
1575
+ @self_link = args[:self_link] if args.key?(:self_link)
1576
+ @size = args[:size] if args.key?(:size)
1577
+ @storage_class = args[:storage_class] if args.key?(:storage_class)
1578
+ @temporary_hold = args[:temporary_hold] if args.key?(:temporary_hold)
1579
+ @time_created = args[:time_created] if args.key?(:time_created)
1580
+ @time_deleted = args[:time_deleted] if args.key?(:time_deleted)
1581
+ @time_storage_class_updated = args[:time_storage_class_updated] if args.key?(:time_storage_class_updated)
1582
+ @updated = args[:updated] if args.key?(:updated)
1583
+ end
1584
+
1585
+ # Metadata of customer-supplied encryption key, if the object is encrypted by
1586
+ # such a key.
1587
+ class CustomerEncryption
1588
+ include Google::Apis::Core::Hashable
1589
+
1590
+ # The encryption algorithm.
1591
+ # Corresponds to the JSON property `encryptionAlgorithm`
1592
+ # @return [String]
1593
+ attr_accessor :encryption_algorithm
1594
+
1595
+ # SHA256 hash value of the encryption key.
1596
+ # Corresponds to the JSON property `keySha256`
1597
+ # @return [String]
1598
+ attr_accessor :key_sha256
1599
+
1600
+ def initialize(**args)
1601
+ update!(**args)
1602
+ end
1603
+
1604
+ # Update properties of this object
1605
+ def update!(**args)
1606
+ @encryption_algorithm = args[:encryption_algorithm] if args.key?(:encryption_algorithm)
1607
+ @key_sha256 = args[:key_sha256] if args.key?(:key_sha256)
1608
+ end
1609
+ end
1610
+
1611
+ # The owner of the object. This will always be the uploader of the object.
1612
+ class Owner
1613
+ include Google::Apis::Core::Hashable
1614
+
1615
+ # The entity, in the form user-userId.
1616
+ # Corresponds to the JSON property `entity`
1617
+ # @return [String]
1618
+ attr_accessor :entity
1619
+
1620
+ # The ID for the entity.
1621
+ # Corresponds to the JSON property `entityId`
1622
+ # @return [String]
1623
+ attr_accessor :entity_id
1624
+
1625
+ def initialize(**args)
1626
+ update!(**args)
1627
+ end
1628
+
1629
+ # Update properties of this object
1630
+ def update!(**args)
1631
+ @entity = args[:entity] if args.key?(:entity)
1632
+ @entity_id = args[:entity_id] if args.key?(:entity_id)
1633
+ end
1634
+ end
1635
+ end
1636
+
1637
+ # An access-control entry.
1638
+ class ObjectAccessControl
1639
+ include Google::Apis::Core::Hashable
1640
+
1641
+ # The name of the bucket.
1642
+ # Corresponds to the JSON property `bucket`
1643
+ # @return [String]
1644
+ attr_accessor :bucket
1645
+
1646
+ # The domain associated with the entity, if any.
1647
+ # Corresponds to the JSON property `domain`
1648
+ # @return [String]
1649
+ attr_accessor :domain
1650
+
1651
+ # The email address associated with the entity, if any.
1652
+ # Corresponds to the JSON property `email`
1653
+ # @return [String]
1654
+ attr_accessor :email
1655
+
1656
+ # The entity holding the permission, in one of the following forms:
1657
+ # - user-userId
1658
+ # - user-email
1659
+ # - group-groupId
1660
+ # - group-email
1661
+ # - domain-domain
1662
+ # - project-team-projectId
1663
+ # - allUsers
1664
+ # - allAuthenticatedUsers Examples:
1665
+ # - The user liz@example.com would be user-liz@example.com.
1666
+ # - The group example@googlegroups.com would be group-example@googlegroups.com.
1667
+ # - To refer to all members of the Google Apps for Business domain example.com,
1668
+ # the entity would be domain-example.com.
1669
+ # Corresponds to the JSON property `entity`
1670
+ # @return [String]
1671
+ attr_accessor :entity
1672
+
1673
+ # The ID for the entity, if any.
1674
+ # Corresponds to the JSON property `entityId`
1675
+ # @return [String]
1676
+ attr_accessor :entity_id
1677
+
1678
+ # HTTP 1.1 Entity tag for the access-control entry.
1679
+ # Corresponds to the JSON property `etag`
1680
+ # @return [String]
1681
+ attr_accessor :etag
1682
+
1683
+ # The content generation of the object, if applied to an object.
1684
+ # Corresponds to the JSON property `generation`
1685
+ # @return [Fixnum]
1686
+ attr_accessor :generation
1687
+
1688
+ # The ID of the access-control entry.
1689
+ # Corresponds to the JSON property `id`
1690
+ # @return [String]
1691
+ attr_accessor :id
1692
+
1693
+ # The kind of item this is. For object access control entries, this is always
1694
+ # storage#objectAccessControl.
1695
+ # Corresponds to the JSON property `kind`
1696
+ # @return [String]
1697
+ attr_accessor :kind
1698
+
1699
+ # The name of the object, if applied to an object.
1700
+ # Corresponds to the JSON property `object`
1701
+ # @return [String]
1702
+ attr_accessor :object
1703
+
1704
+ # The project team associated with the entity, if any.
1705
+ # Corresponds to the JSON property `projectTeam`
1706
+ # @return [Google::Apis::StorageV1::ObjectAccessControl::ProjectTeam]
1707
+ attr_accessor :project_team
1708
+
1709
+ # The access permission for the entity.
1710
+ # Corresponds to the JSON property `role`
1711
+ # @return [String]
1712
+ attr_accessor :role
1713
+
1714
+ # The link to this access-control entry.
1715
+ # Corresponds to the JSON property `selfLink`
1716
+ # @return [String]
1717
+ attr_accessor :self_link
1718
+
1719
+ def initialize(**args)
1720
+ update!(**args)
1721
+ end
1722
+
1723
+ # Update properties of this object
1724
+ def update!(**args)
1725
+ @bucket = args[:bucket] if args.key?(:bucket)
1726
+ @domain = args[:domain] if args.key?(:domain)
1727
+ @email = args[:email] if args.key?(:email)
1728
+ @entity = args[:entity] if args.key?(:entity)
1729
+ @entity_id = args[:entity_id] if args.key?(:entity_id)
1730
+ @etag = args[:etag] if args.key?(:etag)
1731
+ @generation = args[:generation] if args.key?(:generation)
1732
+ @id = args[:id] if args.key?(:id)
1733
+ @kind = args[:kind] if args.key?(:kind)
1734
+ @object = args[:object] if args.key?(:object)
1735
+ @project_team = args[:project_team] if args.key?(:project_team)
1736
+ @role = args[:role] if args.key?(:role)
1737
+ @self_link = args[:self_link] if args.key?(:self_link)
1738
+ end
1739
+
1740
+ # The project team associated with the entity, if any.
1741
+ class ProjectTeam
1742
+ include Google::Apis::Core::Hashable
1743
+
1744
+ # The project number.
1745
+ # Corresponds to the JSON property `projectNumber`
1746
+ # @return [String]
1747
+ attr_accessor :project_number
1748
+
1749
+ # The team.
1750
+ # Corresponds to the JSON property `team`
1751
+ # @return [String]
1752
+ attr_accessor :team
1753
+
1754
+ def initialize(**args)
1755
+ update!(**args)
1756
+ end
1757
+
1758
+ # Update properties of this object
1759
+ def update!(**args)
1760
+ @project_number = args[:project_number] if args.key?(:project_number)
1761
+ @team = args[:team] if args.key?(:team)
1762
+ end
1763
+ end
1764
+ end
1765
+
1766
+ # An access-control list.
1767
+ class ObjectAccessControls
1768
+ include Google::Apis::Core::Hashable
1769
+
1770
+ # The list of items.
1771
+ # Corresponds to the JSON property `items`
1772
+ # @return [Array<Google::Apis::StorageV1::ObjectAccessControl>]
1773
+ attr_accessor :items
1774
+
1775
+ # The kind of item this is. For lists of object access control entries, this is
1776
+ # always storage#objectAccessControls.
1777
+ # Corresponds to the JSON property `kind`
1778
+ # @return [String]
1779
+ attr_accessor :kind
1780
+
1781
+ def initialize(**args)
1782
+ update!(**args)
1783
+ end
1784
+
1785
+ # Update properties of this object
1786
+ def update!(**args)
1787
+ @items = args[:items] if args.key?(:items)
1788
+ @kind = args[:kind] if args.key?(:kind)
1789
+ end
1790
+ end
1791
+
1792
+ # A list of objects.
1793
+ class Objects
1794
+ include Google::Apis::Core::Hashable
1795
+
1796
+ # The list of items.
1797
+ # Corresponds to the JSON property `items`
1798
+ # @return [Array<Google::Apis::StorageV1::Object>]
1799
+ attr_accessor :items
1800
+
1801
+ # The kind of item this is. For lists of objects, this is always storage#objects.
1802
+ # Corresponds to the JSON property `kind`
1803
+ # @return [String]
1804
+ attr_accessor :kind
1805
+
1806
+ # The continuation token, used to page through large result sets. Provide this
1807
+ # value in a subsequent request to return the next page of results.
1808
+ # Corresponds to the JSON property `nextPageToken`
1809
+ # @return [String]
1810
+ attr_accessor :next_page_token
1811
+
1812
+ # The list of prefixes of objects matching-but-not-listed up to and including
1813
+ # the requested delimiter.
1814
+ # Corresponds to the JSON property `prefixes`
1815
+ # @return [Array<String>]
1816
+ attr_accessor :prefixes
1817
+
1818
+ def initialize(**args)
1819
+ update!(**args)
1820
+ end
1821
+
1822
+ # Update properties of this object
1823
+ def update!(**args)
1824
+ @items = args[:items] if args.key?(:items)
1825
+ @kind = args[:kind] if args.key?(:kind)
1826
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1827
+ @prefixes = args[:prefixes] if args.key?(:prefixes)
1828
+ end
1829
+ end
1830
+
1831
+ # A bucket/object IAM policy.
1832
+ class Policy
1833
+ include Google::Apis::Core::Hashable
1834
+
1835
+ # An association between a role, which comes with a set of permissions, and
1836
+ # members who may assume that role.
1837
+ # Corresponds to the JSON property `bindings`
1838
+ # @return [Array<Google::Apis::StorageV1::Policy::Binding>]
1839
+ attr_accessor :bindings
1840
+
1841
+ # HTTP 1.1 Entity tag for the policy.
1842
+ # Corresponds to the JSON property `etag`
1843
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
1844
+ # @return [String]
1845
+ attr_accessor :etag
1846
+
1847
+ # The kind of item this is. For policies, this is always storage#policy. This
1848
+ # field is ignored on input.
1849
+ # Corresponds to the JSON property `kind`
1850
+ # @return [String]
1851
+ attr_accessor :kind
1852
+
1853
+ # The ID of the resource to which this policy belongs. Will be of the form
1854
+ # projects/_/buckets/bucket for buckets, and projects/_/buckets/bucket/objects/
1855
+ # object for objects. A specific generation may be specified by appending #
1856
+ # generationNumber to the end of the object name, e.g. projects/_/buckets/my-
1857
+ # bucket/objects/data.txt#17. The current generation can be denoted with #0.
1858
+ # This field is ignored on input.
1859
+ # Corresponds to the JSON property `resourceId`
1860
+ # @return [String]
1861
+ attr_accessor :resource_id
1862
+
1863
+ # The IAM policy format version.
1864
+ # Corresponds to the JSON property `version`
1865
+ # @return [Fixnum]
1866
+ attr_accessor :version
1867
+
1868
+ def initialize(**args)
1869
+ update!(**args)
1870
+ end
1871
+
1872
+ # Update properties of this object
1873
+ def update!(**args)
1874
+ @bindings = args[:bindings] if args.key?(:bindings)
1875
+ @etag = args[:etag] if args.key?(:etag)
1876
+ @kind = args[:kind] if args.key?(:kind)
1877
+ @resource_id = args[:resource_id] if args.key?(:resource_id)
1878
+ @version = args[:version] if args.key?(:version)
1879
+ end
1880
+
1881
+ #
1882
+ class Binding
1883
+ include Google::Apis::Core::Hashable
1884
+
1885
+ # Represents an expression text. Example: title: "User account presence"
1886
+ # description: "Determines whether the request has a user account" expression: "
1887
+ # size(request.user) > 0"
1888
+ # Corresponds to the JSON property `condition`
1889
+ # @return [Google::Apis::StorageV1::Expr]
1890
+ attr_accessor :condition
1891
+
1892
+ # A collection of identifiers for members who may assume the provided role.
1893
+ # Recognized identifiers are as follows:
1894
+ # - allUsers — A special identifier that represents anyone on the internet; with
1895
+ # or without a Google account.
1896
+ # - allAuthenticatedUsers — A special identifier that represents anyone who is
1897
+ # authenticated with a Google account or a service account.
1898
+ # - user:emailid — An email address that represents a specific account. For
1899
+ # example, user:alice@gmail.com or user:joe@example.com.
1900
+ # - serviceAccount:emailid — An email address that represents a service account.
1901
+ # For example, serviceAccount:my-other-app@appspot.gserviceaccount.com .
1902
+ # - group:emailid — An email address that represents a Google group. For example,
1903
+ # group:admins@example.com.
1904
+ # - domain:domain — A Google Apps domain name that represents all the users of
1905
+ # that domain. For example, domain:google.com or domain:example.com.
1906
+ # - projectOwner:projectid — Owners of the given project. For example,
1907
+ # projectOwner:my-example-project
1908
+ # - projectEditor:projectid — Editors of the given project. For example,
1909
+ # projectEditor:my-example-project
1910
+ # - projectViewer:projectid — Viewers of the given project. For example,
1911
+ # projectViewer:my-example-project
1912
+ # Corresponds to the JSON property `members`
1913
+ # @return [Array<String>]
1914
+ attr_accessor :members
1915
+
1916
+ # The role to which members belong. Two types of roles are supported: new IAM
1917
+ # roles, which grant permissions that do not map directly to those provided by
1918
+ # ACLs, and legacy IAM roles, which do map directly to ACL permissions. All
1919
+ # roles are of the format roles/storage.specificRole.
1920
+ # The new IAM roles are:
1921
+ # - roles/storage.admin — Full control of Google Cloud Storage resources.
1922
+ # - roles/storage.objectViewer — Read-Only access to Google Cloud Storage
1923
+ # objects.
1924
+ # - roles/storage.objectCreator — Access to create objects in Google Cloud
1925
+ # Storage.
1926
+ # - roles/storage.objectAdmin — Full control of Google Cloud Storage objects.
1927
+ # The legacy IAM roles are:
1928
+ # - roles/storage.legacyObjectReader — Read-only access to objects without
1929
+ # listing. Equivalent to an ACL entry on an object with the READER role.
1930
+ # - roles/storage.legacyObjectOwner — Read/write access to existing objects
1931
+ # without listing. Equivalent to an ACL entry on an object with the OWNER role.
1932
+ # - roles/storage.legacyBucketReader — Read access to buckets with object
1933
+ # listing. Equivalent to an ACL entry on a bucket with the READER role.
1934
+ # - roles/storage.legacyBucketWriter — Read access to buckets with object
1935
+ # listing/creation/deletion. Equivalent to an ACL entry on a bucket with the
1936
+ # WRITER role.
1937
+ # - roles/storage.legacyBucketOwner — Read and write access to existing buckets
1938
+ # with object listing/creation/deletion. Equivalent to an ACL entry on a bucket
1939
+ # with the OWNER role.
1940
+ # Corresponds to the JSON property `role`
1941
+ # @return [String]
1942
+ attr_accessor :role
1943
+
1944
+ def initialize(**args)
1945
+ update!(**args)
1946
+ end
1947
+
1948
+ # Update properties of this object
1949
+ def update!(**args)
1950
+ @condition = args[:condition] if args.key?(:condition)
1951
+ @members = args[:members] if args.key?(:members)
1952
+ @role = args[:role] if args.key?(:role)
1953
+ end
1954
+ end
1955
+ end
1956
+
1957
+ # A rewrite response.
1958
+ class RewriteResponse
1959
+ include Google::Apis::Core::Hashable
1960
+
1961
+ # true if the copy is finished; otherwise, false if the copy is in progress.
1962
+ # This property is always present in the response.
1963
+ # Corresponds to the JSON property `done`
1964
+ # @return [Boolean]
1965
+ attr_accessor :done
1966
+ alias_method :done?, :done
1967
+
1968
+ # The kind of item this is.
1969
+ # Corresponds to the JSON property `kind`
1970
+ # @return [String]
1971
+ attr_accessor :kind
1972
+
1973
+ # The total size of the object being copied in bytes. This property is always
1974
+ # present in the response.
1975
+ # Corresponds to the JSON property `objectSize`
1976
+ # @return [Fixnum]
1977
+ attr_accessor :object_size
1978
+
1979
+ # An object.
1980
+ # Corresponds to the JSON property `resource`
1981
+ # @return [Google::Apis::StorageV1::Object]
1982
+ attr_accessor :resource
1983
+
1984
+ # A token to use in subsequent requests to continue copying data. This token is
1985
+ # present in the response only when there is more data to copy.
1986
+ # Corresponds to the JSON property `rewriteToken`
1987
+ # @return [String]
1988
+ attr_accessor :rewrite_token
1989
+
1990
+ # The total bytes written so far, which can be used to provide a waiting user
1991
+ # with a progress indicator. This property is always present in the response.
1992
+ # Corresponds to the JSON property `totalBytesRewritten`
1993
+ # @return [Fixnum]
1994
+ attr_accessor :total_bytes_rewritten
1995
+
1996
+ def initialize(**args)
1997
+ update!(**args)
1998
+ end
1999
+
2000
+ # Update properties of this object
2001
+ def update!(**args)
2002
+ @done = args[:done] if args.key?(:done)
2003
+ @kind = args[:kind] if args.key?(:kind)
2004
+ @object_size = args[:object_size] if args.key?(:object_size)
2005
+ @resource = args[:resource] if args.key?(:resource)
2006
+ @rewrite_token = args[:rewrite_token] if args.key?(:rewrite_token)
2007
+ @total_bytes_rewritten = args[:total_bytes_rewritten] if args.key?(:total_bytes_rewritten)
2008
+ end
2009
+ end
2010
+
2011
+ # A subscription to receive Google PubSub notifications.
2012
+ class ServiceAccount
2013
+ include Google::Apis::Core::Hashable
2014
+
2015
+ # The ID of the notification.
2016
+ # Corresponds to the JSON property `email_address`
2017
+ # @return [String]
2018
+ attr_accessor :email_address
2019
+
2020
+ # The kind of item this is. For notifications, this is always storage#
2021
+ # notification.
2022
+ # Corresponds to the JSON property `kind`
2023
+ # @return [String]
2024
+ attr_accessor :kind
2025
+
2026
+ def initialize(**args)
2027
+ update!(**args)
2028
+ end
2029
+
2030
+ # Update properties of this object
2031
+ def update!(**args)
2032
+ @email_address = args[:email_address] if args.key?(:email_address)
2033
+ @kind = args[:kind] if args.key?(:kind)
2034
+ end
2035
+ end
2036
+
2037
+ # A storage.(buckets|objects).testIamPermissions response.
2038
+ class TestIamPermissionsResponse
2039
+ include Google::Apis::Core::Hashable
2040
+
2041
+ # The kind of item this is.
2042
+ # Corresponds to the JSON property `kind`
2043
+ # @return [String]
2044
+ attr_accessor :kind
2045
+
2046
+ # The permissions held by the caller. Permissions are always of the format
2047
+ # storage.resource.capability, where resource is one of buckets or objects. The
2048
+ # supported permissions are as follows:
2049
+ # - storage.buckets.delete — Delete bucket.
2050
+ # - storage.buckets.get — Read bucket metadata.
2051
+ # - storage.buckets.getIamPolicy — Read bucket IAM policy.
2052
+ # - storage.buckets.create — Create bucket.
2053
+ # - storage.buckets.list — List buckets.
2054
+ # - storage.buckets.setIamPolicy — Update bucket IAM policy.
2055
+ # - storage.buckets.update — Update bucket metadata.
2056
+ # - storage.objects.delete — Delete object.
2057
+ # - storage.objects.get — Read object data and metadata.
2058
+ # - storage.objects.getIamPolicy — Read object IAM policy.
2059
+ # - storage.objects.create — Create object.
2060
+ # - storage.objects.list — List objects.
2061
+ # - storage.objects.setIamPolicy — Update object IAM policy.
2062
+ # - storage.objects.update — Update object metadata.
2063
+ # Corresponds to the JSON property `permissions`
2064
+ # @return [Array<String>]
2065
+ attr_accessor :permissions
2066
+
2067
+ def initialize(**args)
2068
+ update!(**args)
2069
+ end
2070
+
2071
+ # Update properties of this object
2072
+ def update!(**args)
2073
+ @kind = args[:kind] if args.key?(:kind)
2074
+ @permissions = args[:permissions] if args.key?(:permissions)
2075
+ end
2076
+ end
2077
+ end
2078
+ end
2079
+ end