google-cloud-billing-budgets-v1 0.2.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,381 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2022 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Api
22
+ # Required information for every language.
23
+ # @!attribute [rw] reference_docs_uri
24
+ # @return [::String]
25
+ # Link to automatically generated reference documentation. Example:
26
+ # https://cloud.google.com/nodejs/docs/reference/asset/latest
27
+ # @!attribute [rw] destinations
28
+ # @return [::Array<::Google::Api::ClientLibraryDestination>]
29
+ # The destination where API teams want this client library to be published.
30
+ class CommonLanguageSettings
31
+ include ::Google::Protobuf::MessageExts
32
+ extend ::Google::Protobuf::MessageExts::ClassMethods
33
+ end
34
+
35
+ # Details about how and where to publish client libraries.
36
+ # @!attribute [rw] version
37
+ # @return [::String]
38
+ # Version of the API to apply these settings to. This is the full protobuf
39
+ # package for the API, ending in the version element.
40
+ # Examples: "google.cloud.speech.v1" and "google.spanner.admin.database.v1".
41
+ # @!attribute [rw] launch_stage
42
+ # @return [::Google::Api::LaunchStage]
43
+ # Launch stage of this version of the API.
44
+ # @!attribute [rw] rest_numeric_enums
45
+ # @return [::Boolean]
46
+ # When using transport=rest, the client request will encode enums as
47
+ # numbers rather than strings.
48
+ # @!attribute [rw] java_settings
49
+ # @return [::Google::Api::JavaSettings]
50
+ # Settings for legacy Java features, supported in the Service YAML.
51
+ # @!attribute [rw] cpp_settings
52
+ # @return [::Google::Api::CppSettings]
53
+ # Settings for C++ client libraries.
54
+ # @!attribute [rw] php_settings
55
+ # @return [::Google::Api::PhpSettings]
56
+ # Settings for PHP client libraries.
57
+ # @!attribute [rw] python_settings
58
+ # @return [::Google::Api::PythonSettings]
59
+ # Settings for Python client libraries.
60
+ # @!attribute [rw] node_settings
61
+ # @return [::Google::Api::NodeSettings]
62
+ # Settings for Node client libraries.
63
+ # @!attribute [rw] dotnet_settings
64
+ # @return [::Google::Api::DotnetSettings]
65
+ # Settings for .NET client libraries.
66
+ # @!attribute [rw] ruby_settings
67
+ # @return [::Google::Api::RubySettings]
68
+ # Settings for Ruby client libraries.
69
+ # @!attribute [rw] go_settings
70
+ # @return [::Google::Api::GoSettings]
71
+ # Settings for Go client libraries.
72
+ class ClientLibrarySettings
73
+ include ::Google::Protobuf::MessageExts
74
+ extend ::Google::Protobuf::MessageExts::ClassMethods
75
+ end
76
+
77
+ # This message configures the settings for publishing [Google Cloud Client
78
+ # libraries](https://cloud.google.com/apis/docs/cloud-client-libraries)
79
+ # generated from the service config.
80
+ # @!attribute [rw] method_settings
81
+ # @return [::Array<::Google::Api::MethodSettings>]
82
+ # A list of API method settings, e.g. the behavior for methods that use the
83
+ # long-running operation pattern.
84
+ # @!attribute [rw] new_issue_uri
85
+ # @return [::String]
86
+ # Link to a *public* URI where users can report issues. Example:
87
+ # https://issuetracker.google.com/issues/new?component=190865&template=1161103
88
+ # @!attribute [rw] documentation_uri
89
+ # @return [::String]
90
+ # Link to product home page. Example:
91
+ # https://cloud.google.com/asset-inventory/docs/overview
92
+ # @!attribute [rw] api_short_name
93
+ # @return [::String]
94
+ # Used as a tracking tag when collecting data about the APIs developer
95
+ # relations artifacts like docs, packages delivered to package managers,
96
+ # etc. Example: "speech".
97
+ # @!attribute [rw] github_label
98
+ # @return [::String]
99
+ # GitHub label to apply to issues and pull requests opened for this API.
100
+ # @!attribute [rw] codeowner_github_teams
101
+ # @return [::Array<::String>]
102
+ # GitHub teams to be added to CODEOWNERS in the directory in GitHub
103
+ # containing source code for the client libraries for this API.
104
+ # @!attribute [rw] doc_tag_prefix
105
+ # @return [::String]
106
+ # A prefix used in sample code when demarking regions to be included in
107
+ # documentation.
108
+ # @!attribute [rw] organization
109
+ # @return [::Google::Api::ClientLibraryOrganization]
110
+ # For whom the client library is being published.
111
+ # @!attribute [rw] library_settings
112
+ # @return [::Array<::Google::Api::ClientLibrarySettings>]
113
+ # Client library settings. If the same version string appears multiple
114
+ # times in this list, then the last one wins. Settings from earlier
115
+ # settings with the same version string are discarded.
116
+ # @!attribute [rw] proto_reference_documentation_uri
117
+ # @return [::String]
118
+ # Optional link to proto reference documentation. Example:
119
+ # https://cloud.google.com/pubsub/lite/docs/reference/rpc
120
+ class Publishing
121
+ include ::Google::Protobuf::MessageExts
122
+ extend ::Google::Protobuf::MessageExts::ClassMethods
123
+ end
124
+
125
+ # Settings for Java client libraries.
126
+ # @!attribute [rw] library_package
127
+ # @return [::String]
128
+ # The package name to use in Java. Clobbers the java_package option
129
+ # set in the protobuf. This should be used **only** by APIs
130
+ # who have already set the language_settings.java.package_name" field
131
+ # in gapic.yaml. API teams should use the protobuf java_package option
132
+ # where possible.
133
+ #
134
+ # Example of a YAML configuration::
135
+ #
136
+ # publishing:
137
+ # java_settings:
138
+ # library_package: com.google.cloud.pubsub.v1
139
+ # @!attribute [rw] service_class_names
140
+ # @return [::Google::Protobuf::Map{::String => ::String}]
141
+ # Configure the Java class name to use instead of the service's for its
142
+ # corresponding generated GAPIC client. Keys are fully-qualified
143
+ # service names as they appear in the protobuf (including the full
144
+ # the language_settings.java.interface_names" field in gapic.yaml. API
145
+ # teams should otherwise use the service name as it appears in the
146
+ # protobuf.
147
+ #
148
+ # Example of a YAML configuration::
149
+ #
150
+ # publishing:
151
+ # java_settings:
152
+ # service_class_names:
153
+ # - google.pubsub.v1.Publisher: TopicAdmin
154
+ # - google.pubsub.v1.Subscriber: SubscriptionAdmin
155
+ # @!attribute [rw] common
156
+ # @return [::Google::Api::CommonLanguageSettings]
157
+ # Some settings.
158
+ class JavaSettings
159
+ include ::Google::Protobuf::MessageExts
160
+ extend ::Google::Protobuf::MessageExts::ClassMethods
161
+
162
+ # @!attribute [rw] key
163
+ # @return [::String]
164
+ # @!attribute [rw] value
165
+ # @return [::String]
166
+ class ServiceClassNamesEntry
167
+ include ::Google::Protobuf::MessageExts
168
+ extend ::Google::Protobuf::MessageExts::ClassMethods
169
+ end
170
+ end
171
+
172
+ # Settings for C++ client libraries.
173
+ # @!attribute [rw] common
174
+ # @return [::Google::Api::CommonLanguageSettings]
175
+ # Some settings.
176
+ class CppSettings
177
+ include ::Google::Protobuf::MessageExts
178
+ extend ::Google::Protobuf::MessageExts::ClassMethods
179
+ end
180
+
181
+ # Settings for Php client libraries.
182
+ # @!attribute [rw] common
183
+ # @return [::Google::Api::CommonLanguageSettings]
184
+ # Some settings.
185
+ class PhpSettings
186
+ include ::Google::Protobuf::MessageExts
187
+ extend ::Google::Protobuf::MessageExts::ClassMethods
188
+ end
189
+
190
+ # Settings for Python client libraries.
191
+ # @!attribute [rw] common
192
+ # @return [::Google::Api::CommonLanguageSettings]
193
+ # Some settings.
194
+ class PythonSettings
195
+ include ::Google::Protobuf::MessageExts
196
+ extend ::Google::Protobuf::MessageExts::ClassMethods
197
+ end
198
+
199
+ # Settings for Node client libraries.
200
+ # @!attribute [rw] common
201
+ # @return [::Google::Api::CommonLanguageSettings]
202
+ # Some settings.
203
+ class NodeSettings
204
+ include ::Google::Protobuf::MessageExts
205
+ extend ::Google::Protobuf::MessageExts::ClassMethods
206
+ end
207
+
208
+ # Settings for Dotnet client libraries.
209
+ # @!attribute [rw] common
210
+ # @return [::Google::Api::CommonLanguageSettings]
211
+ # Some settings.
212
+ # @!attribute [rw] renamed_services
213
+ # @return [::Google::Protobuf::Map{::String => ::String}]
214
+ # Map from original service names to renamed versions.
215
+ # This is used when the default generated types
216
+ # would cause a naming conflict. (Neither name is
217
+ # fully-qualified.)
218
+ # Example: Subscriber to SubscriberServiceApi.
219
+ # @!attribute [rw] renamed_resources
220
+ # @return [::Google::Protobuf::Map{::String => ::String}]
221
+ # Map from full resource types to the effective short name
222
+ # for the resource. This is used when otherwise resource
223
+ # named from different services would cause naming collisions.
224
+ # Example entry:
225
+ # "datalabeling.googleapis.com/Dataset": "DataLabelingDataset"
226
+ # @!attribute [rw] ignored_resources
227
+ # @return [::Array<::String>]
228
+ # List of full resource types to ignore during generation.
229
+ # This is typically used for API-specific Location resources,
230
+ # which should be handled by the generator as if they were actually
231
+ # the common Location resources.
232
+ # Example entry: "documentai.googleapis.com/Location"
233
+ # @!attribute [rw] forced_namespace_aliases
234
+ # @return [::Array<::String>]
235
+ # Namespaces which must be aliased in snippets due to
236
+ # a known (but non-generator-predictable) naming collision
237
+ # @!attribute [rw] handwritten_signatures
238
+ # @return [::Array<::String>]
239
+ # Method signatures (in the form "service.method(signature)")
240
+ # which are provided separately, so shouldn't be generated.
241
+ # Snippets *calling* these methods are still generated, however.
242
+ class DotnetSettings
243
+ include ::Google::Protobuf::MessageExts
244
+ extend ::Google::Protobuf::MessageExts::ClassMethods
245
+
246
+ # @!attribute [rw] key
247
+ # @return [::String]
248
+ # @!attribute [rw] value
249
+ # @return [::String]
250
+ class RenamedServicesEntry
251
+ include ::Google::Protobuf::MessageExts
252
+ extend ::Google::Protobuf::MessageExts::ClassMethods
253
+ end
254
+
255
+ # @!attribute [rw] key
256
+ # @return [::String]
257
+ # @!attribute [rw] value
258
+ # @return [::String]
259
+ class RenamedResourcesEntry
260
+ include ::Google::Protobuf::MessageExts
261
+ extend ::Google::Protobuf::MessageExts::ClassMethods
262
+ end
263
+ end
264
+
265
+ # Settings for Ruby client libraries.
266
+ # @!attribute [rw] common
267
+ # @return [::Google::Api::CommonLanguageSettings]
268
+ # Some settings.
269
+ class RubySettings
270
+ include ::Google::Protobuf::MessageExts
271
+ extend ::Google::Protobuf::MessageExts::ClassMethods
272
+ end
273
+
274
+ # Settings for Go client libraries.
275
+ # @!attribute [rw] common
276
+ # @return [::Google::Api::CommonLanguageSettings]
277
+ # Some settings.
278
+ class GoSettings
279
+ include ::Google::Protobuf::MessageExts
280
+ extend ::Google::Protobuf::MessageExts::ClassMethods
281
+ end
282
+
283
+ # Describes the generator configuration for a method.
284
+ # @!attribute [rw] selector
285
+ # @return [::String]
286
+ # The fully qualified name of the method, for which the options below apply.
287
+ # This is used to find the method to apply the options.
288
+ # @!attribute [rw] long_running
289
+ # @return [::Google::Api::MethodSettings::LongRunning]
290
+ # Describes settings to use for long-running operations when generating
291
+ # API methods for RPCs. Complements RPCs that use the annotations in
292
+ # google/longrunning/operations.proto.
293
+ #
294
+ # Example of a YAML configuration::
295
+ #
296
+ # publishing:
297
+ # method_settings:
298
+ # - selector: google.cloud.speech.v2.Speech.BatchRecognize
299
+ # long_running:
300
+ # initial_poll_delay:
301
+ # seconds: 60 # 1 minute
302
+ # poll_delay_multiplier: 1.5
303
+ # max_poll_delay:
304
+ # seconds: 360 # 6 minutes
305
+ # total_poll_timeout:
306
+ # seconds: 54000 # 90 minutes
307
+ class MethodSettings
308
+ include ::Google::Protobuf::MessageExts
309
+ extend ::Google::Protobuf::MessageExts::ClassMethods
310
+
311
+ # Describes settings to use when generating API methods that use the
312
+ # long-running operation pattern.
313
+ # All default values below are from those used in the client library
314
+ # generators (e.g.
315
+ # [Java](https://github.com/googleapis/gapic-generator-java/blob/04c2faa191a9b5a10b92392fe8482279c4404803/src/main/java/com/google/api/generator/gapic/composer/common/RetrySettingsComposer.java)).
316
+ # @!attribute [rw] initial_poll_delay
317
+ # @return [::Google::Protobuf::Duration]
318
+ # Initial delay after which the first poll request will be made.
319
+ # Default value: 5 seconds.
320
+ # @!attribute [rw] poll_delay_multiplier
321
+ # @return [::Float]
322
+ # Multiplier to gradually increase delay between subsequent polls until it
323
+ # reaches max_poll_delay.
324
+ # Default value: 1.5.
325
+ # @!attribute [rw] max_poll_delay
326
+ # @return [::Google::Protobuf::Duration]
327
+ # Maximum time between two subsequent poll requests.
328
+ # Default value: 45 seconds.
329
+ # @!attribute [rw] total_poll_timeout
330
+ # @return [::Google::Protobuf::Duration]
331
+ # Total polling timeout.
332
+ # Default value: 5 minutes.
333
+ class LongRunning
334
+ include ::Google::Protobuf::MessageExts
335
+ extend ::Google::Protobuf::MessageExts::ClassMethods
336
+ end
337
+ end
338
+
339
+ # The organization for which the client libraries are being published.
340
+ # Affects the url where generated docs are published, etc.
341
+ module ClientLibraryOrganization
342
+ # Not useful.
343
+ CLIENT_LIBRARY_ORGANIZATION_UNSPECIFIED = 0
344
+
345
+ # Google Cloud Platform Org.
346
+ CLOUD = 1
347
+
348
+ # Ads (Advertising) Org.
349
+ ADS = 2
350
+
351
+ # Photos Org.
352
+ PHOTOS = 3
353
+
354
+ # Street View Org.
355
+ STREET_VIEW = 4
356
+
357
+ # Shopping Org.
358
+ SHOPPING = 5
359
+
360
+ # Geo Org.
361
+ GEO = 6
362
+
363
+ # Generative AI - https://developers.generativeai.google
364
+ GENERATIVE_AI = 7
365
+ end
366
+
367
+ # To where should client libraries be published?
368
+ module ClientLibraryDestination
369
+ # Client libraries will neither be generated nor published to package
370
+ # managers.
371
+ CLIENT_LIBRARY_DESTINATION_UNSPECIFIED = 0
372
+
373
+ # Generate the client library in a repo under github.com/googleapis,
374
+ # but don't publish it to package managers.
375
+ GITHUB = 10
376
+
377
+ # Publish the library to package managers like nuget.org and npmjs.com.
378
+ PACKAGE_MANAGER = 20
379
+ end
380
+ end
381
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Copyright 2022 Google LLC
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # https://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ # Auto-generated by gapic-generator-ruby. DO NOT EDIT!
18
+
19
+
20
+ module Google
21
+ module Api
22
+ # The launch stage as defined by [Google Cloud Platform
23
+ # Launch Stages](https://cloud.google.com/terms/launch-stages).
24
+ module LaunchStage
25
+ # Do not use this default value.
26
+ LAUNCH_STAGE_UNSPECIFIED = 0
27
+
28
+ # The feature is not yet implemented. Users can not use it.
29
+ UNIMPLEMENTED = 6
30
+
31
+ # Prelaunch features are hidden from users and are only visible internally.
32
+ PRELAUNCH = 7
33
+
34
+ # Early Access features are limited to a closed group of testers. To use
35
+ # these features, you must sign up in advance and sign a Trusted Tester
36
+ # agreement (which includes confidentiality provisions). These features may
37
+ # be unstable, changed in backward-incompatible ways, and are not
38
+ # guaranteed to be released.
39
+ EARLY_ACCESS = 1
40
+
41
+ # Alpha is a limited availability test for releases before they are cleared
42
+ # for widespread use. By Alpha, all significant design issues are resolved
43
+ # and we are in the process of verifying functionality. Alpha customers
44
+ # need to apply for access, agree to applicable terms, and have their
45
+ # projects allowlisted. Alpha releases don't have to be feature complete,
46
+ # no SLAs are provided, and there are no technical support obligations, but
47
+ # they will be far enough along that customers can actually use them in
48
+ # test environments or for limited-use tests -- just like they would in
49
+ # normal production cases.
50
+ ALPHA = 2
51
+
52
+ # Beta is the point at which we are ready to open a release for any
53
+ # customer to use. There are no SLA or technical support obligations in a
54
+ # Beta release. Products will be complete from a feature perspective, but
55
+ # may have some open outstanding issues. Beta releases are suitable for
56
+ # limited production use cases.
57
+ BETA = 3
58
+
59
+ # GA features are open to all developers and are considered stable and
60
+ # fully qualified for production use.
61
+ GA = 4
62
+
63
+ # Deprecated features are scheduled to be shut down and removed. For more
64
+ # information, see the "Deprecation Policy" section of our [Terms of
65
+ # Service](https://cloud.google.com/terms/)
66
+ # and the [Google Cloud Platform Subject to the Deprecation
67
+ # Policy](https://cloud.google.com/terms/deprecation) documentation.
68
+ DEPRECATED = 5
69
+ end
70
+ end
71
+ end
@@ -48,6 +48,10 @@ module Google
48
48
  # @return [::Array<::Google::Cloud::Billing::Budgets::V1::ThresholdRule>]
