google-apis-networksecurity_v1beta1 0.37.0 → 0.38.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.
@@ -194,6 +194,515 @@ module Google
194
194
  end
195
195
  end
196
196
 
197
+ # `AuthzPolicy` is a resource that allows to forward traffic to a callout
198
+ # backend designed to scan the traffic for security purposes.
199
+ class AuthzPolicy
200
+ include Google::Apis::Core::Hashable
201
+
202
+ # Required. Can be one of `ALLOW`, `DENY`, `CUSTOM`. When the action is `CUSTOM`,
203
+ # `customProvider` must be specified. When the action is `ALLOW`, only requests
204
+ # matching the policy will be allowed. When the action is `DENY`, only requests
205
+ # matching the policy will be denied. When a request arrives, the policies are
206
+ # evaluated in the following order: 1. If there is a `CUSTOM` policy that
207
+ # matches the request, the `CUSTOM` policy is evaluated using the custom
208
+ # authorization providers and the request is denied if the provider rejects the
209
+ # request. 2. If there are any `DENY` policies that match the request, the
210
+ # request is denied. 3. If there are no `ALLOW` policies for the resource or if
211
+ # any of the `ALLOW` policies match the request, the request is allowed. 4. Else
212
+ # the request is denied by default if none of the configured AuthzPolicies with `
213
+ # ALLOW` action match the request.
214
+ # Corresponds to the JSON property `action`
215
+ # @return [String]
216
+ attr_accessor :action
217
+
218
+ # Output only. The timestamp when the resource was created.
219
+ # Corresponds to the JSON property `createTime`
220
+ # @return [String]
221
+ attr_accessor :create_time
222
+
223
+ # Allows delegating authorization decisions to Cloud IAP or to Service
224
+ # Extensions.
225
+ # Corresponds to the JSON property `customProvider`
226
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyCustomProvider]
227
+ attr_accessor :custom_provider
228
+
229
+ # Optional. A human-readable description of the resource.
230
+ # Corresponds to the JSON property `description`
231
+ # @return [String]
232
+ attr_accessor :description
233
+
234
+ # Optional. A list of authorization HTTP rules to match against the incoming
235
+ # request. A policy match occurs when at least one HTTP rule matches the request
236
+ # or when no HTTP rules are specified in the policy. At least one HTTP Rule is
237
+ # required for Allow or Deny Action. Limited to 5 rules.
238
+ # Corresponds to the JSON property `httpRules`
239
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRule>]
240
+ attr_accessor :http_rules
241
+
242
+ # Optional. Set of labels associated with the `AuthzPolicy` resource. The format
243
+ # must comply with [the following requirements](/compute/docs/labeling-resources#
244
+ # requirements).
245
+ # Corresponds to the JSON property `labels`
246
+ # @return [Hash<String,String>]
247
+ attr_accessor :labels
248
+
249
+ # Required. Identifier. Name of the `AuthzPolicy` resource in the following
250
+ # format: `projects/`project`/locations/`location`/authzPolicies/`authz_policy``.
251
+ # Corresponds to the JSON property `name`
252
+ # @return [String]
253
+ attr_accessor :name
254
+
255
+ # Specifies the set of targets to which this policy should be applied to.
256
+ # Corresponds to the JSON property `target`
257
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyTarget]
258
+ attr_accessor :target
259
+
260
+ # Output only. The timestamp when the resource was updated.
261
+ # Corresponds to the JSON property `updateTime`
262
+ # @return [String]
263
+ attr_accessor :update_time
264
+
265
+ def initialize(**args)
266
+ update!(**args)
267
+ end
268
+
269
+ # Update properties of this object
270
+ def update!(**args)
271
+ @action = args[:action] if args.key?(:action)
272
+ @create_time = args[:create_time] if args.key?(:create_time)
273
+ @custom_provider = args[:custom_provider] if args.key?(:custom_provider)
274
+ @description = args[:description] if args.key?(:description)
275
+ @http_rules = args[:http_rules] if args.key?(:http_rules)
276
+ @labels = args[:labels] if args.key?(:labels)
277
+ @name = args[:name] if args.key?(:name)
278
+ @target = args[:target] if args.key?(:target)
279
+ @update_time = args[:update_time] if args.key?(:update_time)
280
+ end
281
+ end
282
+
283
+ # Conditions to match against the incoming request.
284
+ class AuthzPolicyAuthzRule
285
+ include Google::Apis::Core::Hashable
286
+
287
+ # Describes properties of one or more sources of a request.
288
+ # Corresponds to the JSON property `from`
289
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleFrom]
290
+ attr_accessor :from
291
+
292
+ # Describes properties of one or more targets of a request.
293
+ # Corresponds to the JSON property `to`
294
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleTo]
295
+ attr_accessor :to
296
+
297
+ # Optional. CEL expression that describes the conditions to be satisfied for the
298
+ # action. The result of the CEL expression is ANDed with the from and to. Refer
299
+ # to the CEL language reference for a list of available attributes.
300
+ # Corresponds to the JSON property `when`
301
+ # @return [String]
302
+ attr_accessor :when
303
+
304
+ def initialize(**args)
305
+ update!(**args)
306
+ end
307
+
308
+ # Update properties of this object
309
+ def update!(**args)
310
+ @from = args[:from] if args.key?(:from)
311
+ @to = args[:to] if args.key?(:to)
312
+ @when = args[:when] if args.key?(:when)
313
+ end
314
+ end
315
+
316
+ # Describes properties of one or more sources of a request.
317
+ class AuthzPolicyAuthzRuleFrom
318
+ include Google::Apis::Core::Hashable
319
+
320
+ # Optional. Describes the negated properties of request sources. Matches
321
+ # requests from sources that do not match the criteria specified in this field.
322
+ # At least one of sources or notSources must be specified.
323
+ # Corresponds to the JSON property `notSources`
324
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleFromRequestSource>]
325
+ attr_accessor :not_sources
326
+
327
+ # Optional. Describes the properties of a request's sources. At least one of
328
+ # sources or notSources must be specified. Limited to 5 sources. A match occurs
329
+ # when ANY source (in sources or notSources) matches the request. Within a
330
+ # single source, the match follows AND semantics across fields and OR semantics
331
+ # within a single field, i.e. a match occurs when ANY principal matches AND ANY
332
+ # ipBlocks match.
333
+ # Corresponds to the JSON property `sources`
334
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleFromRequestSource>]
335
+ attr_accessor :sources
336
+
337
+ def initialize(**args)
338
+ update!(**args)
339
+ end
340
+
341
+ # Update properties of this object
342
+ def update!(**args)
343
+ @not_sources = args[:not_sources] if args.key?(:not_sources)
344
+ @sources = args[:sources] if args.key?(:sources)
345
+ end
346
+ end
347
+
348
+ # Describes the properties of a single source.
349
+ class AuthzPolicyAuthzRuleFromRequestSource
350
+ include Google::Apis::Core::Hashable
351
+
352
+ # Optional. A list of identities derived from the client's certificate. This
353
+ # field will not match on a request unless mutual TLS is enabled for the
354
+ # Forwarding rule or Gateway. Each identity is a string whose value is matched
355
+ # against the URI SAN, or DNS SAN or the subject field in the client's
356
+ # certificate. The match can be exact, prefix, suffix or a substring match. One
357
+ # of exact, prefix, suffix or contains must be specified. Limited to 5
358
+ # principals.
359
+ # Corresponds to the JSON property `principals`
360
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleStringMatch>]
361
+ attr_accessor :principals
362
+
363
+ # Optional. A list of resources to match against the resource of the source VM
364
+ # of a request. Limited to 5 resources.
365
+ # Corresponds to the JSON property `resources`
366
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleRequestResource>]
367
+ attr_accessor :resources
368
+
369
+ def initialize(**args)
370
+ update!(**args)
371
+ end
372
+
373
+ # Update properties of this object
374
+ def update!(**args)
375
+ @principals = args[:principals] if args.key?(:principals)
376
+ @resources = args[:resources] if args.key?(:resources)
377
+ end
378
+ end
379
+
380
+ # Determines how a HTTP header should be matched.
381
+ class AuthzPolicyAuthzRuleHeaderMatch
382
+ include Google::Apis::Core::Hashable
383
+
384
+ # Optional. Specifies the name of the header in the request.
385
+ # Corresponds to the JSON property `name`
386
+ # @return [String]
387
+ attr_accessor :name
388
+
389
+ # Determines how a string value should be matched.
390
+ # Corresponds to the JSON property `value`
391
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleStringMatch]
392
+ attr_accessor :value
393
+
394
+ def initialize(**args)
395
+ update!(**args)
396
+ end
397
+
398
+ # Update properties of this object
399
+ def update!(**args)
400
+ @name = args[:name] if args.key?(:name)
401
+ @value = args[:value] if args.key?(:value)
402
+ end
403
+ end
404
+
405
+ # Describes the properties of a client VM resource accessing the internal
406
+ # application load balancers.
407
+ class AuthzPolicyAuthzRuleRequestResource
408
+ include Google::Apis::Core::Hashable
409
+
410
+ # Determines how a string value should be matched.
411
+ # Corresponds to the JSON property `iamServiceAccount`
412
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleStringMatch]
413
+ attr_accessor :iam_service_account
414
+
415
+ # Describes a set of resource tag value permanent IDs to match against the
416
+ # resource manager tags value associated with the source VM of a request.
417
+ # Corresponds to the JSON property `tagValueIdSet`
418
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleRequestResourceTagValueIdSet]
419
+ attr_accessor :tag_value_id_set
420
+
421
+ def initialize(**args)
422
+ update!(**args)
423
+ end
424
+
425
+ # Update properties of this object
426
+ def update!(**args)
427
+ @iam_service_account = args[:iam_service_account] if args.key?(:iam_service_account)
428
+ @tag_value_id_set = args[:tag_value_id_set] if args.key?(:tag_value_id_set)
429
+ end
430
+ end
431
+
432
+ # Describes a set of resource tag value permanent IDs to match against the
433
+ # resource manager tags value associated with the source VM of a request.
434
+ class AuthzPolicyAuthzRuleRequestResourceTagValueIdSet
435
+ include Google::Apis::Core::Hashable
436
+
437
+ # Required. A list of resource tag value permanent IDs to match against the
438
+ # resource manager tags value associated with the source VM of a request. The
439
+ # match follows AND semantics which means all the ids must match. Limited to 5
440
+ # matches.
441
+ # Corresponds to the JSON property `ids`
442
+ # @return [Array<Fixnum>]
443
+ attr_accessor :ids
444
+
445
+ def initialize(**args)
446
+ update!(**args)
447
+ end
448
+
449
+ # Update properties of this object
450
+ def update!(**args)
451
+ @ids = args[:ids] if args.key?(:ids)
452
+ end
453
+ end
454
+
455
+ # Determines how a string value should be matched.
456
+ class AuthzPolicyAuthzRuleStringMatch
457
+ include Google::Apis::Core::Hashable
458
+
459
+ # The input string must have the substring specified here. Note: empty contains
460
+ # match is not allowed, please use regex instead. Examples: * ``abc`` matches
461
+ # the value ``xyz.abc.def``
462
+ # Corresponds to the JSON property `contains`
463
+ # @return [String]
464
+ attr_accessor :contains
465
+
466
+ # The input string must match exactly the string specified here. Examples: * ``
467
+ # abc`` only matches the value ``abc``.
468
+ # Corresponds to the JSON property `exact`
469
+ # @return [String]
470
+ attr_accessor :exact
471
+
472
+ # If true, indicates the exact/prefix/suffix/contains matching should be case
473
+ # insensitive. For example, the matcher ``data`` will match both input string ``
474
+ # Data`` and ``data`` if set to true.
475
+ # Corresponds to the JSON property `ignoreCase`
476
+ # @return [Boolean]
477
+ attr_accessor :ignore_case
478
+ alias_method :ignore_case?, :ignore_case
479
+
480
+ # The input string must have the prefix specified here. Note: empty prefix is
481
+ # not allowed, please use regex instead. Examples: * ``abc`` matches the value ``
482
+ # abc.xyz``
483
+ # Corresponds to the JSON property `prefix`
484
+ # @return [String]
485
+ attr_accessor :prefix
486
+
487
+ # The input string must have the suffix specified here. Note: empty prefix is
488
+ # not allowed, please use regex instead. Examples: * ``abc`` matches the value ``
489
+ # xyz.abc``
490
+ # Corresponds to the JSON property `suffix`
491
+ # @return [String]
492
+ attr_accessor :suffix
493
+
494
+ def initialize(**args)
495
+ update!(**args)
496
+ end
497
+
498
+ # Update properties of this object
499
+ def update!(**args)
500
+ @contains = args[:contains] if args.key?(:contains)
501
+ @exact = args[:exact] if args.key?(:exact)
502
+ @ignore_case = args[:ignore_case] if args.key?(:ignore_case)
503
+ @prefix = args[:prefix] if args.key?(:prefix)
504
+ @suffix = args[:suffix] if args.key?(:suffix)
505
+ end
506
+ end
507
+
508
+ # Describes properties of one or more targets of a request.
509
+ class AuthzPolicyAuthzRuleTo
510
+ include Google::Apis::Core::Hashable
511
+
512
+ # Optional. Describes the negated properties of the targets of a request.
513
+ # Matches requests for operations that do not match the criteria specified in
514
+ # this field. At least one of operations or notOperations must be specified.
515
+ # Corresponds to the JSON property `notOperations`
516
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleToRequestOperation>]
517
+ attr_accessor :not_operations
518
+
519
+ # Optional. Describes properties of one or more targets of a request. At least
520
+ # one of operations or notOperations must be specified. Limited to 5 operations.
521
+ # A match occurs when ANY operation (in operations or notOperations) matches.
522
+ # Within an operation, the match follows AND semantics across fields and OR
523
+ # semantics within a field, i.e. a match occurs when ANY path matches AND ANY
524
+ # header matches and ANY method matches.
525
+ # Corresponds to the JSON property `operations`
526
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleToRequestOperation>]
527
+ attr_accessor :operations
528
+
529
+ def initialize(**args)
530
+ update!(**args)
531
+ end
532
+
533
+ # Update properties of this object
534
+ def update!(**args)
535
+ @not_operations = args[:not_operations] if args.key?(:not_operations)
536
+ @operations = args[:operations] if args.key?(:operations)
537
+ end
538
+ end
539
+
540
+ # Describes properties of one or more targets of a request.
541
+ class AuthzPolicyAuthzRuleToRequestOperation
542
+ include Google::Apis::Core::Hashable
543
+
544
+ # Describes a set of HTTP headers to match against.
545
+ # Corresponds to the JSON property `headerSet`
546
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleToRequestOperationHeaderSet]
547
+ attr_accessor :header_set
548
+
549
+ # Optional. A list of HTTP Hosts to match against. The match can be one of exact,
550
+ # prefix, suffix, or contains (substring match). Matches are always case
551
+ # sensitive unless the ignoreCase is set. Limited to 5 matches.
552
+ # Corresponds to the JSON property `hosts`
553
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleStringMatch>]
554
+ attr_accessor :hosts
555
+
556
+ # Optional. A list of HTTP methods to match against. Each entry must be a valid
557
+ # HTTP method name (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS). It only
558
+ # allows exact match and is always case sensitive.
559
+ # Corresponds to the JSON property `methods`
560
+ # @return [Array<String>]
561
+ attr_accessor :methods_prop
562
+
563
+ # Optional. A list of paths to match against. The match can be one of exact,
564
+ # prefix, suffix, or contains (substring match). Matches are always case
565
+ # sensitive unless the ignoreCase is set. Limited to 5 matches. Note that this
566
+ # path match includes the query parameters. For gRPC services, this should be a
567
+ # fully-qualified name of the form /package.service/method.
568
+ # Corresponds to the JSON property `paths`
569
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleStringMatch>]
570
+ attr_accessor :paths
571
+
572
+ def initialize(**args)
573
+ update!(**args)
574
+ end
575
+
576
+ # Update properties of this object
577
+ def update!(**args)
578
+ @header_set = args[:header_set] if args.key?(:header_set)
579
+ @hosts = args[:hosts] if args.key?(:hosts)
580
+ @methods_prop = args[:methods_prop] if args.key?(:methods_prop)
581
+ @paths = args[:paths] if args.key?(:paths)
582
+ end
583
+ end
584
+
585
+ # Describes a set of HTTP headers to match against.
586
+ class AuthzPolicyAuthzRuleToRequestOperationHeaderSet
587
+ include Google::Apis::Core::Hashable
588
+
589
+ # Required. A list of headers to match against in http header. The match can be
590
+ # one of exact, prefix, suffix, or contains (substring match). The match follows
591
+ # AND semantics which means all the headers must match. Matches are always case
592
+ # sensitive unless the ignoreCase is set. Limited to 5 matches.
593
+ # Corresponds to the JSON property `headers`
594
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicyAuthzRuleHeaderMatch>]
595
+ attr_accessor :headers
596
+
597
+ def initialize(**args)
598
+ update!(**args)
599
+ end
600
+
601
+ # Update properties of this object
602
+ def update!(**args)
603
+ @headers = args[:headers] if args.key?(:headers)
604
+ end
605
+ end
606
+
607
+ # Allows delegating authorization decisions to Cloud IAP or to Service
608
+ # Extensions.
609
+ class AuthzPolicyCustomProvider
610
+ include Google::Apis::Core::Hashable
611
+
612
+ # Optional. Delegate authorization decision to user authored extension. Only one
613
+ # of cloudIap or authzExtension can be specified.
614
+ # Corresponds to the JSON property `authzExtension`
615
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyCustomProviderAuthzExtension]
616
+ attr_accessor :authz_extension
617
+
618
+ # Optional. Delegates authorization decisions to Cloud IAP. Applicable only for
619
+ # managed load balancers. Enabling Cloud IAP at the AuthzPolicy level is not
620
+ # compatible with Cloud IAP settings in the BackendService. Enabling IAP in both
621
+ # places will result in request failure. Ensure that IAP is enabled in either
622
+ # the AuthzPolicy or the BackendService but not in both places.
623
+ # Corresponds to the JSON property `cloudIap`
624
+ # @return [Google::Apis::NetworksecurityV1beta1::AuthzPolicyCustomProviderCloudIap]
625
+ attr_accessor :cloud_iap
626
+
627
+ def initialize(**args)
628
+ update!(**args)
629
+ end
630
+
631
+ # Update properties of this object
632
+ def update!(**args)
633
+ @authz_extension = args[:authz_extension] if args.key?(:authz_extension)
634
+ @cloud_iap = args[:cloud_iap] if args.key?(:cloud_iap)
635
+ end
636
+ end
637
+
638
+ # Optional. Delegate authorization decision to user authored extension. Only one
639
+ # of cloudIap or authzExtension can be specified.
640
+ class AuthzPolicyCustomProviderAuthzExtension
641
+ include Google::Apis::Core::Hashable
642
+
643
+ # Required. A list of references to authorization extensions that will be
644
+ # invoked for requests matching this policy. Limited to 1 custom provider.
645
+ # Corresponds to the JSON property `resources`
646
+ # @return [Array<String>]
647
+ attr_accessor :resources
648
+
649
+ def initialize(**args)
650
+ update!(**args)
651
+ end
652
+
653
+ # Update properties of this object
654
+ def update!(**args)
655
+ @resources = args[:resources] if args.key?(:resources)
656
+ end
657
+ end
658
+
659
+ # Optional. Delegates authorization decisions to Cloud IAP. Applicable only for
660
+ # managed load balancers. Enabling Cloud IAP at the AuthzPolicy level is not
661
+ # compatible with Cloud IAP settings in the BackendService. Enabling IAP in both
662
+ # places will result in request failure. Ensure that IAP is enabled in either
663
+ # the AuthzPolicy or the BackendService but not in both places.
664
+ class AuthzPolicyCustomProviderCloudIap
665
+ include Google::Apis::Core::Hashable
666
+
667
+ def initialize(**args)
668
+ update!(**args)
669
+ end
670
+
671
+ # Update properties of this object
672
+ def update!(**args)
673
+ end
674
+ end
675
+
676
+ # Specifies the set of targets to which this policy should be applied to.
677
+ class AuthzPolicyTarget
678
+ include Google::Apis::Core::Hashable
679
+
680
+ # Required. All gateways and forwarding rules referenced by this policy and
681
+ # extensions must share the same load balancing scheme. Supported values: `
682
+ # INTERNAL_MANAGED` and `EXTERNAL_MANAGED`. For more information, refer to [
683
+ # Backend services overview](https://cloud.google.com/load-balancing/docs/
684
+ # backend-service).
685
+ # Corresponds to the JSON property `loadBalancingScheme`
686
+ # @return [String]
687
+ attr_accessor :load_balancing_scheme
688
+
689
+ # Required. A list of references to the Forwarding Rules on which this policy
690
+ # will be applied.
691
+ # Corresponds to the JSON property `resources`
692
+ # @return [Array<String>]
693
+ attr_accessor :resources
694
+
695
+ def initialize(**args)
696
+ update!(**args)
697
+ end
698
+
699
+ # Update properties of this object
700
+ def update!(**args)
701
+ @load_balancing_scheme = args[:load_balancing_scheme] if args.key?(:load_balancing_scheme)
702
+ @resources = args[:resources] if args.key?(:resources)
703
+ end
704
+ end
705
+
197
706
  # The request message for Operations.CancelOperation.
