google-apis-networksecurity_v1beta1 0.37.0 → 0.38.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)