49
49
  # Optional. Rules that trigger alerts (notifications of thresholds
50
50
  # being crossed) when spend exceeds the specified percentages of the budget.
51
+ #
52
+ # Optional for `pubsubTopic` notifications.
53
+ #
54
+ # Required if using email notifications.
51
55
  # @!attribute [rw] notifications_rule
52
56
  # @return [::Google::Cloud::Billing::Budgets::V1::NotificationsRule]
53
57
  # Optional. Rules to apply to notifications sent based on budget spend and
@@ -56,7 +60,7 @@ module Google
56
60
  # @return [::String]
57
61
  # Optional. Etag to validate that the object is unchanged for a
58
62
  # read-modify-write operation.
59
- # An empty etag will cause an update to overwrite other changes.
63
+ # An empty etag causes an update to overwrite other changes.
60
64
  class Budget
61
65
  include ::Google::Protobuf::MessageExts
62
66
  extend ::Google::Protobuf::MessageExts::ClassMethods
@@ -86,8 +90,6 @@ module Google
86
90
  # {::Google::Cloud::Billing::Budgets::V1::Filter#calendar_period Filter.calendar_period}
87
91
  # spend. At this time, the amount is automatically 100% of the last calendar
88
92
  # period's spend; that is, there are no other options yet.
89
- # Future configuration options will be described here (for example, configuring
90
- # a percentage of last period's spend).
91
93
  # LastPeriodAmount cannot be set for a budget configured with