198
707
  class CancelOperationRequest
199
708
  include Google::Apis::Core::Hashable
@@ -333,6 +842,27 @@ module Google
333
842
  end
334
843
  end
335
844
 
845
+ # CustomMirroringProfile defines an action for mirroring traffic to a collector'
846
+ # s EndpointGroup
847
+ class CustomMirroringProfile
848
+ include Google::Apis::Core::Hashable
849
+
850
+ # Required. The MirroringEndpointGroup to which traffic associated with the SP
851
+ # should be mirrored.
852
+ # Corresponds to the JSON property `mirroringEndpointGroup`
853
+ # @return [String]
854
+ attr_accessor :mirroring_endpoint_group
855
+
856
+ def initialize(**args)
857
+ update!(**args)
858
+ end
859
+
860
+ # Update properties of this object
861
+ def update!(**args)
862
+ @mirroring_endpoint_group = args[:mirroring_endpoint_group] if args.key?(:mirroring_endpoint_group)
863
+ end
864
+ end
865
+
336
866
  # Specification of traffic destination attributes.
337
867
  class Destination
338
868
  include Google::Apis::Core::Hashable
@@ -1310,6 +1840,37 @@ module Google
1310
1840
  end
1311
1841
  end
1312
1842
 
1843
+ # Message for response to listing `AuthzPolicy` resources.
1844
+ class ListAuthzPoliciesResponse
1845
+ include Google::Apis::Core::Hashable
1846
+
1847
+ # The list of `AuthzPolicy` resources.
1848
+ # Corresponds to the JSON property `authzPolicies`
1849
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::AuthzPolicy>]
1850
+ attr_accessor :authz_policies
1851
+
1852
+ # A token identifying a page of results that the server returns.
1853
+ # Corresponds to the JSON property `nextPageToken`
1854
+ # @return [String]
1855
+ attr_accessor :next_page_token
1856
+
1857
+ # Locations that could not be reached.
1858
+ # Corresponds to the JSON property `unreachable`
1859
+ # @return [Array<String>]
1860
+ attr_accessor :unreachable
1861
+
1862
+ def initialize(**args)
1863
+ update!(**args)
1864
+ end
1865
+
1866
+ # Update properties of this object
1867
+ def update!(**args)
1868
+ @authz_policies = args[:authz_policies] if args.key?(:authz_policies)
1869
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1870
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
1871
+ end
1872
+ end
1873
+
1313
1874
  # Response returned by the ListClientTlsPolicies method.
