google-apis-pubsub_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: df439ad10857a425c21394a4d4d6f92815a59702f9d85a8a2b8fd669a511db44
4
+ data.tar.gz: 2203405d3978546745ab6de6851682b336740788e7cdbac1a1aff2312bbbaabb
5
+ SHA512:
6
+ metadata.gz: 924b2010e73028bb6861f080855b0f9fffd47eb968b9bdb96d26529f9dbb0b6e05584e04ac516a40607ba13b00f03fd1fd43880d2b68a88741d7846a3e4305b5
7
+ data.tar.gz: f2f8d542f5a5c34dd13a3bc882f91cef9f526b90c0559ce71d608ab47d529b6c9b11ed24b7946589ff4c9b1dd7e7e13dce5426701cff395d97af54e494c86181
@@ -0,0 +1,13 @@
1
+ --hide-void-return
2
+ --no-private
3
+ --verbose
4
+ --title=google-apis-pubsub_v1
5
+ --markup-provider=redcarpet
6
+ --markup=markdown
7
+ --main OVERVIEW.md
8
+ lib/google/apis/pubsub_v1/*.rb
9
+ lib/google/apis/pubsub_v1.rb
10
+ -
11
+ OVERVIEW.md
12
+ CHANGELOG.md
13
+ LICENSE.md
@@ -0,0 +1,7 @@
1
+ # Release history for google-apis-pubsub_v1
2
+
3
+ ### v0.1.0 (2021-01-07)
4
+
5
+ * Regenerated using generator version 0.1.1
6
+ * Regenerated from discovery document revision 20201201
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 Pub/Sub API
2
+
3
+ This is a simple client library for version V1 of the Cloud Pub/Sub 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/pubsub.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-pubsub_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-pubsub_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/pubsub_v1"
49
+
50
+ # Create a client object
51
+ client = Google::Apis::PubsubV1::PubsubService.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 Pubsub service in particular.)
67
+
68
+ For reference information on specific calls in the Cloud Pub/Sub API, see the {Google::Apis::PubsubV1::PubsubService 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-pubsub_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://cloud.google.com/pubsub/docs) 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/pubsub_v1"
@@ -0,0 +1,39 @@
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/pubsub_v1/service.rb'
16
+ require 'google/apis/pubsub_v1/classes.rb'
17
+ require 'google/apis/pubsub_v1/representations.rb'
18
+ require 'google/apis/pubsub_v1/gem_version.rb'
19
+
20
+ module Google
21
+ module Apis
22
+ # Cloud Pub/Sub API
23
+ #
24
+ # Provides reliable, many-to-many, asynchronous messaging between applications.
25
+ #
26
+ # @see https://cloud.google.com/pubsub/docs
27
+ module PubsubV1
28
+ # Version of the Cloud Pub/Sub 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 and manage Pub/Sub topics and subscriptions
36
+ AUTH_PUBSUB = 'https://www.googleapis.com/auth/pubsub'
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,1362 @@
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 PubsubV1
24
+
25
+ # Request for the Acknowledge method.
26
+ class AcknowledgeRequest
27
+ include Google::Apis::Core::Hashable
28
+
29
+ # Required. The acknowledgment ID for the messages being acknowledged that was
30
+ # returned by the Pub/Sub system in the `Pull` response. Must not be empty.
31
+ # Corresponds to the JSON property `ackIds`
32
+ # @return [Array<String>]
33
+ attr_accessor :ack_ids
34
+
35
+ def initialize(**args)
36
+ update!(**args)
37
+ end
38
+
39
+ # Update properties of this object
40
+ def update!(**args)
41
+ @ack_ids = args[:ack_ids] if args.key?(:ack_ids)
42
+ end
43
+ end
44
+
45
+ # Associates `members` with a `role`.
46
+ class Binding
47
+ include Google::Apis::Core::Hashable
48
+
49
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
50
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
51
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
52
+ # "Summary size limit" description: "Determines if a summary is less than 100
53
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
54
+ # Requestor is owner" description: "Determines if requestor is the document
55
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
56
+ # Logic): title: "Public documents" description: "Determine whether the document
57
+ # should be publicly visible" expression: "document.type != 'private' &&
58
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
59
+ # string" description: "Create a notification string with a timestamp."
60
+ # expression: "'New message received at ' + string(document.create_time)" The
61
+ # exact variables and functions that may be referenced within an expression are
62
+ # determined by the service that evaluates it. See the service documentation for
63
+ # additional information.
64
+ # Corresponds to the JSON property `condition`
65
+ # @return [Google::Apis::PubsubV1::Expr]
66
+ attr_accessor :condition
67
+
68
+ # Specifies the identities requesting access for a Cloud Platform resource. `
69
+ # members` can have the following values: * `allUsers`: A special identifier
70
+ # that represents anyone who is on the internet; with or without a Google
71
+ # account. * `allAuthenticatedUsers`: A special identifier that represents
72
+ # anyone who is authenticated with a Google account or a service account. * `
73
+ # user:`emailid``: An email address that represents a specific Google account.
74
+ # For example, `alice@example.com` . * `serviceAccount:`emailid``: An email
75
+ # address that represents a service account. For example, `my-other-app@appspot.
76
+ # gserviceaccount.com`. * `group:`emailid``: An email address that represents a
77
+ # Google group. For example, `admins@example.com`. * `deleted:user:`emailid`?uid=
78
+ # `uniqueid``: An email address (plus unique identifier) representing a user
79
+ # that has been recently deleted. For example, `alice@example.com?uid=
80
+ # 123456789012345678901`. If the user is recovered, this value reverts to `user:`
81
+ # emailid`` and the recovered user retains the role in the binding. * `deleted:
82
+ # serviceAccount:`emailid`?uid=`uniqueid``: An email address (plus unique
83
+ # identifier) representing a service account that has been recently deleted. For
84
+ # example, `my-other-app@appspot.gserviceaccount.com?uid=123456789012345678901`.
85
+ # If the service account is undeleted, this value reverts to `serviceAccount:`
86
+ # emailid`` and the undeleted service account retains the role in the binding. *
87
+ # `deleted:group:`emailid`?uid=`uniqueid``: An email address (plus unique
88
+ # identifier) representing a Google group that has been recently deleted. For
89
+ # example, `admins@example.com?uid=123456789012345678901`. If the group is
90
+ # recovered, this value reverts to `group:`emailid`` and the recovered group
91
+ # retains the role in the binding. * `domain:`domain``: The G Suite domain (
92
+ # primary) that represents all the users of that domain. For example, `google.
93
+ # com` or `example.com`.
94
+ # Corresponds to the JSON property `members`
95
+ # @return [Array<String>]
96
+ attr_accessor :members
97
+
98
+ # Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`
99
+ # , or `roles/owner`.
100
+ # Corresponds to the JSON property `role`
101
+ # @return [String]
102
+ attr_accessor :role
103
+
104
+ def initialize(**args)
105
+ update!(**args)
106
+ end
107
+
108
+ # Update properties of this object
109
+ def update!(**args)
110
+ @condition = args[:condition] if args.key?(:condition)
111
+ @members = args[:members] if args.key?(:members)
112
+ @role = args[:role] if args.key?(:role)
113
+ end
114
+ end
115
+
116
+ # Request for the `CreateSnapshot` method.
117
+ class CreateSnapshotRequest
118
+ include Google::Apis::Core::Hashable
119
+
120
+ # See Creating and managing labels.
121
+ # Corresponds to the JSON property `labels`
122
+ # @return [Hash<String,String>]
123
+ attr_accessor :labels
124
+
125
+ # Required. The subscription whose backlog the snapshot retains. Specifically,
126
+ # the created snapshot is guaranteed to retain: (a) The existing backlog on the
127
+ # subscription. More precisely, this is defined as the messages in the
128
+ # subscription's backlog that are unacknowledged upon the successful completion
129
+ # of the `CreateSnapshot` request; as well as: (b) Any messages published to the
130
+ # subscription's topic following the successful completion of the CreateSnapshot
131
+ # request. Format is `projects/`project`/subscriptions/`sub``.
132
+ # Corresponds to the JSON property `subscription`
133
+ # @return [String]
134
+ attr_accessor :subscription
135
+
136
+ def initialize(**args)
137
+ update!(**args)
138
+ end
139
+
140
+ # Update properties of this object
141
+ def update!(**args)
142
+ @labels = args[:labels] if args.key?(:labels)
143
+ @subscription = args[:subscription] if args.key?(:subscription)
144
+ end
145
+ end
146
+
147
+ # Dead lettering is done on a best effort basis. The same message might be dead
148
+ # lettered multiple times. If validation on any of the fields fails at
149
+ # subscription creation/updation, the create/update subscription request will
150
+ # fail.
151
+ class DeadLetterPolicy
152
+ include Google::Apis::Core::Hashable
153
+
154
+ # The name of the topic to which dead letter messages should be published.
155
+ # Format is `projects/`project`/topics/`topic``.The Cloud Pub/Sub service
156
+ # account associated with the enclosing subscription's parent project (i.e.,
157
+ # service-`project_number`@gcp-sa-pubsub.iam.gserviceaccount.com) must have
158
+ # permission to Publish() to this topic. The operation will fail if the topic
159
+ # does not exist. Users should ensure that there is a subscription attached to
160
+ # this topic since messages published to a topic with no subscriptions are lost.
161
+ # Corresponds to the JSON property `deadLetterTopic`
162
+ # @return [String]
163
+ attr_accessor :dead_letter_topic
164
+
165
+ # The maximum number of delivery attempts for any message. The value must be
166
+ # between 5 and 100. The number of delivery attempts is defined as 1 + (the sum
167
+ # of number of NACKs and number of times the acknowledgement deadline has been
168
+ # exceeded for the message). A NACK is any call to ModifyAckDeadline with a 0
169
+ # deadline. Note that client libraries may automatically extend ack_deadlines.
170
+ # This field will be honored on a best effort basis. If this parameter is 0, a
171
+ # default value of 5 is used.
172
+ # Corresponds to the JSON property `maxDeliveryAttempts`
173
+ # @return [Fixnum]
174
+ attr_accessor :max_delivery_attempts
175
+
176
+ def initialize(**args)
177
+ update!(**args)
178
+ end
179
+
180
+ # Update properties of this object
181
+ def update!(**args)
182
+ @dead_letter_topic = args[:dead_letter_topic] if args.key?(:dead_letter_topic)
183
+ @max_delivery_attempts = args[:max_delivery_attempts] if args.key?(:max_delivery_attempts)
184
+ end
185
+ end
186
+
187
+ # Response for the DetachSubscription method. Reserved for future use.
188
+ class DetachSubscriptionResponse
189
+ include Google::Apis::Core::Hashable
190
+
191
+ def initialize(**args)
192
+ update!(**args)
193
+ end
194
+
195
+ # Update properties of this object
196
+ def update!(**args)
197
+ end
198
+ end
199
+
200
+ # A generic empty message that you can re-use to avoid defining duplicated empty
201
+ # messages in your APIs. A typical example is to use it as the request or the
202
+ # response type of an API method. For instance: service Foo ` rpc Bar(google.
203
+ # protobuf.Empty) returns (google.protobuf.Empty); ` The JSON representation for
204
+ # `Empty` is empty JSON object ````.
205
+ class Empty
206
+ include Google::Apis::Core::Hashable
207
+
208
+ def initialize(**args)
209
+ update!(**args)
210
+ end
211
+
212
+ # Update properties of this object
213
+ def update!(**args)
214
+ end
215
+ end
216
+
217
+ # A policy that specifies the conditions for resource expiration (i.e.,
218
+ # automatic resource deletion).
219
+ class ExpirationPolicy
220
+ include Google::Apis::Core::Hashable
221
+
222
+ # Specifies the "time-to-live" duration for an associated resource. The resource
223
+ # expires if it is not active for a period of `ttl`. The definition of "activity"
224
+ # depends on the type of the associated resource. The minimum and maximum
225
+ # allowed values for `ttl` depend on the type of the associated resource, as
226
+ # well. If `ttl` is not set, the associated resource never expires.
227
+ # Corresponds to the JSON property `ttl`
228
+ # @return [String]
229
+ attr_accessor :ttl
230
+
231
+ def initialize(**args)
232
+ update!(**args)
233
+ end
234
+
235
+ # Update properties of this object
236
+ def update!(**args)
237
+ @ttl = args[:ttl] if args.key?(:ttl)
238
+ end
239
+ end
240
+
241
+ # Represents a textual expression in the Common Expression Language (CEL) syntax.
242
+ # CEL is a C-like expression language. The syntax and semantics of CEL are
243
+ # documented at https://github.com/google/cel-spec. Example (Comparison): title:
244
+ # "Summary size limit" description: "Determines if a summary is less than 100
245
+ # chars" expression: "document.summary.size() < 100" Example (Equality): title: "
246
+ # Requestor is owner" description: "Determines if requestor is the document
247
+ # owner" expression: "document.owner == request.auth.claims.email" Example (
248
+ # Logic): title: "Public documents" description: "Determine whether the document
249
+ # should be publicly visible" expression: "document.type != 'private' &&
250
+ # document.type != 'internal'" Example (Data Manipulation): title: "Notification
251
+ # string" description: "Create a notification string with a timestamp."
252
+ # expression: "'New message received at ' + string(document.create_time)" The
253
+ # exact variables and functions that may be referenced within an expression are
254
+ # determined by the service that evaluates it. See the service documentation for
255
+ # additional information.
256
+ class Expr
257
+ include Google::Apis::Core::Hashable
258
+
259
+ # Optional. Description of the expression. This is a longer text which describes
260
+ # the expression, e.g. when hovered over it in a UI.
261
+ # Corresponds to the JSON property `description`
262
+ # @return [String]
263
+ attr_accessor :description
264
+
265
+ # Textual representation of an expression in Common Expression Language syntax.
266
+ # Corresponds to the JSON property `expression`
267
+ # @return [String]
268
+ attr_accessor :expression
269
+
270
+ # Optional. String indicating the location of the expression for error reporting,
271
+ # e.g. a file name and a position in the file.
272
+ # Corresponds to the JSON property `location`
273
+ # @return [String]
274
+ attr_accessor :location
275
+
276
+ # Optional. Title for the expression, i.e. a short string describing its purpose.
277
+ # This can be used e.g. in UIs which allow to enter the expression.
278
+ # Corresponds to the JSON property `title`
279
+ # @return [String]
280
+ attr_accessor :title
281
+
282
+ def initialize(**args)
283
+ update!(**args)
284
+ end
285
+
286
+ # Update properties of this object
287
+ def update!(**args)
288
+ @description = args[:description] if args.key?(:description)
289
+ @expression = args[:expression] if args.key?(:expression)
290
+ @location = args[:location] if args.key?(:location)
291
+ @title = args[:title] if args.key?(:title)
292
+ end
293
+ end
294
+
295
+ # Response for the `ListSnapshots` method.
296
+ class ListSnapshotsResponse
297
+ include Google::Apis::Core::Hashable
298
+
299
+ # If not empty, indicates that there may be more snapshot that match the request;
300
+ # this value should be passed in a new `ListSnapshotsRequest`.
301
+ # Corresponds to the JSON property `nextPageToken`
302
+ # @return [String]
303
+ attr_accessor :next_page_token
304
+
305
+ # The resulting snapshots.
306
+ # Corresponds to the JSON property `snapshots`
307
+ # @return [Array<Google::Apis::PubsubV1::Snapshot>]
308
+ attr_accessor :snapshots
309
+
310
+ def initialize(**args)
311
+ update!(**args)
312
+ end
313
+
314
+ # Update properties of this object
315
+ def update!(**args)
316
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
317
+ @snapshots = args[:snapshots] if args.key?(:snapshots)
318
+ end
319
+ end
320
+
321
+ # Response for the `ListSubscriptions` method.
322
+ class ListSubscriptionsResponse
323
+ include Google::Apis::Core::Hashable
324
+
325
+ # If not empty, indicates that there may be more subscriptions that match the
326
+ # request; this value should be passed in a new `ListSubscriptionsRequest` to
327
+ # get more subscriptions.
328
+ # Corresponds to the JSON property `nextPageToken`
329
+ # @return [String]
330
+ attr_accessor :next_page_token
331
+
332
+ # The subscriptions that match the request.
333
+ # Corresponds to the JSON property `subscriptions`
334
+ # @return [Array<Google::Apis::PubsubV1::Subscription>]
335
+ attr_accessor :subscriptions
336
+
337
+ def initialize(**args)
338
+ update!(**args)
339
+ end
340
+
341
+ # Update properties of this object
342
+ def update!(**args)
343
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
344
+ @subscriptions = args[:subscriptions] if args.key?(:subscriptions)
345
+ end
346
+ end
347
+
348
+ # Response for the `ListTopicSnapshots` method.
349
+ class ListTopicSnapshotsResponse
350
+ include Google::Apis::Core::Hashable
351
+
352
+ # If not empty, indicates that there may be more snapshots that match the
353
+ # request; this value should be passed in a new `ListTopicSnapshotsRequest` to
354
+ # get more snapshots.
355
+ # Corresponds to the JSON property `nextPageToken`
356
+ # @return [String]
357
+ attr_accessor :next_page_token
358
+
359
+ # The names of the snapshots that match the request.
360
+ # Corresponds to the JSON property `snapshots`
361
+ # @return [Array<String>]
362
+ attr_accessor :snapshots
363
+
364
+ def initialize(**args)
365
+ update!(**args)
366
+ end
367
+
368
+ # Update properties of this object
369
+ def update!(**args)
370
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
371
+ @snapshots = args[:snapshots] if args.key?(:snapshots)
372
+ end
373
+ end
374
+
375
+ # Response for the `ListTopicSubscriptions` method.
376
+ class ListTopicSubscriptionsResponse
377
+ include Google::Apis::Core::Hashable
378
+
379
+ # If not empty, indicates that there may be more subscriptions that match the
380
+ # request; this value should be passed in a new `ListTopicSubscriptionsRequest`
381
+ # to get more subscriptions.
382
+ # Corresponds to the JSON property `nextPageToken`
383
+ # @return [String]
384
+ attr_accessor :next_page_token
385
+
386
+ # The names of subscriptions attached to the topic specified in the request.
387
+ # Corresponds to the JSON property `subscriptions`
388
+ # @return [Array<String>]
389
+ attr_accessor :subscriptions
390
+
391
+ def initialize(**args)
392
+ update!(**args)
393
+ end
394
+
395
+ # Update properties of this object
396
+ def update!(**args)
397
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
398
+ @subscriptions = args[:subscriptions] if args.key?(:subscriptions)
399
+ end
400
+ end
401
+
402
+ # Response for the `ListTopics` method.
403
+ class ListTopicsResponse
404
+ include Google::Apis::Core::Hashable
405
+
406
+ # If not empty, indicates that there may be more topics that match the request;
407
+ # this value should be passed in a new `ListTopicsRequest`.
408
+ # Corresponds to the JSON property `nextPageToken`
409
+ # @return [String]
410
+ attr_accessor :next_page_token
411
+
412
+ # The resulting topics.
413
+ # Corresponds to the JSON property `topics`
414
+ # @return [Array<Google::Apis::PubsubV1::Topic>]
415
+ attr_accessor :topics
416
+
417
+ def initialize(**args)
418
+ update!(**args)
419
+ end
420
+
421
+ # Update properties of this object
422
+ def update!(**args)
423
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
424
+ @topics = args[:topics] if args.key?(:topics)
425
+ end
426
+ end
427
+
428
+ # A policy constraining the storage of messages published to the topic.
429
+ class MessageStoragePolicy
430
+ include Google::Apis::Core::Hashable
431
+
432
+ # A list of IDs of GCP regions where messages that are published to the topic
433
+ # may be persisted in storage. Messages published by publishers running in non-
434
+ # allowed GCP regions (or running outside of GCP altogether) will be routed for
435
+ # storage in one of the allowed regions. An empty list means that no regions are
436
+ # allowed, and is not a valid configuration.
437
+ # Corresponds to the JSON property `allowedPersistenceRegions`
438
+ # @return [Array<String>]
439
+ attr_accessor :allowed_persistence_regions
440
+
441
+ def initialize(**args)
442
+ update!(**args)
443
+ end
444
+
445
+ # Update properties of this object
446
+ def update!(**args)
447
+ @allowed_persistence_regions = args[:allowed_persistence_regions] if args.key?(:allowed_persistence_regions)
448
+ end
449
+ end
450
+
451
+ # Request for the ModifyAckDeadline method.
452
+ class ModifyAckDeadlineRequest
453
+ include Google::Apis::Core::Hashable
454
+
455
+ # Required. The new ack deadline with respect to the time this request was sent
456
+ # to the Pub/Sub system. For example, if the value is 10, the new ack deadline
457
+ # will expire 10 seconds after the `ModifyAckDeadline` call was made. Specifying
458
+ # zero might immediately make the message available for delivery to another
459
+ # subscriber client. This typically results in an increase in the rate of
460
+ # message redeliveries (that is, duplicates). The minimum deadline you can
461
+ # specify is 0 seconds. The maximum deadline you can specify is 600 seconds (10
462
+ # minutes).
463
+ # Corresponds to the JSON property `ackDeadlineSeconds`
464
+ # @return [Fixnum]
465
+ attr_accessor :ack_deadline_seconds
466
+
467
+ # Required. List of acknowledgment IDs.
468
+ # Corresponds to the JSON property `ackIds`
469
+ # @return [Array<String>]
470
+ attr_accessor :ack_ids
471
+
472
+ def initialize(**args)
473
+ update!(**args)
474
+ end
475
+
476
+ # Update properties of this object
477
+ def update!(**args)
478
+ @ack_deadline_seconds = args[:ack_deadline_seconds] if args.key?(:ack_deadline_seconds)
479
+ @ack_ids = args[:ack_ids] if args.key?(:ack_ids)
480
+ end
481
+ end
482
+
483
+ # Request for the ModifyPushConfig method.
484
+ class ModifyPushConfigRequest
485
+ include Google::Apis::Core::Hashable
486
+
487
+ # Configuration for a push delivery endpoint.
488
+ # Corresponds to the JSON property `pushConfig`
489
+ # @return [Google::Apis::PubsubV1::PushConfig]
490
+ attr_accessor :push_config
491
+
492
+ def initialize(**args)
493
+ update!(**args)
494
+ end
495
+
496
+ # Update properties of this object
497
+ def update!(**args)
498
+ @push_config = args[:push_config] if args.key?(:push_config)
499
+ end
500
+ end
501
+
502
+ # Contains information needed for generating an [OpenID Connect token](https://
503
+ # developers.google.com/identity/protocols/OpenIDConnect).
504
+ class OidcToken
505
+ include Google::Apis::Core::Hashable
506
+
507
+ # Audience to be used when generating OIDC token. The audience claim identifies
508
+ # the recipients that the JWT is intended for. The audience value is a single
509
+ # case-sensitive string. Having multiple values (array) for the audience field
510
+ # is not supported. More info about the OIDC JWT token audience here: https://
511
+ # tools.ietf.org/html/rfc7519#section-4.1.3 Note: if not specified, the Push
512
+ # endpoint URL will be used.
513
+ # Corresponds to the JSON property `audience`
514
+ # @return [String]
515
+ attr_accessor :audience
516
+
517
+ # [Service account email](https://cloud.google.com/iam/docs/service-accounts) to
518
+ # be used for generating the OIDC token. The caller (for CreateSubscription,
519
+ # UpdateSubscription, and ModifyPushConfig RPCs) must have the iam.
520
+ # serviceAccounts.actAs permission for the service account.
521
+ # Corresponds to the JSON property `serviceAccountEmail`
522
+ # @return [String]
523
+ attr_accessor :service_account_email
524
+
525
+ def initialize(**args)
526
+ update!(**args)
527
+ end
528
+
529
+ # Update properties of this object
530
+ def update!(**args)
531
+ @audience = args[:audience] if args.key?(:audience)
532
+ @service_account_email = args[:service_account_email] if args.key?(:service_account_email)
533
+ end
534
+ end
535
+
536
+ # An Identity and Access Management (IAM) policy, which specifies access
537
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
538
+ # A `binding` binds one or more `members` to a single `role`. Members can be
539
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
540
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
541
+ # role or a user-created custom role. For some types of Google Cloud resources,
542
+ # a `binding` can also specify a `condition`, which is a logical expression that
543
+ # allows access to a resource only if the expression evaluates to `true`. A
544
+ # condition can add constraints based on attributes of the request, the resource,
545
+ # or both. To learn which resources support conditions in their IAM policies,
546
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
547
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
548
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
549
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
550
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
551
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
552
+ # title": "expirable access", "description": "Does not grant access after Sep
553
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
554
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
555
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
556
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
557
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
558
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
559
+ # description: Does not grant access after Sep 2020 expression: request.time <
560
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
561
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
562
+ # google.com/iam/docs/).
563
+ class Policy
564
+ include Google::Apis::Core::Hashable
565
+
566
+ # Associates a list of `members` to a `role`. Optionally, may specify a `
567
+ # condition` that determines how and when the `bindings` are applied. Each of
568
+ # the `bindings` must contain at least one member.
569
+ # Corresponds to the JSON property `bindings`
570
+ # @return [Array<Google::Apis::PubsubV1::Binding>]
571
+ attr_accessor :bindings
572
+
573
+ # `etag` is used for optimistic concurrency control as a way to help prevent
574
+ # simultaneous updates of a policy from overwriting each other. It is strongly
575
+ # suggested that systems make use of the `etag` in the read-modify-write cycle
576
+ # to perform policy updates in order to avoid race conditions: An `etag` is
577
+ # returned in the response to `getIamPolicy`, and systems are expected to put
578
+ # that etag in the request to `setIamPolicy` to ensure that their change will be
579
+ # applied to the same version of the policy. **Important:** If you use IAM
580
+ # Conditions, you must include the `etag` field whenever you call `setIamPolicy`.
581
+ # If you omit this field, then IAM allows you to overwrite a version `3` policy
582
+ # with a version `1` policy, and all of the conditions in the version `3` policy
583
+ # are lost.
584
+ # Corresponds to the JSON property `etag`
585
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
586
+ # @return [String]
587
+ attr_accessor :etag
588
+
589
+ # Specifies the format of the policy. Valid values are `0`, `1`, and `3`.
590
+ # Requests that specify an invalid value are rejected. Any operation that
591
+ # affects conditional role bindings must specify version `3`. This requirement
592
+ # applies to the following operations: * Getting a policy that includes a
593
+ # conditional role binding * Adding a conditional role binding to a policy *
594
+ # Changing a conditional role binding in a policy * Removing any role binding,
595
+ # with or without a condition, from a policy that includes conditions **
596
+ # Important:** If you use IAM Conditions, you must include the `etag` field
597
+ # whenever you call `setIamPolicy`. If you omit this field, then IAM allows you
598
+ # to overwrite a version `3` policy with a version `1` policy, and all of the
599
+ # conditions in the version `3` policy are lost. If a policy does not include
600
+ # any conditions, operations on that policy may specify any valid version or
601
+ # leave the field unset. To learn which resources support conditions in their
602
+ # IAM policies, see the [IAM documentation](https://cloud.google.com/iam/help/
603
+ # conditions/resource-policies).
604
+ # Corresponds to the JSON property `version`
605
+ # @return [Fixnum]
606
+ attr_accessor :version
607
+
608
+ def initialize(**args)
609
+ update!(**args)
610
+ end
611
+
612
+ # Update properties of this object
613
+ def update!(**args)
614
+ @bindings = args[:bindings] if args.key?(:bindings)
615
+ @etag = args[:etag] if args.key?(:etag)
616
+ @version = args[:version] if args.key?(:version)
617
+ end
618
+ end
619
+
620
+ # Request for the Publish method.
621
+ class PublishRequest
622
+ include Google::Apis::Core::Hashable
623
+
624
+ # Required. The messages to publish.
625
+ # Corresponds to the JSON property `messages`
626
+ # @return [Array<Google::Apis::PubsubV1::Message>]
627
+ attr_accessor :messages
628
+
629
+ def initialize(**args)
630
+ update!(**args)
631
+ end
632
+
633
+ # Update properties of this object
634
+ def update!(**args)
635
+ @messages = args[:messages] if args.key?(:messages)
636
+ end
637
+ end
638
+
639
+ # Response for the `Publish` method.
640
+ class PublishResponse
641
+ include Google::Apis::Core::Hashable
642
+
643
+ # The server-assigned ID of each published message, in the same order as the
644
+ # messages in the request. IDs are guaranteed to be unique within the topic.
645
+ # Corresponds to the JSON property `messageIds`
646
+ # @return [Array<String>]
647
+ attr_accessor :message_ids
648
+
649
+ def initialize(**args)
650
+ update!(**args)
651
+ end
652
+
653
+ # Update properties of this object
654
+ def update!(**args)
655
+ @message_ids = args[:message_ids] if args.key?(:message_ids)
656
+ end
657
+ end
658
+
659
+ # A message that is published by publishers and consumed by subscribers. The
660
+ # message must contain either a non-empty data field or at least one attribute.
661
+ # Note that client libraries represent this object differently depending on the
662
+ # language. See the corresponding [client library documentation](https://cloud.
663
+ # google.com/pubsub/docs/reference/libraries) for more information. See [quotas
664
+ # and limits] (https://cloud.google.com/pubsub/quotas) for more information
665
+ # about message limits.
666
+ class Message
667
+ include Google::Apis::Core::Hashable
668
+
669
+ # Attributes for this message. If this field is empty, the message must contain
670
+ # non-empty data. This can be used to filter messages on the subscription.
671
+ # Corresponds to the JSON property `attributes`
672
+ # @return [Hash<String,String>]
673
+ attr_accessor :attributes
674
+
675
+ # The message data field. If this field is empty, the message must contain at
676
+ # least one attribute.
677
+ # Corresponds to the JSON property `data`
678
+ # NOTE: Values are automatically base64 encoded/decoded in the client library.
679
+ # @return [String]
680
+ attr_accessor :data
681
+
682
+ # ID of this message, assigned by the server when the message is published.
683
+ # Guaranteed to be unique within the topic. This value may be read by a
684
+ # subscriber that receives a `PubsubMessage` via a `Pull` call or a push
685
+ # delivery. It must not be populated by the publisher in a `Publish` call.
686
+ # Corresponds to the JSON property `messageId`
687
+ # @return [String]
688
+ attr_accessor :message_id
689
+
690
+ # If non-empty, identifies related messages for which publish order should be
691
+ # respected. If a `Subscription` has `enable_message_ordering` set to `true`,
692
+ # messages published with the same non-empty `ordering_key` value will be
693
+ # delivered to subscribers in the order in which they are received by the Pub/
694
+ # Sub system. All `PubsubMessage`s published in a given `PublishRequest` must
695
+ # specify the same `ordering_key` value.
696
+ # Corresponds to the JSON property `orderingKey`
697
+ # @return [String]
698
+ attr_accessor :ordering_key
699
+
700
+ # The time at which the message was published, populated by the server when it
701
+ # receives the `Publish` call. It must not be populated by the publisher in a `
702
+ # Publish` call.
703
+ # Corresponds to the JSON property `publishTime`
704
+ # @return [String]
705
+ attr_accessor :publish_time
706
+
707
+ def initialize(**args)
708
+ update!(**args)
709
+ end
710
+
711
+ # Update properties of this object
712
+ def update!(**args)
713
+ @attributes = args[:attributes] if args.key?(:attributes)
714
+ @data = args[:data] if args.key?(:data)
715
+ @message_id = args[:message_id] if args.key?(:message_id)
716
+ @ordering_key = args[:ordering_key] if args.key?(:ordering_key)
717
+ @publish_time = args[:publish_time] if args.key?(:publish_time)
718
+ end
719
+ end
720
+
721
+ # Request for the `Pull` method.
722
+ class PullRequest
723
+ include Google::Apis::Core::Hashable
724
+
725
+ # Required. The maximum number of messages to return for this request. Must be a
726
+ # positive integer. The Pub/Sub system may return fewer than the number
727
+ # specified.
728
+ # Corresponds to the JSON property `maxMessages`
729
+ # @return [Fixnum]
730
+ attr_accessor :max_messages
731
+
732
+ # Optional. If this field set to true, the system will respond immediately even
733
+ # if it there are no messages available to return in the `Pull` response.
734
+ # Otherwise, the system may wait (for a bounded amount of time) until at least
735
+ # one message is available, rather than returning no messages. Warning: setting
736
+ # this field to `true` is discouraged because it adversely impacts the
737
+ # performance of `Pull` operations. We recommend that users do not set this
738
+ # field.
739
+ # Corresponds to the JSON property `returnImmediately`
740
+ # @return [Boolean]
741
+ attr_accessor :return_immediately
742
+ alias_method :return_immediately?, :return_immediately
743
+
744
+ def initialize(**args)
745
+ update!(**args)
746
+ end
747
+
748
+ # Update properties of this object
749
+ def update!(**args)
750
+ @max_messages = args[:max_messages] if args.key?(:max_messages)
751
+ @return_immediately = args[:return_immediately] if args.key?(:return_immediately)
752
+ end
753
+ end
754
+
755
+ # Response for the `Pull` method.
756
+ class PullResponse
757
+ include Google::Apis::Core::Hashable
758
+
759
+ # Received Pub/Sub messages. The list will be empty if there are no more
760
+ # messages available in the backlog. For JSON, the response can be entirely
761
+ # empty. The Pub/Sub system may return fewer than the `maxMessages` requested
762
+ # even if there are more messages available in the backlog.
763
+ # Corresponds to the JSON property `receivedMessages`
764
+ # @return [Array<Google::Apis::PubsubV1::ReceivedMessage>]
765
+ attr_accessor :received_messages
766
+
767
+ def initialize(**args)
768
+ update!(**args)
769
+ end
770
+
771
+ # Update properties of this object
772
+ def update!(**args)
773
+ @received_messages = args[:received_messages] if args.key?(:received_messages)
774
+ end
775
+ end
776
+
777
+ # Configuration for a push delivery endpoint.
778
+ class PushConfig
779
+ include Google::Apis::Core::Hashable
780
+
781
+ # Endpoint configuration attributes that can be used to control different
782
+ # aspects of the message delivery. The only currently supported attribute is `x-
783
+ # goog-version`, which you can use to change the format of the pushed message.
784
+ # This attribute indicates the version of the data expected by the endpoint.
785
+ # This controls the shape of the pushed message (i.e., its fields and metadata).
786
+ # If not present during the `CreateSubscription` call, it will default to the
787
+ # version of the Pub/Sub API used to make such call. If not present in a `
788
+ # ModifyPushConfig` call, its value will not be changed. `GetSubscription` calls
789
+ # will always return a valid version, even if the subscription was created
790
+ # without this attribute. The only supported values for the `x-goog-version`
791
+ # attribute are: * `v1beta1`: uses the push format defined in the v1beta1 Pub/
792
+ # Sub API. * `v1` or `v1beta2`: uses the push format defined in the v1 Pub/Sub
793
+ # API. For example: attributes ` "x-goog-version": "v1" `
794
+ # Corresponds to the JSON property `attributes`
795
+ # @return [Hash<String,String>]
796
+ attr_accessor :attributes
797
+
798
+ # Contains information needed for generating an [OpenID Connect token](https://
799
+ # developers.google.com/identity/protocols/OpenIDConnect).
800
+ # Corresponds to the JSON property `oidcToken`
801
+ # @return [Google::Apis::PubsubV1::OidcToken]
802
+ attr_accessor :oidc_token
803
+
804
+ # A URL locating the endpoint to which messages should be pushed. For example, a
805
+ # Webhook endpoint might use `https://example.com/push`.
806
+ # Corresponds to the JSON property `pushEndpoint`
807
+ # @return [String]
808
+ attr_accessor :push_endpoint
809
+
810
+ def initialize(**args)
811
+ update!(**args)
812
+ end
813
+
814
+ # Update properties of this object
815
+ def update!(**args)
816
+ @attributes = args[:attributes] if args.key?(:attributes)
817
+ @oidc_token = args[:oidc_token] if args.key?(:oidc_token)
818
+ @push_endpoint = args[:push_endpoint] if args.key?(:push_endpoint)
819
+ end
820
+ end
821
+
822
+ # A message and its corresponding acknowledgment ID.
823
+ class ReceivedMessage
824
+ include Google::Apis::Core::Hashable
825
+
826
+ # This ID can be used to acknowledge the received message.
827
+ # Corresponds to the JSON property `ackId`
828
+ # @return [String]
829
+ attr_accessor :ack_id
830
+
831
+ # The approximate number of times that Cloud Pub/Sub has attempted to deliver
832
+ # the associated message to a subscriber. More precisely, this is 1 + (number of
833
+ # NACKs) + (number of ack_deadline exceeds) for this message. A NACK is any call
834
+ # to ModifyAckDeadline with a 0 deadline. An ack_deadline exceeds event is
835
+ # whenever a message is not acknowledged within ack_deadline. Note that
836
+ # ack_deadline is initially Subscription.ackDeadlineSeconds, but may get
837
+ # extended automatically by the client library. Upon the first delivery of a
838
+ # given message, `delivery_attempt` will have a value of 1. The value is
839
+ # calculated at best effort and is approximate. If a DeadLetterPolicy is not set
840
+ # on the subscription, this will be 0.
841
+ # Corresponds to the JSON property `deliveryAttempt`
842
+ # @return [Fixnum]
843
+ attr_accessor :delivery_attempt
844
+
845
+ # A message that is published by publishers and consumed by subscribers. The
846
+ # message must contain either a non-empty data field or at least one attribute.
847
+ # Note that client libraries represent this object differently depending on the
848
+ # language. See the corresponding [client library documentation](https://cloud.
849
+ # google.com/pubsub/docs/reference/libraries) for more information. See [quotas
850
+ # and limits] (https://cloud.google.com/pubsub/quotas) for more information
851
+ # about message limits.
852
+ # Corresponds to the JSON property `message`
853
+ # @return [Google::Apis::PubsubV1::Message]
854
+ attr_accessor :message
855
+
856
+ def initialize(**args)
857
+ update!(**args)
858
+ end
859
+
860
+ # Update properties of this object
861
+ def update!(**args)
862
+ @ack_id = args[:ack_id] if args.key?(:ack_id)
863
+ @delivery_attempt = args[:delivery_attempt] if args.key?(:delivery_attempt)
864
+ @message = args[:message] if args.key?(:message)
865
+ end
866
+ end
867
+
868
+ # A policy that specifies how Cloud Pub/Sub retries message delivery. Retry
869
+ # delay will be exponential based on provided minimum and maximum backoffs.
870
+ # https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be
871
+ # triggered on NACKs or acknowledgement deadline exceeded events for a given
872
+ # message. Retry Policy is implemented on a best effort basis. At times, the
873
+ # delay between consecutive deliveries may not match the configuration. That is,
874
+ # delay can be more or less than configured backoff.
875
+ class RetryPolicy
876
+ include Google::Apis::Core::Hashable
877
+
878
+ # The maximum delay between consecutive deliveries of a given message. Value
879
+ # should be between 0 and 600 seconds. Defaults to 600 seconds.
880
+ # Corresponds to the JSON property `maximumBackoff`
881
+ # @return [String]
882
+ attr_accessor :maximum_backoff
883
+
884
+ # The minimum delay between consecutive deliveries of a given message. Value
885
+ # should be between 0 and 600 seconds. Defaults to 10 seconds.
886
+ # Corresponds to the JSON property `minimumBackoff`
887
+ # @return [String]
888
+ attr_accessor :minimum_backoff
889
+
890
+ def initialize(**args)
891
+ update!(**args)
892
+ end
893
+
894
+ # Update properties of this object
895
+ def update!(**args)
896
+ @maximum_backoff = args[:maximum_backoff] if args.key?(:maximum_backoff)
897
+ @minimum_backoff = args[:minimum_backoff] if args.key?(:minimum_backoff)
898
+ end
899
+ end
900
+
901
+ # Request for the `Seek` method.
902
+ class SeekRequest
903
+ include Google::Apis::Core::Hashable
904
+
905
+ # The snapshot to seek to. The snapshot's topic must be the same as that of the
906
+ # provided subscription. Format is `projects/`project`/snapshots/`snap``.
907
+ # Corresponds to the JSON property `snapshot`
908
+ # @return [String]
909
+ attr_accessor :snapshot
910
+
911
+ # The time to seek to. Messages retained in the subscription that were published
912
+ # before this time are marked as acknowledged, and messages retained in the
913
+ # subscription that were published after this time are marked as unacknowledged.
914
+ # Note that this operation affects only those messages retained in the
915
+ # subscription (configured by the combination of `message_retention_duration`
916
+ # and `retain_acked_messages`). For example, if `time` corresponds to a point
917
+ # before the message retention window (or to a point before the system's notion
918
+ # of the subscription creation time), only retained messages will be marked as
919
+ # unacknowledged, and already-expunged messages will not be restored.
920
+ # Corresponds to the JSON property `time`
921
+ # @return [String]
922
+ attr_accessor :time
923
+
924
+ def initialize(**args)
925
+ update!(**args)
926
+ end
927
+
928
+ # Update properties of this object
929
+ def update!(**args)
930
+ @snapshot = args[:snapshot] if args.key?(:snapshot)
931
+ @time = args[:time] if args.key?(:time)
932
+ end
933
+ end
934
+
935
+ # Response for the `Seek` method (this response is empty).
936
+ class SeekResponse
937
+ include Google::Apis::Core::Hashable
938
+
939
+ def initialize(**args)
940
+ update!(**args)
941
+ end
942
+
943
+ # Update properties of this object
944
+ def update!(**args)
945
+ end
946
+ end
947
+
948
+ # Request message for `SetIamPolicy` method.
949
+ class SetIamPolicyRequest
950
+ include Google::Apis::Core::Hashable
951
+
952
+ # An Identity and Access Management (IAM) policy, which specifies access
953
+ # controls for Google Cloud resources. A `Policy` is a collection of `bindings`.
954
+ # A `binding` binds one or more `members` to a single `role`. Members can be
955
+ # user accounts, service accounts, Google groups, and domains (such as G Suite).
956
+ # A `role` is a named list of permissions; each `role` can be an IAM predefined
957
+ # role or a user-created custom role. For some types of Google Cloud resources,
958
+ # a `binding` can also specify a `condition`, which is a logical expression that
959
+ # allows access to a resource only if the expression evaluates to `true`. A
960
+ # condition can add constraints based on attributes of the request, the resource,
961
+ # or both. To learn which resources support conditions in their IAM policies,
962
+ # see the [IAM documentation](https://cloud.google.com/iam/help/conditions/
963
+ # resource-policies). **JSON example:** ` "bindings": [ ` "role": "roles/
964
+ # resourcemanager.organizationAdmin", "members": [ "user:mike@example.com", "
965
+ # group:admins@example.com", "domain:google.com", "serviceAccount:my-project-id@
966
+ # appspot.gserviceaccount.com" ] `, ` "role": "roles/resourcemanager.
967
+ # organizationViewer", "members": [ "user:eve@example.com" ], "condition": ` "
968
+ # title": "expirable access", "description": "Does not grant access after Sep
969
+ # 2020", "expression": "request.time < timestamp('2020-10-01T00:00:00.000Z')", `
970
+ # ` ], "etag": "BwWWja0YfJA=", "version": 3 ` **YAML example:** bindings: -
971
+ # members: - user:mike@example.com - group:admins@example.com - domain:google.
972
+ # com - serviceAccount:my-project-id@appspot.gserviceaccount.com role: roles/
973
+ # resourcemanager.organizationAdmin - members: - user:eve@example.com role:
974
+ # roles/resourcemanager.organizationViewer condition: title: expirable access
975
+ # description: Does not grant access after Sep 2020 expression: request.time <
976
+ # timestamp('2020-10-01T00:00:00.000Z') - etag: BwWWja0YfJA= - version: 3 For a
977
+ # description of IAM and its features, see the [IAM documentation](https://cloud.
978
+ # google.com/iam/docs/).
979
+ # Corresponds to the JSON property `policy`
980
+ # @return [Google::Apis::PubsubV1::Policy]
981
+ attr_accessor :policy
982
+
983
+ def initialize(**args)
984
+ update!(**args)
985
+ end
986
+
987
+ # Update properties of this object
988
+ def update!(**args)
989
+ @policy = args[:policy] if args.key?(:policy)
990
+ end
991
+ end
992
+
993
+ # A snapshot resource. Snapshots are used in [Seek](https://cloud.google.com/
994
+ # pubsub/docs/replay-overview) operations, which allow you to manage message
995
+ # acknowledgments in bulk. That is, you can set the acknowledgment state of
996
+ # messages in an existing subscription to the state captured by a snapshot.
997
+ class Snapshot
998
+ include Google::Apis::Core::Hashable
999
+
1000
+ # The snapshot is guaranteed to exist up until this time. A newly-created
1001
+ # snapshot expires no later than 7 days from the time of its creation. Its exact
1002
+ # lifetime is determined at creation by the existing backlog in the source
1003
+ # subscription. Specifically, the lifetime of the snapshot is `7 days - (age of
1004
+ # oldest unacked message in the subscription)`. For example, consider a
1005
+ # subscription whose oldest unacked message is 3 days old. If a snapshot is
1006
+ # created from this subscription, the snapshot -- which will always capture this
1007
+ # 3-day-old backlog as long as the snapshot exists -- will expire in 4 days. The
1008
+ # service will refuse to create a snapshot that would expire in less than 1 hour
1009
+ # after creation.
1010
+ # Corresponds to the JSON property `expireTime`
1011
+ # @return [String]
1012
+ attr_accessor :expire_time
1013
+
1014
+ # See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/
1015
+ # labels).
1016
+ # Corresponds to the JSON property `labels`
1017
+ # @return [Hash<String,String>]
1018
+ attr_accessor :labels
1019
+
1020
+ # The name of the snapshot.
1021
+ # Corresponds to the JSON property `name`
1022
+ # @return [String]
1023
+ attr_accessor :name
1024
+
1025
+ # The name of the topic from which this snapshot is retaining messages.
1026
+ # Corresponds to the JSON property `topic`
1027
+ # @return [String]
1028
+ attr_accessor :topic
1029
+
1030
+ def initialize(**args)
1031
+ update!(**args)
1032
+ end
1033
+
1034
+ # Update properties of this object
1035
+ def update!(**args)
1036
+ @expire_time = args[:expire_time] if args.key?(:expire_time)
1037
+ @labels = args[:labels] if args.key?(:labels)
1038
+ @name = args[:name] if args.key?(:name)
1039
+ @topic = args[:topic] if args.key?(:topic)
1040
+ end
1041
+ end
1042
+
1043
+ # A subscription resource.
1044
+ class Subscription
1045
+ include Google::Apis::Core::Hashable
1046
+
1047
+ # The approximate amount of time (on a best-effort basis) Pub/Sub waits for the
1048
+ # subscriber to acknowledge receipt before resending the message. In the
1049
+ # interval after the message is delivered and before it is acknowledged, it is
1050
+ # considered to be *outstanding*. During that time period, the message will not
1051
+ # be redelivered (on a best-effort basis). For pull subscriptions, this value is
1052
+ # used as the initial value for the ack deadline. To override this value for a
1053
+ # given message, call `ModifyAckDeadline` with the corresponding `ack_id` if
1054
+ # using non-streaming pull or send the `ack_id` in a `
1055
+ # StreamingModifyAckDeadlineRequest` if using streaming pull. The minimum custom
1056
+ # deadline you can specify is 10 seconds. The maximum custom deadline you can
1057
+ # specify is 600 seconds (10 minutes). If this parameter is 0, a default value
1058
+ # of 10 seconds is used. For push delivery, this value is also used to set the
1059
+ # request timeout for the call to the push endpoint. If the subscriber never
1060
+ # acknowledges the message, the Pub/Sub system will eventually redeliver the
1061
+ # message.
1062
+ # Corresponds to the JSON property `ackDeadlineSeconds`
1063
+ # @return [Fixnum]
1064
+ attr_accessor :ack_deadline_seconds
1065
+
1066
+ # Dead lettering is done on a best effort basis. The same message might be dead
1067
+ # lettered multiple times. If validation on any of the fields fails at
1068
+ # subscription creation/updation, the create/update subscription request will
1069
+ # fail.
1070
+ # Corresponds to the JSON property `deadLetterPolicy`
1071
+ # @return [Google::Apis::PubsubV1::DeadLetterPolicy]
1072
+ attr_accessor :dead_letter_policy
1073
+
1074
+ # Indicates whether the subscription is detached from its topic. Detached
1075
+ # subscriptions don't receive messages from their topic and don't retain any
1076
+ # backlog. `Pull` and `StreamingPull` requests will return FAILED_PRECONDITION.
1077
+ # If the subscription is a push subscription, pushes to the endpoint will not be
1078
+ # made.
1079
+ # Corresponds to the JSON property `detached`
1080
+ # @return [Boolean]
1081
+ attr_accessor :detached
1082
+ alias_method :detached?, :detached
1083
+
1084
+ # If true, messages published with the same `ordering_key` in `PubsubMessage`
1085
+ # will be delivered to the subscribers in the order in which they are received
1086
+ # by the Pub/Sub system. Otherwise, they may be delivered in any order.
1087
+ # Corresponds to the JSON property `enableMessageOrdering`
1088
+ # @return [Boolean]
1089
+ attr_accessor :enable_message_ordering
1090
+ alias_method :enable_message_ordering?, :enable_message_ordering
1091
+
1092
+ # A policy that specifies the conditions for resource expiration (i.e.,
1093
+ # automatic resource deletion).
1094
+ # Corresponds to the JSON property `expirationPolicy`
1095
+ # @return [Google::Apis::PubsubV1::ExpirationPolicy]
1096
+ attr_accessor :expiration_policy
1097
+
1098
+ # An expression written in the Pub/Sub [filter language](https://cloud.google.
1099
+ # com/pubsub/docs/filtering). If non-empty, then only `PubsubMessage`s whose `
1100
+ # attributes` field matches the filter are delivered on this subscription. If
1101
+ # empty, then no messages are filtered out.
1102
+ # Corresponds to the JSON property `filter`
1103
+ # @return [String]
1104
+ attr_accessor :filter
1105
+
1106
+ # See Creating and managing labels.
1107
+ # Corresponds to the JSON property `labels`
1108
+ # @return [Hash<String,String>]
1109
+ attr_accessor :labels
1110
+
1111
+ # How long to retain unacknowledged messages in the subscription's backlog, from
1112
+ # the moment a message is published. If `retain_acked_messages` is true, then
1113
+ # this also configures the retention of acknowledged messages, and thus
1114
+ # configures how far back in time a `Seek` can be done. Defaults to 7 days.
1115
+ # Cannot be more than 7 days or less than 10 minutes.
1116
+ # Corresponds to the JSON property `messageRetentionDuration`
1117
+ # @return [String]
1118
+ attr_accessor :message_retention_duration
1119
+
1120
+ # Required. The name of the subscription. It must have the format `"projects/`
1121
+ # project`/subscriptions/`subscription`"`. ``subscription`` must start with a
1122
+ # letter, and contain only letters (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`),
1123
+ # underscores (`_`), periods (`.`), tildes (`~`), plus (`+`) or percent signs (`
1124
+ # %`). It must be between 3 and 255 characters in length, and it must not start
1125
+ # with `"goog"`.
1126
+ # Corresponds to the JSON property `name`
1127
+ # @return [String]
1128
+ attr_accessor :name
1129
+
1130
+ # Configuration for a push delivery endpoint.
1131
+ # Corresponds to the JSON property `pushConfig`
1132
+ # @return [Google::Apis::PubsubV1::PushConfig]
1133
+ attr_accessor :push_config
1134
+
1135
+ # Indicates whether to retain acknowledged messages. If true, then messages are
1136
+ # not expunged from the subscription's backlog, even if they are acknowledged,
1137
+ # until they fall out of the `message_retention_duration` window. This must be
1138
+ # true if you would like to [Seek to a timestamp] (https://cloud.google.com/
1139
+ # pubsub/docs/replay-overview#seek_to_a_time).
1140
+ # Corresponds to the JSON property `retainAckedMessages`
1141
+ # @return [Boolean]
1142
+ attr_accessor :retain_acked_messages
1143
+ alias_method :retain_acked_messages?, :retain_acked_messages
1144
+
1145
+ # A policy that specifies how Cloud Pub/Sub retries message delivery. Retry
1146
+ # delay will be exponential based on provided minimum and maximum backoffs.
1147
+ # https://en.wikipedia.org/wiki/Exponential_backoff. RetryPolicy will be
1148
+ # triggered on NACKs or acknowledgement deadline exceeded events for a given
1149
+ # message. Retry Policy is implemented on a best effort basis. At times, the
1150
+ # delay between consecutive deliveries may not match the configuration. That is,
1151
+ # delay can be more or less than configured backoff.
1152
+ # Corresponds to the JSON property `retryPolicy`
1153
+ # @return [Google::Apis::PubsubV1::RetryPolicy]
1154
+ attr_accessor :retry_policy
1155
+
1156
+ # Required. The name of the topic from which this subscription is receiving
1157
+ # messages. Format is `projects/`project`/topics/`topic``. The value of this
1158
+ # field will be `_deleted-topic_` if the topic has been deleted.
1159
+ # Corresponds to the JSON property `topic`
1160
+ # @return [String]
1161
+ attr_accessor :topic
1162
+
1163
+ def initialize(**args)
1164
+ update!(**args)
1165
+ end
1166
+
1167
+ # Update properties of this object
1168
+ def update!(**args)
1169
+ @ack_deadline_seconds = args[:ack_deadline_seconds] if args.key?(:ack_deadline_seconds)
1170
+ @dead_letter_policy = args[:dead_letter_policy] if args.key?(:dead_letter_policy)
1171
+ @detached = args[:detached] if args.key?(:detached)
1172
+ @enable_message_ordering = args[:enable_message_ordering] if args.key?(:enable_message_ordering)
1173
+ @expiration_policy = args[:expiration_policy] if args.key?(:expiration_policy)
1174
+ @filter = args[:filter] if args.key?(:filter)
1175
+ @labels = args[:labels] if args.key?(:labels)
1176
+ @message_retention_duration = args[:message_retention_duration] if args.key?(:message_retention_duration)
1177
+ @name = args[:name] if args.key?(:name)
1178
+ @push_config = args[:push_config] if args.key?(:push_config)
1179
+ @retain_acked_messages = args[:retain_acked_messages] if args.key?(:retain_acked_messages)
1180
+ @retry_policy = args[:retry_policy] if args.key?(:retry_policy)
1181
+ @topic = args[:topic] if args.key?(:topic)
1182
+ end
1183
+ end
1184
+
1185
+ # Request message for `TestIamPermissions` method.
1186
+ class TestIamPermissionsRequest
1187
+ include Google::Apis::Core::Hashable
1188
+
1189
+ # The set of permissions to check for the `resource`. Permissions with wildcards
1190
+ # (such as '*' or 'storage.*') are not allowed. For more information see [IAM
1191
+ # Overview](https://cloud.google.com/iam/docs/overview#permissions).
1192
+ # Corresponds to the JSON property `permissions`
1193
+ # @return [Array<String>]
1194
+ attr_accessor :permissions
1195
+
1196
+ def initialize(**args)
1197
+ update!(**args)
1198
+ end
1199
+
1200
+ # Update properties of this object
1201
+ def update!(**args)
1202
+ @permissions = args[:permissions] if args.key?(:permissions)
1203
+ end
1204
+ end
1205
+
1206
+ # Response message for `TestIamPermissions` method.
1207
+ class TestIamPermissionsResponse
1208
+ include Google::Apis::Core::Hashable
1209
+
1210
+ # A subset of `TestPermissionsRequest.permissions` that the caller is allowed.
1211
+ # Corresponds to the JSON property `permissions`
1212
+ # @return [Array<String>]
1213
+ attr_accessor :permissions
1214
+
1215
+ def initialize(**args)
1216
+ update!(**args)
1217
+ end
1218
+
1219
+ # Update properties of this object
1220
+ def update!(**args)
1221
+ @permissions = args[:permissions] if args.key?(:permissions)
1222
+ end
1223
+ end
1224
+
1225
+ # A topic resource.
1226
+ class Topic
1227
+ include Google::Apis::Core::Hashable
1228
+
1229
+ # The resource name of the Cloud KMS CryptoKey to be used to protect access to
1230
+ # messages published on this topic. The expected format is `projects/*/locations/
1231
+ # */keyRings/*/cryptoKeys/*`.
1232
+ # Corresponds to the JSON property `kmsKeyName`
1233
+ # @return [String]
1234
+ attr_accessor :kms_key_name
1235
+
1236
+ # See [Creating and managing labels] (https://cloud.google.com/pubsub/docs/
1237
+ # labels).
1238
+ # Corresponds to the JSON property `labels`
1239
+ # @return [Hash<String,String>]
1240
+ attr_accessor :labels
1241
+
1242
+ # A policy constraining the storage of messages published to the topic.
1243
+ # Corresponds to the JSON property `messageStoragePolicy`
1244
+ # @return [Google::Apis::PubsubV1::MessageStoragePolicy]
1245
+ attr_accessor :message_storage_policy
1246
+
1247
+ # Required. The name of the topic. It must have the format `"projects/`project`/
1248
+ # topics/`topic`"`. ``topic`` must start with a letter, and contain only letters
1249
+ # (`[A-Za-z]`), numbers (`[0-9]`), dashes (`-`), underscores (`_`), periods (`.`)
1250
+ # , tildes (`~`), plus (`+`) or percent signs (`%`). It must be between 3 and
1251
+ # 255 characters in length, and it must not start with `"goog"`.
1252
+ # Corresponds to the JSON property `name`
1253
+ # @return [String]
1254
+ attr_accessor :name
1255
+
1256
+ # Reserved for future use. This field is set only in responses from the server;
1257
+ # it is ignored if it is set in any requests.
1258
+ # Corresponds to the JSON property `satisfiesPzs`
1259
+ # @return [Boolean]
1260
+ attr_accessor :satisfies_pzs
1261
+ alias_method :satisfies_pzs?, :satisfies_pzs
1262
+
1263
+ def initialize(**args)
1264
+ update!(**args)
1265
+ end
1266
+
1267
+ # Update properties of this object
1268
+ def update!(**args)
1269
+ @kms_key_name = args[:kms_key_name] if args.key?(:kms_key_name)
1270
+ @labels = args[:labels] if args.key?(:labels)
1271
+ @message_storage_policy = args[:message_storage_policy] if args.key?(:message_storage_policy)
1272
+ @name = args[:name] if args.key?(:name)
1273
+ @satisfies_pzs = args[:satisfies_pzs] if args.key?(:satisfies_pzs)
1274
+ end
1275
+ end
1276
+
1277
+ # Request for the UpdateSnapshot method.
1278
+ class UpdateSnapshotRequest
1279
+ include Google::Apis::Core::Hashable
1280
+
1281
+ # A snapshot resource. Snapshots are used in [Seek](https://cloud.google.com/
1282
+ # pubsub/docs/replay-overview) operations, which allow you to manage message
1283
+ # acknowledgments in bulk. That is, you can set the acknowledgment state of
1284
+ # messages in an existing subscription to the state captured by a snapshot.
1285
+ # Corresponds to the JSON property `snapshot`
1286
+ # @return [Google::Apis::PubsubV1::Snapshot]
1287
+ attr_accessor :snapshot
1288
+
1289
+ # Required. Indicates which fields in the provided snapshot to update. Must be
1290
+ # specified and non-empty.
1291
+ # Corresponds to the JSON property `updateMask`
1292
+ # @return [String]
1293
+ attr_accessor :update_mask
1294
+
1295
+ def initialize(**args)
1296
+ update!(**args)
1297
+ end
1298
+
1299
+ # Update properties of this object
1300
+ def update!(**args)
1301
+ @snapshot = args[:snapshot] if args.key?(:snapshot)
1302
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1303
+ end
1304
+ end
1305
+
1306
+ # Request for the UpdateSubscription method.
1307
+ class UpdateSubscriptionRequest
1308
+ include Google::Apis::Core::Hashable
1309
+
1310
+ # A subscription resource.
1311
+ # Corresponds to the JSON property `subscription`
1312
+ # @return [Google::Apis::PubsubV1::Subscription]
1313
+ attr_accessor :subscription
1314
+
1315
+ # Required. Indicates which fields in the provided subscription to update. Must
1316
+ # be specified and non-empty.
1317
+ # Corresponds to the JSON property `updateMask`
1318
+ # @return [String]
1319
+ attr_accessor :update_mask
1320
+
1321
+ def initialize(**args)
1322
+ update!(**args)
1323
+ end
1324
+
1325
+ # Update properties of this object
1326
+ def update!(**args)
1327
+ @subscription = args[:subscription] if args.key?(:subscription)
1328
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1329
+ end
1330
+ end
1331
+
1332
+ # Request for the UpdateTopic method.
1333
+ class UpdateTopicRequest
1334
+ include Google::Apis::Core::Hashable
1335
+
1336
+ # A topic resource.
1337
+ # Corresponds to the JSON property `topic`
1338
+ # @return [Google::Apis::PubsubV1::Topic]
1339
+ attr_accessor :topic
1340
+
1341
+ # Required. Indicates which fields in the provided topic to update. Must be
1342
+ # specified and non-empty. Note that if `update_mask` contains "
1343
+ # message_storage_policy" but the `message_storage_policy` is not set in the `
1344
+ # topic` provided above, then the updated value is determined by the policy
1345
+ # configured at the project or organization level.
1346
+ # Corresponds to the JSON property `updateMask`
1347
+ # @return [String]
1348
+ attr_accessor :update_mask
1349
+
1350
+ def initialize(**args)
1351
+ update!(**args)
1352
+ end
1353
+
1354
+ # Update properties of this object
1355
+ def update!(**args)
1356
+ @topic = args[:topic] if args.key?(:topic)
1357
+ @update_mask = args[:update_mask] if args.key?(:update_mask)
1358
+ end
1359
+ end
1360
+ end
1361
+ end
1362
+ end