92
94
  # a
93
95
  # {::Google::Cloud::Billing::Budgets::V1::Filter#custom_period Filter.custom_period}.
@@ -96,13 +98,28 @@ module Google
96
98
  extend ::Google::Protobuf::MessageExts::ClassMethods
97
99
  end
98
100
 
99
- # ThresholdRule contains a definition of a threshold which triggers
100
- # an alert (a notification of a threshold being crossed) to be sent when
101
- # spend goes above the specified amount.
102
- # Alerts are automatically e-mailed to users with the Billing Account
103
- # Administrator role or the Billing Account User role.
104
- # The thresholds here have no effect on notifications sent to anything
105
- # configured under `Budget.all_updates_rule`.
101
+ # ThresholdRule contains the definition of a threshold. Threshold rules define
102
+ # the triggering events used to generate a budget notification email. When a
103
+ # threshold is crossed (spend exceeds the specified percentages of the
104
+ # budget), budget alert emails are sent to the email recipients you specify
105
+ # in the
106
+ # [NotificationsRule](#notificationsrule).
107
+ #
108
+ # Threshold rules also affect the fields included in the
109
+ # [JSON data
110
+ # object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format)
111
+ # sent to a Pub/Sub topic.
112
+ #
113
+ # Threshold rules are _required_ if using email notifications.
114
+ #
115
+ # Threshold rules are _optional_ if only setting a
116
+ # [`pubsubTopic` NotificationsRule](#NotificationsRule),
117
+ # unless you want your JSON data object to include data about the thresholds
118
+ # you set.
119
+ #
120
+ # For more information, see
121
+ # [set budget threshold rules and
122
+ # actions](https://cloud.google.com/billing/docs/how-to/budgets#budget-actions).
106
123
  # @!attribute [rw] threshold_percent