1314
1875
  class ListClientTlsPoliciesResponse
1315
1876
  include Google::Apis::Core::Hashable
@@ -1459,22 +2020,128 @@ module Google
1459
2020
 
1460
2021
  # Update properties of this object
1461
2022
  def update!(**args)
1462
- @gateway_security_policy_rules = args[:gateway_security_policy_rules] if args.key?(:gateway_security_policy_rules)
2023
+ @gateway_security_policy_rules = args[:gateway_security_policy_rules] if args.key?(:gateway_security_policy_rules)
2024
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2025
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
2026
+ end
2027
+ end
2028
+
2029
+ # The response message for Locations.ListLocations.
2030
+ class ListLocationsResponse
2031
+ include Google::Apis::Core::Hashable
2032
+
2033
+ # A list of locations that matches the specified filter in the request.
2034
+ # Corresponds to the JSON property `locations`
2035
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::Location>]
2036
+ attr_accessor :locations
2037
+
2038
+ # The standard List next-page token.
2039
+ # Corresponds to the JSON property `nextPageToken`
2040
+ # @return [String]
2041
+ attr_accessor :next_page_token
2042
+
2043
+ def initialize(**args)
2044
+ update!(**args)
2045
+ end
2046
+
2047
+ # Update properties of this object
2048
+ def update!(**args)
2049
+ @locations = args[:locations] if args.key?(:locations)
2050
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2051
+ end
2052
+ end
2053
+
2054
+ # Message for response to listing MirroringDeploymentGroups
2055
+ class ListMirroringDeploymentGroupsResponse
2056
+ include Google::Apis::Core::Hashable
2057
+
2058
+ # The list of MirroringDeploymentGroup
2059
+ # Corresponds to the JSON property `mirroringDeploymentGroups`
2060
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::MirroringDeploymentGroup>]
2061
+ attr_accessor :mirroring_deployment_groups
2062
+
2063
+ # A token identifying a page of results the server should return.
2064
+ # Corresponds to the JSON property `nextPageToken`
2065
+ # @return [String]
2066
+ attr_accessor :next_page_token
2067
+
2068
+ def initialize(**args)
2069
+ update!(**args)
2070
+ end
2071
+
2072
+ # Update properties of this object
2073
+ def update!(**args)
2074
+ @mirroring_deployment_groups = args[:mirroring_deployment_groups] if args.key?(:mirroring_deployment_groups)
2075
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2076
+ end
2077
+ end
2078
+
2079
+ # Message for response to listing MirroringDeployments
2080
+ class ListMirroringDeploymentsResponse
2081
+ include Google::Apis::Core::Hashable
2082
+
2083
+ # The list of MirroringDeployment
2084
+ # Corresponds to the JSON property `mirroringDeployments`
2085
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::MirroringDeployment>]
2086
+ attr_accessor :mirroring_deployments
2087
+
2088
+ # A token identifying a page of results the server should return.
2089
+ # Corresponds to the JSON property `nextPageToken`
2090
+ # @return [String]
2091
+ attr_accessor :next_page_token
2092
+
2093
+ # Locations that could not be reached.
2094
+ # Corresponds to the JSON property `unreachable`
2095
+ # @return [Array<String>]
2096
+ attr_accessor :unreachable
2097
+
2098
+ def initialize(**args)
2099
+ update!(**args)
2100
+ end
2101
+
2102
+ # Update properties of this object
2103
+ def update!(**args)
2104
+ @mirroring_deployments = args[:mirroring_deployments] if args.key?(:mirroring_deployments)
2105
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
2106
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
2107
+ end
2108
+ end
2109
+
2110
+ # Message for response to listing MirroringEndpointGroupAssociations
2111
+ class ListMirroringEndpointGroupAssociationsResponse
2112
+ include Google::Apis::Core::Hashable
2113
+
2114
+ # The list of MirroringEndpointGroupAssociation
2115
+ # Corresponds to the JSON property `mirroringEndpointGroupAssociations`
2116
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::MirroringEndpointGroupAssociation>]
2117
+ attr_accessor :mirroring_endpoint_group_associations
2118
+
2119
+ # A token identifying a page of results the server should return.
2120
+ # Corresponds to the JSON property `nextPageToken`
2121
+ # @return [String]
2122
+ attr_accessor :next_page_token
2123
+
2124
+ def initialize(**args)
2125
+ update!(**args)
2126
+ end
2127
+
2128
+ # Update properties of this object
2129
+ def update!(**args)
2130
+ @mirroring_endpoint_group_associations = args[:mirroring_endpoint_group_associations] if args.key?(:mirroring_endpoint_group_associations)
1463
2131
  @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1464
- @unreachable = args[:unreachable] if args.key?(:unreachable)
1465
2132
  end
1466
2133
  end
1467
2134
 
1468
- # The response message for Locations.ListLocations.
1469
- class ListLocationsResponse
2135
+ # Message for response to listing MirroringEndpointGroups
2136
+ class ListMirroringEndpointGroupsResponse
1470
2137
  include Google::Apis::Core::Hashable
1471
2138
 
1472
- # A list of locations that matches the specified filter in the request.
1473
- # Corresponds to the JSON property `locations`
1474
- # @return [Array<Google::Apis::NetworksecurityV1beta1::Location>]
1475
- attr_accessor :locations
2139
+ # The list of MirroringEndpointGroup
2140
+ # Corresponds to the JSON property `mirroringEndpointGroups`
2141
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::MirroringEndpointGroup>]
2142
+ attr_accessor :mirroring_endpoint_groups
1476
2143
 
1477
- # The standard List next-page token.
2144
+ # A token identifying a page of results the server should return.
1478
2145
  # Corresponds to the JSON property `nextPageToken`
1479
2146
  # @return [String]
1480
2147
  attr_accessor :next_page_token
@@ -1485,7 +2152,7 @@ module Google
1485
2152
 
1486
2153
  # Update properties of this object
1487
2154
  def update!(**args)