107
124
  # @return [::Float]
108
125
  # Required. Send an alert when this threshold is exceeded.
@@ -138,17 +155,32 @@ module Google
138
155
  # and thresholds.
139
156
  # @!attribute [rw] pubsub_topic
140
157
  # @return [::String]
141
- # Optional. The name of the Pub/Sub topic where budget related messages will
142
- # be published, in the form `projects/{project_id}/topics/{topic_id}`.
143
- # Updates are sent at regular intervals to the topic. The topic needs to be
144
- # created before the budget is created; see
145
- # https://cloud.google.com/billing/docs/how-to/budgets#manage-notifications
146
- # for more details.
147
- # Caller is expected to have
148
- # `pubsub.topics.setIamPolicy` permission on the topic when it's set for a
149
- # budget, otherwise, the API call will fail with PERMISSION_DENIED. See
150
- # https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications
151
- # for more details on Pub/Sub roles and permissions.
158
+ # Optional. The name of the Pub/Sub topic where budget-related messages are
159
+ # published, in the form `projects/{project_id}/topics/{topic_id}`. Updates
160
+ # are sent to the topic at regular intervals; the timing of the updates is
161
+ # not dependent on the [threshold rules](#thresholdrule) you've set.
162
+ #
163
+ # Note that if you want your
164
+ # [Pub/Sub JSON
165
+ # object](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format)
166
+ # to contain data for `alertThresholdExceeded`, you need at least one
167
+ # [alert threshold rule](#thresholdrule). When you set threshold rules, you
168
+ # must also enable at least one of the email notification options, either
169
+ # using the default IAM recipients or Cloud Monitoring email notification
170
+ # channels.
171
+ #
172
+ # To use Pub/Sub topics with budgets, you must do the following:
173
+ #
174
+ # 1. Create the Pub/Sub topic
175
+ # before connecting it to your budget. For guidance, see
176
+ # [Manage programmatic budget alert
177
+ # notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications).
178
+ #
179
+ # 2. Grant the API caller the `pubsub.topics.setIamPolicy` permission on
180
+ # the Pub/Sub topic. If not set, the API call fails with PERMISSION_DENIED.
181
+ # For additional details on Pub/Sub roles and permissions, see
182
+ # [Permissions required for this
183
+ # task](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#permissions_required_for_this_task).
152
184
  # @!attribute [rw] schema_version