1488
- @locations = args[:locations] if args.key?(:locations)
2155
+ @mirroring_endpoint_groups = args[:mirroring_endpoint_groups] if args.key?(:mirroring_endpoint_groups)
1489
2156
  @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
1490
2157
  end
1491
2158
  end
@@ -1748,6 +2415,313 @@ module Google
1748
2415
  end
1749
2416
  end
1750
2417
 
2418
+ # Message describing MirroringDeployment object
2419
+ class MirroringDeployment
2420
+ include Google::Apis::Core::Hashable
2421
+
2422
+ # Output only. [Output only] Create time stamp
2423
+ # Corresponds to the JSON property `createTime`
2424
+ # @return [String]
2425
+ attr_accessor :create_time
2426
+
2427
+ # Required. Immutable. The regional load balancer which the mirrored traffic
2428
+ # should be forwarded to. Format is: projects/`project`/regions/`region`/
2429
+ # forwardingRules/`forwardingRule`
2430
+ # Corresponds to the JSON property `forwardingRule`
2431
+ # @return [String]
2432
+ attr_accessor :forwarding_rule
2433
+
2434
+ # Optional. Labels as key value pairs
2435
+ # Corresponds to the JSON property `labels`
2436
+ # @return [Hash<String,String>]
2437
+ attr_accessor :labels
2438
+
2439
+ # Required. Immutable. The Mirroring Deployment Group that this resource is part
2440
+ # of. Format is: `projects/`project`/locations/global/mirroringDeploymentGroups/`
2441
+ # mirroringDeploymentGroup``
2442
+ # Corresponds to the JSON property `mirroringDeploymentGroup`
2443
+ # @return [String]
2444
+ attr_accessor :mirroring_deployment_group
2445
+
2446
+ # Immutable. Identifier. The name of the MirroringDeployment.
2447
+ # Corresponds to the JSON property `name`
2448
+ # @return [String]
2449
+ attr_accessor :name
2450
+
2451
+ # Output only. Whether reconciling is in progress, recommended per https://
2452
+ # google.aip.dev/128.
2453
+ # Corresponds to the JSON property `reconciling`
2454
+ # @return [Boolean]
2455
+ attr_accessor :reconciling
2456
+ alias_method :reconciling?, :reconciling
2457
+
2458
+ # Output only. Current state of the deployment.
2459
+ # Corresponds to the JSON property `state`
2460
+ # @return [String]
2461
+ attr_accessor :state
2462
+
2463
+ # Output only. [Output only] Update time stamp
2464
+ # Corresponds to the JSON property `updateTime`
2465
+ # @return [String]
2466
+ attr_accessor :update_time
2467
+
2468
+ def initialize(**args)
2469
+ update!(**args)
2470
+ end
2471
+
2472
+ # Update properties of this object
2473
+ def update!(**args)
2474
+ @create_time = args[:create_time] if args.key?(:create_time)
2475
+ @forwarding_rule = args[:forwarding_rule] if args.key?(:forwarding_rule)
2476
+ @labels = args[:labels] if args.key?(:labels)
2477
+ @mirroring_deployment_group = args[:mirroring_deployment_group] if args.key?(:mirroring_deployment_group)
2478
+ @name = args[:name] if args.key?(:name)
2479
+ @reconciling = args[:reconciling] if args.key?(:reconciling)
2480
+ @state = args[:state] if args.key?(:state)
2481
+ @update_time = args[:update_time] if args.key?(:update_time)
2482
+ end
2483
+ end
2484
+
2485
+ # Message describing MirroringDeploymentGroup object
2486
+ class MirroringDeploymentGroup
2487
+ include Google::Apis::Core::Hashable
2488
+
2489
+ # Output only. The list of Mirroring Endpoint Groups that are connected to this
2490
+ # resource.
2491
+ # Corresponds to the JSON property `connectedEndpointGroups`
2492
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::MirroringDeploymentGroupConnectedEndpointGroup>]
2493
+ attr_accessor :connected_endpoint_groups
2494
+
2495
+ # Output only. [Output only] Create time stamp
2496
+ # Corresponds to the JSON property `createTime`
2497
+ # @return [String]
2498
+ attr_accessor :create_time
2499
+
2500
+ # Optional. Labels as key value pairs
2501
+ # Corresponds to the JSON property `labels`
2502
+ # @return [Hash<String,String>]
2503
+ attr_accessor :labels
2504
+
2505
+ # Immutable. Identifier. Then name of the MirroringDeploymentGroup.
2506
+ # Corresponds to the JSON property `name`
2507
+ # @return [String]
2508
+ attr_accessor :name
2509
+
2510
+ # Required. Immutable. The network that is being used for the deployment. Format
2511
+ # is: projects/`project`/global/networks/`network`.
2512
+ # Corresponds to the JSON property `network`
2513
+ # @return [String]
2514
+ attr_accessor :network
2515
+
2516
+ # Output only. Whether reconciling is in progress, recommended per https://
2517
+ # google.aip.dev/128.
2518
+ # Corresponds to the JSON property `reconciling`
2519
+ # @return [Boolean]
2520
+ attr_accessor :reconciling
2521
+ alias_method :reconciling?, :reconciling
2522
+
2523
+ # Output only. Current state of the deployment group.
2524
+ # Corresponds to the JSON property `state`
2525
+ # @return [String]
2526
+ attr_accessor :state
2527
+
2528
+ # Output only. [Output only] Update time stamp
2529
+ # Corresponds to the JSON property `updateTime`
2530
+ # @return [String]
2531
+ attr_accessor :update_time
2532
+
2533
+ def initialize(**args)
2534
+ update!(**args)
2535
+ end
2536
+
2537
+ # Update properties of this object
2538
+ def update!(**args)
2539
+ @connected_endpoint_groups = args[:connected_endpoint_groups] if args.key?(:connected_endpoint_groups)
2540
+ @create_time = args[:create_time] if args.key?(:create_time)
2541
+ @labels = args[:labels] if args.key?(:labels)
2542
+ @name = args[:name] if args.key?(:name)
2543
+ @network = args[:network] if args.key?(:network)
2544
+ @reconciling = args[:reconciling] if args.key?(:reconciling)
2545
+ @state = args[:state] if args.key?(:state)
2546
+ @update_time = args[:update_time] if args.key?(:update_time)
2547
+ end
2548
+ end
2549
+
2550
+ # An endpoint group connected to this deployment group.
2551
+ class MirroringDeploymentGroupConnectedEndpointGroup
2552
+ include Google::Apis::Core::Hashable
2553
+
2554
+ # Output only. A connected mirroring endpoint group.
2555
+ # Corresponds to the JSON property `name`
2556
+ # @return [String]
2557
+ attr_accessor :name
2558
+
2559
+ def initialize(**args)
2560
+ update!(**args)
2561
+ end
2562
+
2563
+ # Update properties of this object
2564
+ def update!(**args)
2565
+ @name = args[:name] if args.key?(:name)
2566
+ end
2567
+ end
2568
+
2569
+ # Message describing MirroringEndpointGroup object.
2570
+ class MirroringEndpointGroup
2571
+ include Google::Apis::Core::Hashable
2572
+
2573
+ # Output only. [Output only] Create time stamp
2574
+ # Corresponds to the JSON property `createTime`
2575
+ # @return [String]
2576
+ attr_accessor :create_time
2577
+
2578
+ # Optional. Labels as key value pairs
2579
+ # Corresponds to the JSON property `labels`
2580
+ # @return [Hash<String,String>]
2581
+ attr_accessor :labels
2582
+
2583
+ # Required. Immutable. The Mirroring Deployment Group that this resource is
2584
+ # connected to. Format is: `projects/`project`/locations/global/
2585
+ # mirroringDeploymentGroups/`mirroringDeploymentGroup``
2586
+ # Corresponds to the JSON property `mirroringDeploymentGroup`
2587
+ # @return [String]
2588
+ attr_accessor :mirroring_deployment_group
2589
+
2590
+ # Immutable. Identifier. Next ID: 11 The name of the MirroringEndpointGroup.
2591
+ # Corresponds to the JSON property `name`
2592
+ # @return [String]
2593
+ attr_accessor :name
2594
+
2595
+ # Output only. Whether reconciling is in progress, recommended per https://
2596
+ # google.aip.dev/128.
2597
+ # Corresponds to the JSON property `reconciling`
2598
+ # @return [Boolean]
2599
+ attr_accessor :reconciling
2600
+ alias_method :reconciling?, :reconciling
2601
+
2602
+ # Output only. Current state of the endpoint group.
2603
+ # Corresponds to the JSON property `state`
2604
+ # @return [String]
2605
+ attr_accessor :state
2606
+
2607
+ # Output only. [Output only] Update time stamp
2608
+ # Corresponds to the JSON property `updateTime`
2609
+ # @return [String]
2610
+ attr_accessor :update_time
2611
+
2612
+ def initialize(**args)
2613
+ update!(**args)
2614
+ end
2615
+
2616
+ # Update properties of this object
2617
+ def update!(**args)
2618
+ @create_time = args[:create_time] if args.key?(:create_time)
2619
+ @labels = args[:labels] if args.key?(:labels)
2620
+ @mirroring_deployment_group = args[:mirroring_deployment_group] if args.key?(:mirroring_deployment_group)
2621
+ @name = args[:name] if args.key?(:name)
2622
+ @reconciling = args[:reconciling] if args.key?(:reconciling)
2623
+ @state = args[:state] if args.key?(:state)
2624
+ @update_time = args[:update_time] if args.key?(:update_time)
2625
+ end
2626
+ end
2627
+
2628
+ # Message describing MirroringEndpointGroupAssociation object
2629
+ class MirroringEndpointGroupAssociation
2630
+ include Google::Apis::Core::Hashable
2631
+
2632
+ # Output only. [Output only] Create time stamp
2633
+ # Corresponds to the JSON property `createTime`
2634
+ # @return [String]
2635
+ attr_accessor :create_time
2636
+
2637
+ # Optional. Labels as key value pairs
2638
+ # Corresponds to the JSON property `labels`
2639
+ # @return [Hash<String,String>]
2640
+ attr_accessor :labels
2641
+
2642
+ # Output only. The list of locations that this association is in and its details.
2643
+ # Corresponds to the JSON property `locationsDetails`
2644
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::MirroringEndpointGroupAssociationLocationDetails>]
2645
+ attr_accessor :locations_details
2646
+
2647
+ # Required. Immutable. The Mirroring Endpoint Group that this resource is
2648
+ # connected to. Format is: `projects/`project`/locations/global/
2649
+ # mirroringEndpointGroups/`mirroringEndpointGroup``
2650
+ # Corresponds to the JSON property `mirroringEndpointGroup`
2651
+ # @return [String]
2652
+ attr_accessor :mirroring_endpoint_group
2653
+
2654
+ # Immutable. Identifier. The name of the MirroringEndpointGroupAssociation.
2655
+ # Corresponds to the JSON property `name`
2656
+ # @return [String]
2657
+ attr_accessor :name
2658
+
2659
+ # Required. Immutable. The VPC network associated. Format: projects/`project`/
2660
+ # global/networks/`network`.
2661
+ # Corresponds to the JSON property `network`
2662
+ # @return [String]
2663
+ attr_accessor :network
2664
+
2665
+ # Output only. Whether reconciling is in progress, recommended per https://
2666
+ # google.aip.dev/128.
2667
+ # Corresponds to the JSON property `reconciling`
2668
+ # @return [Boolean]
2669
+ attr_accessor :reconciling
2670
+ alias_method :reconciling?, :reconciling
2671
+
2672
+ # Output only. Current state of the endpoint group association.
2673
+ # Corresponds to the JSON property `state`
2674
+ # @return [String]
2675
+ attr_accessor :state
2676
+
2677
+ # Output only. [Output only] Update time stamp
2678
+ # Corresponds to the JSON property `updateTime`
2679
+ # @return [String]
2680
+ attr_accessor :update_time
2681
+
2682
+ def initialize(**args)
2683
+ update!(**args)
2684
+ end
2685
+
2686
+ # Update properties of this object
2687
+ def update!(**args)
2688
+ @create_time = args[:create_time] if args.key?(:create_time)
2689
+ @labels = args[:labels] if args.key?(:labels)
2690
+ @locations_details = args[:locations_details] if args.key?(:locations_details)
2691
+ @mirroring_endpoint_group = args[:mirroring_endpoint_group] if args.key?(:mirroring_endpoint_group)
2692
+ @name = args[:name] if args.key?(:name)
2693
+ @network = args[:network] if args.key?(:network)
2694
+ @reconciling = args[:reconciling] if args.key?(:reconciling)
2695
+ @state = args[:state] if args.key?(:state)
2696
+ @update_time = args[:update_time] if args.key?(:update_time)
2697
+ end
2698
+ end
2699
+
2700
+ # Details about the association status in a specific cloud location.
2701
+ class MirroringEndpointGroupAssociationLocationDetails
2702
+ include Google::Apis::Core::Hashable
2703
+
2704
+ # Output only. The cloud location.
2705
+ # Corresponds to the JSON property `location`
2706
+ # @return [String]
2707
+ attr_accessor :location
2708
+
2709
+ # Output only. The association state in this location.
2710
+ # Corresponds to the JSON property `state`
2711
+ # @return [String]
2712
+ attr_accessor :state
2713
+
2714
+ def initialize(**args)
2715
+ update!(**args)
2716
+ end
2717
+
2718
+ # Update properties of this object
2719
+ def update!(**args)
2720
+ @location = args[:location] if args.key?(:location)
2721
+ @state = args[:state] if args.key?(:state)
2722
+ end
2723
+ end
2724
+
1751
2725
  # This resource represents a long-running operation that is the result of a