153
185
  # @return [::String]
154
186
  # Optional. Required when
@@ -159,14 +191,28 @@ module Google
159
191
  # https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications#notification_format.
160
192
  # @!attribute [rw] monitoring_notification_channels
161
193
  # @return [::Array<::String>]
162
- # Optional. Targets to send notifications to when a threshold is exceeded.
163
- # This is in addition to default recipients who have billing account IAM
164
- # roles. The value is the full REST resource name of a monitoring
165
- # notification channel with the form
166
- # `projects/{project_id}/notificationChannels/{channel_id}`. A maximum of 5
167
- # channels are allowed. See
168
- # https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients
169
- # for more details.
194
+ # Optional. Email targets to send notifications to when a threshold is
195
+ # exceeded. This is in addition to the `DefaultIamRecipients` who receive
196
+ # alert emails based on their billing account IAM role. The value is the full
197
+ # REST resource name of a Cloud Monitoring email notification channel with
198
+ # the form `projects/{project_id}/notificationChannels/{channel_id}`. A
199
+ # maximum of 5 email notifications are allowed.
200
+ #
201
+ # To customize budget alert email recipients with monitoring notification
202
+ # channels, you _must create the monitoring notification channels before
203
+ # you link them to a budget_. For guidance on setting up notification
204
+ # channels to use with budgets, see
205
+ # [Customize budget alert email
206
+ # recipients](https://cloud.google.com/billing/docs/how-to/budgets-notification-recipients).
207
+ #
208
+ # For Cloud Billing budget alerts, you _must use email notification
209
+ # channels_. The other types of notification channels are _not_
210
+ # supported, such as Slack, SMS, or PagerDuty. If you want to
211
+ # [send budget notifications to
212
+ # Slack](https://cloud.google.com/billing/docs/how-to/notify#send_notifications_to_slack),
213
+ # use a pubsubTopic and configure
214
+ # [programmatic
215
+ # notifications](https://cloud.google.com/billing/docs/how-to/budgets-programmatic-notifications).
170
216
  # @!attribute [rw] disable_default_iam_recipients