1752
2726
  # network API call.
1753
2727
  class Operation
@@ -1936,7 +2910,7 @@ module Google
1936
2910
  end
1937
2911
 
1938
2912
  # SecurityProfile is a resource that defines the behavior for one of many
1939
- # ProfileTypes. Next ID: 11
2913
+ # ProfileTypes. Next ID: 12
1940
2914
  class SecurityProfile
1941
2915
  include Google::Apis::Core::Hashable
1942
2916
 
@@ -1945,6 +2919,12 @@ module Google
1945
2919
  # @return [String]
1946
2920
  attr_accessor :create_time
1947
2921
 
2922
+ # CustomMirroringProfile defines an action for mirroring traffic to a collector'
2923
+ # s EndpointGroup
2924
+ # Corresponds to the JSON property `customMirroringProfile`
2925
+ # @return [Google::Apis::NetworksecurityV1beta1::CustomMirroringProfile]
2926
+ attr_accessor :custom_mirroring_profile
2927
+
1948
2928
  # Optional. An optional description of the profile. Max length 512 characters.
1949
2929
  # Corresponds to the JSON property `description`
1950
2930
  # @return [String]
@@ -1992,6 +2972,7 @@ module Google
1992
2972
  # Update properties of this object
1993
2973
  def update!(**args)