171
217
  # @return [::Boolean]
172
218
  # Optional. When set to true, disables default notifications sent when a
@@ -183,9 +229,15 @@ module Google
183
229
  # @return [::Array<::String>]
184
230
  # Optional. A set of projects of the form `projects/{project}`,
185
231
  # specifying that usage from only this set of projects should be
186
- # included in the budget. If omitted, the report will include all usage for
232
+ # included in the budget. If omitted, the report includes all usage for
187
233
  # the billing account, regardless of which project the usage occurred on.
188
- # Only zero or one project can be specified currently.
234
+ # @!attribute [rw] resource_ancestors
235
+ # @return [::Array<::String>]
236
+ # Optional. A set of folder and organization names of the form
237
+ # `folders/{folderId}` or `organizations/{organizationId}`, specifying that
238
+ # usage from only this set of folders and organizations should be included in
239
+ # the budget. If omitted, the report includes all usage for all
240
+ # organizations, regardless of which organization the usage occurred on.
189
241
  # @!attribute [rw] credit_types
190
242
  # @return [::Array<::String>]
191
243
  # Optional. If
@@ -205,7 +257,7 @@ module Google
205
257
  # @return [::Array<::String>]
206
258
  # Optional. A set of services of the form `services/{service_id}`,
207
259
  # specifying that usage from only this set of services should be