1994
2974
  @create_time = args[:create_time] if args.key?(:create_time)
2975
+ @custom_mirroring_profile = args[:custom_mirroring_profile] if args.key?(:custom_mirroring_profile)
1995
2976
  @description = args[:description] if args.key?(:description)
1996
2977
  @etag = args[:etag] if args.key?(:etag)
1997
2978
  @labels = args[:labels] if args.key?(:labels)
@@ -2003,7 +2984,7 @@ module Google
2003
2984
  end
2004
2985
 
2005
2986
  # SecurityProfileGroup is a resource that defines the behavior for various
2006
- # ProfileTypes. Next ID: 10
2987
+ # ProfileTypes. Next ID: 11
2007
2988
  class SecurityProfileGroup
2008
2989
  include Google::Apis::Core::Hashable
2009
2990
 
@@ -2012,6 +2993,12 @@ module Google
2012
2993
  # @return [String]
2013
2994
  attr_accessor :create_time
2014
2995
 
2996
+ # Optional. Reference to a SecurityProfile with the CustomMirroring
2997
+ # configuration.
2998
+ # Corresponds to the JSON property `customMirroringProfile`
2999
+ # @return [String]
3000
+ attr_accessor :custom_mirroring_profile
3001
+
2015
3002
  # Optional. An optional description of the profile group. Max length 2048
2016
3003
  # characters.
2017
3004
  # Corresponds to the JSON property `description`
@@ -2037,8 +3024,8 @@ module Google
2037
3024
  # @return [String]
2038
3025
  attr_accessor :name
2039
3026
 
2040
- # Optional. Reference to a SecurityProfile with the threat prevention
2041
- # configuration for the SecurityProfileGroup.
3027
+ # Optional. Reference to a SecurityProfile with the ThreatPrevention
3028
+ # configuration.
2042
3029
  # Corresponds to the JSON property `threatPreventionProfile`
2043
3030
  # @return [String]
2044
3031
  attr_accessor :threat_prevention_profile
@@ -2055,6 +3042,7 @@ module Google
2055
3042
  # Update properties of this object
2056
3043
  def update!(**args)
2057
3044
  @create_time = args[:create_time] if args.key?(:create_time)
3045
+ @custom_mirroring_profile = args[:custom_mirroring_profile] if args.key?(:custom_mirroring_profile)
2058
3046
  @description = args[:description] if args.key?(:description)
2059
3047
  @etag = args[:etag] if args.key?(:etag)
2060
3048
  @labels = args[:labels] if args.key?(:labels)