208
- # included in the budget. If omitted, the report will include usage for
260
+ # included in the budget. If omitted, the report includes usage for
209
261
  # all the services.
210
262
  # The service names are available through the Catalog API:
211
263
  # https://cloud.google.com/billing/v1/how-tos/catalog-api.
@@ -214,21 +266,26 @@ module Google
214
266
  # Optional. A set of subaccounts of the form `billingAccounts/{account_id}`,
215
267
  # specifying that usage from only this set of subaccounts should be included
216
268
  # in the budget. If a subaccount is set to the name of the parent account,
217
- # usage from the parent account will be included. If the field is omitted,
218
- # the report will include usage from the parent account and all subaccounts,
269
+ # usage from the parent account is included. If the field is omitted,
270
+ # the report includes usage from the parent account and all subaccounts,
219
271
  # if they exist.
220
272
  # @!attribute [rw] labels
221
273
  # @return [::Google::Protobuf::Map{::String => ::Google::Protobuf::ListValue}]
222
274
  # Optional. A single label and value pair specifying that usage from only
223
- # this set of labeled resources should be included in the budget. Currently,
224
- # multiple entries or multiple values per entry are not allowed. If omitted,
225
- # the report will include all labeled and unlabeled usage.
275
+ # this set of labeled resources should be included in the budget. If omitted,
276
+ # the report includes all labeled and unlabeled usage.
277
+ #
278
+ # An object containing a single `"key": value` pair. Example: `{ "name":
279
+ # "wrench" }`.
280
+ #
281
+ # _Currently, multiple entries or multiple values per entry are not
282
+ # allowed._
226
283
  # @!attribute [rw] calendar_period
227
284
  # @return [::Google::Cloud::Billing::Budgets::V1::CalendarPeriod]
228
285
  # Optional. Specifies to track usage for recurring calendar period.
229
- # For example, assume that CalendarPeriod.QUARTER is set. The budget will
230
- # track usage from April 1 to June 30, when the current calendar month is
231
- # April, May, June. After that, it will track usage from July 1 to
286
+ # For example, assume that CalendarPeriod.QUARTER is set. The budget
287
+ # tracks usage from April 1 to June 30, when the current calendar month is
288
+ # April, May, June. After that, it tracks usage from July 1 to
232
289
  # September 30 when the current calendar month is July, August, September,
233
290
  # so on.
234
291
  # @!attribute [rw] custom_period
@@ -291,6 +348,8 @@ module Google
291
348
  # `CalendarPeriod`". All calendar times begin at 12 AM US and Canadian
292
349
  # Pacific Time (UTC-8).
293
350
  module CalendarPeriod
351
+ # Calendar period is unset. This is the default if the budget is for a
352
+ # custom time period (CustomPeriod).
294
353
  CALENDAR_PERIOD_UNSPECIFIED = 0
295
354
 
296
355
  # A month. Month starts on the first day of each month, such as January 1,