google-apis-networksecurity_v1beta1 0.72.0 → 0.73.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.
@@ -3435,6 +3435,37 @@ module Google
3435
3435
  end
3436
3436
  end
3437
3437
 
3438
+ # Contains a response to listing `RateLimitPolicy` resources.
3439
+ class ListRateLimitPoliciesResponse
3440
+ include Google::Apis::Core::Hashable
3441
+
3442
+ # Identifies a token for a page of results the server should return.
3443
+ # Corresponds to the JSON property `nextPageToken`
3444
+ # @return [String]
3445
+ attr_accessor :next_page_token
3446
+
3447
+ # Contains a list of `RateLimitPolicy` resources.
3448
+ # Corresponds to the JSON property `rateLimitPolicies`
3449
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicy>]
3450
+ attr_accessor :rate_limit_policies
3451
+
3452
+ # Unordered list. Lists locations that could not be reached.
3453
+ # Corresponds to the JSON property `unreachable`
3454
+ # @return [Array<String>]
3455
+ attr_accessor :unreachable
3456
+
3457
+ def initialize(**args)
3458
+ update!(**args)
3459
+ end
3460
+
3461
+ # Update properties of this object
3462
+ def update!(**args)
3463
+ @next_page_token = args[:next_page_token] if args.key?(:next_page_token)
3464
+ @rate_limit_policies = args[:rate_limit_policies] if args.key?(:rate_limit_policies)
3465
+ @unreachable = args[:unreachable] if args.key?(:unreachable)
3466
+ end
3467
+ end
3468
+
3438
3469
  # Response for `ListSACAttachments` method.
3439
3470
  class ListSacAttachmentsResponse
3440
3471
  include Google::Apis::Core::Hashable
@@ -4428,6 +4459,722 @@ module Google
4428
4459
  end
4429
4460
  end
4430
4461
 
4462
+ # Describes a `RateLimitPolicy` object.
4463
+ class RateLimitPolicy
4464
+ include Google::Apis::Core::Hashable
4465
+
4466
+ # Output only. Represents the create timestamp.
4467
+ # Corresponds to the JSON property `createTime`
4468
+ # @return [String]
4469
+ attr_accessor :create_time
4470
+
4471
+ # Optional. Provides a human-readable description of the resource.
4472
+ # Corresponds to the JSON property `description`
4473
+ # @return [String]
4474
+ attr_accessor :description
4475
+
4476
+ # Optional. Specifies a list of rate limit HTTP rules to match against the
4477
+ # incoming request.
4478
+ # Corresponds to the JSON property `httpRules`
4479
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRule>]
4480
+ attr_accessor :http_rules
4481
+
4482
+ # Optional. Stores labels as key value pairs.
4483
+ # Corresponds to the JSON property `labels`
4484
+ # @return [Hash<String,String>]
4485
+ attr_accessor :labels
4486
+
4487
+ # Identifier. Specifies the name of the `RateLimitPolicy` resource.
4488
+ # Corresponds to the JSON property `name`
4489
+ # @return [String]
4490
+ attr_accessor :name
4491
+
4492
+ # Optional. Specifies a list of rate limit buckets to be used for rate limiting.
4493
+ # Rate limit buckets will be referenced by the rate limit actions by name.
4494
+ # Corresponds to the JSON property `rateLimitBuckets`
4495
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucket>]
4496
+ attr_accessor :rate_limit_buckets
4497
+
4498
+ # Required. Specifies a list of targets to which this policy applies.
4499
+ # Corresponds to the JSON property `targets`
4500
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyTarget>]
4501
+ attr_accessor :targets
4502
+
4503
+ # Output only. Represents the update timestamp.
4504
+ # Corresponds to the JSON property `updateTime`
4505
+ # @return [String]
4506
+ attr_accessor :update_time
4507
+
4508
+ def initialize(**args)
4509
+ update!(**args)
4510
+ end
4511
+
4512
+ # Update properties of this object
4513
+ def update!(**args)
4514
+ @create_time = args[:create_time] if args.key?(:create_time)
4515
+ @description = args[:description] if args.key?(:description)
4516
+ @http_rules = args[:http_rules] if args.key?(:http_rules)
4517
+ @labels = args[:labels] if args.key?(:labels)
4518
+ @name = args[:name] if args.key?(:name)
4519
+ @rate_limit_buckets = args[:rate_limit_buckets] if args.key?(:rate_limit_buckets)
4520
+ @targets = args[:targets] if args.key?(:targets)
4521
+ @update_time = args[:update_time] if args.key?(:update_time)
4522
+ end
4523
+ end
4524
+
4525
+ # Describes properties of a rate limit bucket.
4526
+ class RateLimitPolicyRateLimitBucket
4527
+ include Google::Apis::Core::Hashable
4528
+
4529
+ # Describes a limit for enforcement.
4530
+ # Corresponds to the JSON property `defaultLimit`
4531
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketLimit]
4532
+ attr_accessor :default_limit
4533
+
4534
+ # Optional. Specifies whether the rate limit bucket is in dry-run mode.
4535
+ # Corresponds to the JSON property `dryRun`
4536
+ # @return [Boolean]
4537
+ attr_accessor :dry_run
4538
+ alias_method :dry_run?, :dry_run
4539
+
4540
+ # Required. Specifies the keys to use for rate limiting. At least one key is
4541
+ # required. If multiple keys are specified, the keys will be combined and used
4542
+ # as a single key.
4543
+ # Corresponds to the JSON property `keys`
4544
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketKey>]
4545
+ attr_accessor :keys
4546
+
4547
+ # Required. Specifies the name of the rate limit bucket. Name will be used to
4548
+ # reference the bucket in the RateLimitAction.
4549
+ # Corresponds to the JSON property `name`
4550
+ # @return [String]
4551
+ attr_accessor :name
4552
+
4553
+ # Optional. Specifies a list of user overrides to apply to the rate limit bucket.
4554
+ # Corresponds to the JSON property `userOverrides`
4555
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketUserOverride>]
4556
+ attr_accessor :user_overrides
4557
+
4558
+ def initialize(**args)
4559
+ update!(**args)
4560
+ end
4561
+
4562
+ # Update properties of this object
4563
+ def update!(**args)
4564
+ @default_limit = args[:default_limit] if args.key?(:default_limit)
4565
+ @dry_run = args[:dry_run] if args.key?(:dry_run)
4566
+ @keys = args[:keys] if args.key?(:keys)
4567
+ @name = args[:name] if args.key?(:name)
4568
+ @user_overrides = args[:user_overrides] if args.key?(:user_overrides)
4569
+ end
4570
+ end
4571
+
4572
+ # Describes the count limit for enforcement.
4573
+ class RateLimitPolicyRateLimitBucketCountLimit
4574
+ include Google::Apis::Core::Hashable
4575
+
4576
+ # Required. Specifies the maximum number of costs allowed in the specified
4577
+ # interval. Must be non-negative.
4578
+ # Corresponds to the JSON property `count`
4579
+ # @return [Fixnum]
4580
+ attr_accessor :count
4581
+
4582
+ # Required. Specifies the interval in units for which the count limit is
4583
+ # enforced. Must be positive.
4584
+ # Corresponds to the JSON property `interval`
4585
+ # @return [Fixnum]
4586
+ attr_accessor :interval
4587
+
4588
+ # Required. Specifies the unit of the interval. Defaults to MINUTES.
4589
+ # Corresponds to the JSON property `intervalUnit`
4590
+ # @return [String]
4591
+ attr_accessor :interval_unit
4592
+
4593
+ def initialize(**args)
4594
+ update!(**args)
4595
+ end
4596
+
4597
+ # Update properties of this object
4598
+ def update!(**args)
4599
+ @count = args[:count] if args.key?(:count)
4600
+ @interval = args[:interval] if args.key?(:interval)
4601
+ @interval_unit = args[:interval_unit] if args.key?(:interval_unit)
4602
+ end
4603
+ end
4604
+
4605
+ # Describes properties of a key to use for rate limiting.
4606
+ class RateLimitPolicyRateLimitBucketKey
4607
+ include Google::Apis::Core::Hashable
4608
+
4609
+ # Optional. Specifies the header name if key_type is HTTP_HEADER.
4610
+ # Corresponds to the JSON property `header`
4611
+ # @return [String]
4612
+ attr_accessor :header
4613
+
4614
+ # Required. Specifies the type of key to use for rate limiting.
4615
+ # Corresponds to the JSON property `keyType`
4616
+ # @return [String]
4617
+ attr_accessor :key_type
4618
+
4619
+ # Optional. Specifies the principal type if key_type is PRINCIPAL.
4620
+ # Corresponds to the JSON property `principalType`
4621
+ # @return [String]
4622
+ attr_accessor :principal_type
4623
+
4624
+ def initialize(**args)
4625
+ update!(**args)
4626
+ end
4627
+
4628
+ # Update properties of this object
4629
+ def update!(**args)
4630
+ @header = args[:header] if args.key?(:header)
4631
+ @key_type = args[:key_type] if args.key?(:key_type)
4632
+ @principal_type = args[:principal_type] if args.key?(:principal_type)
4633
+ end
4634
+ end
4635
+
4636
+ # Describes a limit for enforcement.
4637
+ class RateLimitPolicyRateLimitBucketLimit
4638
+ include Google::Apis::Core::Hashable
4639
+
4640
+ # Describes the count limit for enforcement.
4641
+ # Corresponds to the JSON property `countLimit`
4642
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketCountLimit]
4643
+ attr_accessor :count_limit
4644
+
4645
+ def initialize(**args)
4646
+ update!(**args)
4647
+ end
4648
+
4649
+ # Update properties of this object
4650
+ def update!(**args)
4651
+ @count_limit = args[:count_limit] if args.key?(:count_limit)
4652
+ end
4653
+ end
4654
+
4655
+ # Describes properties of a user override for the rate limit bucket.
4656
+ class RateLimitPolicyRateLimitBucketUserOverride
4657
+ include Google::Apis::Core::Hashable
4658
+
4659
+ # Describes a limit for enforcement.
4660
+ # Corresponds to the JSON property `limit`
4661
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketLimit]
4662
+ attr_accessor :limit
4663
+
4664
+ # Specifies the key to override. Key fields must match the key types specified
4665
+ # in the rate limit bucket. Key type ALL does not support overrides.
4666
+ # Corresponds to the JSON property `overrideKey`
4667
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketUserOverrideOverrideKey]
4668
+ attr_accessor :override_key
4669
+
4670
+ def initialize(**args)
4671
+ update!(**args)
4672
+ end
4673
+
4674
+ # Update properties of this object
4675
+ def update!(**args)
4676
+ @limit = args[:limit] if args.key?(:limit)
4677
+ @override_key = args[:override_key] if args.key?(:override_key)
4678
+ end
4679
+ end
4680
+
4681
+ # Specifies the key to override. Key fields must match the key types specified
4682
+ # in the rate limit bucket. Key type ALL does not support overrides.
4683
+ class RateLimitPolicyRateLimitBucketUserOverrideOverrideKey
4684
+ include Google::Apis::Core::Hashable
4685
+
4686
+ # Optional. Specifies the HTTP headers if the rate limit bucket keys contain
4687
+ # keys of type HTTP_HEADER. Number of headers and header names must match the
4688
+ # rate limit bucket key.
4689
+ # Corresponds to the JSON property `httpHeaders`
4690
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketUserOverrideOverrideKeyHttpHeader>]
4691
+ attr_accessor :http_headers
4692
+
4693
+ # Optional. Specifies the HTTP path if the rate limit bucket keys contain a key
4694
+ # of type HTTP_PATH.
4695
+ # Corresponds to the JSON property `httpPath`
4696
+ # @return [String]
4697
+ attr_accessor :http_path
4698
+
4699
+ # Optional. Specifies the MCP tool if the rate limit bucket keys contain a key
4700
+ # of type MCP_TOOL.
4701
+ # Corresponds to the JSON property `mcpTool`
4702
+ # @return [String]
4703
+ attr_accessor :mcp_tool
4704
+
4705
+ # Optional. Specifies the principals if the rate limit bucket keys contain keys
4706
+ # of PRINCIPAL. Number of principals and principal types must match the rate
4707
+ # limit bucket key.
4708
+ # Corresponds to the JSON property `principals`
4709
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitBucketUserOverrideOverrideKeyPrincipal>]
4710
+ attr_accessor :principals
4711
+
4712
+ # Optional. Specifies the source IP if the rate limit bucket keys contain a key
4713
+ # of type SOURCE_IP.
4714
+ # Corresponds to the JSON property `sourceIp`
4715
+ # @return [String]
4716
+ attr_accessor :source_ip
4717
+
4718
+ def initialize(**args)
4719
+ update!(**args)
4720
+ end
4721
+
4722
+ # Update properties of this object
4723
+ def update!(**args)
4724
+ @http_headers = args[:http_headers] if args.key?(:http_headers)
4725
+ @http_path = args[:http_path] if args.key?(:http_path)
4726
+ @mcp_tool = args[:mcp_tool] if args.key?(:mcp_tool)
4727
+ @principals = args[:principals] if args.key?(:principals)
4728
+ @source_ip = args[:source_ip] if args.key?(:source_ip)
4729
+ end
4730
+ end
4731
+
4732
+ # Specifies the key in the type HTTP header to override.
4733
+ class RateLimitPolicyRateLimitBucketUserOverrideOverrideKeyHttpHeader
4734
+ include Google::Apis::Core::Hashable
4735
+
4736
+ # Required. Specifies the header name of the key.
4737
+ # Corresponds to the JSON property `header`
4738
+ # @return [String]
4739
+ attr_accessor :header
4740
+
4741
+ # Required. Specifies the header value of the key.
4742
+ # Corresponds to the JSON property `value`
4743
+ # @return [String]
4744
+ attr_accessor :value
4745
+
4746
+ def initialize(**args)
4747
+ update!(**args)
4748
+ end
4749
+
4750
+ # Update properties of this object
4751
+ def update!(**args)
4752
+ @header = args[:header] if args.key?(:header)
4753
+ @value = args[:value] if args.key?(:value)
4754
+ end
4755
+ end
4756
+
4757
+ # Specifies the key in the type PRINCIPAL to override.
4758
+ class RateLimitPolicyRateLimitBucketUserOverrideOverrideKeyPrincipal
4759
+ include Google::Apis::Core::Hashable
4760
+
4761
+ # Required. Specifies the principal value of the key.
4762
+ # Corresponds to the JSON property `principal`
4763
+ # @return [String]
4764
+ attr_accessor :principal
4765
+
4766
+ # Required. Specifies the principal type of the key.
4767
+ # Corresponds to the JSON property `principalType`
4768
+ # @return [String]
4769
+ attr_accessor :principal_type
4770
+
4771
+ def initialize(**args)
4772
+ update!(**args)
4773
+ end
4774
+
4775
+ # Update properties of this object
4776
+ def update!(**args)
4777
+ @principal = args[:principal] if args.key?(:principal)
4778
+ @principal_type = args[:principal_type] if args.key?(:principal_type)
4779
+ end
4780
+ end
4781
+
4782
+ # Specifies conditions to match against the incoming request.
4783
+ class RateLimitPolicyRateLimitRule
4784
+ include Google::Apis::Core::Hashable
4785
+
4786
+ # Describes properties of the sources of a request.
4787
+ # Corresponds to the JSON property `from`
4788
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleFrom]
4789
+ attr_accessor :from
4790
+
4791
+ # Optional. Specifies the actions to take when this rule is matched.
4792
+ # Corresponds to the JSON property `rateLimitActions`
4793
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleRateLimitAction>]
4794
+ attr_accessor :rate_limit_actions
4795
+
4796
+ # Describes properties of the targets of a request.
4797
+ # Corresponds to the JSON property `to`
4798
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleTo]
4799
+ attr_accessor :to
4800
+
4801
+ def initialize(**args)
4802
+ update!(**args)
4803
+ end
4804
+
4805
+ # Update properties of this object
4806
+ def update!(**args)
4807
+ @from = args[:from] if args.key?(:from)
4808
+ @rate_limit_actions = args[:rate_limit_actions] if args.key?(:rate_limit_actions)
4809
+ @to = args[:to] if args.key?(:to)
4810
+ end
4811
+ end
4812
+
4813
+ # Describes properties of the sources of a request.
4814
+ class RateLimitPolicyRateLimitRuleFrom
4815
+ include Google::Apis::Core::Hashable
4816
+
4817
+ # Describes the properties of a request source.
4818
+ # Corresponds to the JSON property `notSource`
4819
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleFromSource]
4820
+ attr_accessor :not_source
4821
+
4822
+ # Describes the properties of a request source.
4823
+ # Corresponds to the JSON property `source`
4824
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleFromSource]
4825
+ attr_accessor :source
4826
+
4827
+ def initialize(**args)
4828
+ update!(**args)
4829
+ end
4830
+
4831
+ # Update properties of this object
4832
+ def update!(**args)
4833
+ @not_source = args[:not_source] if args.key?(:not_source)
4834
+ @source = args[:source] if args.key?(:source)
4835
+ end
4836
+ end
4837
+
4838
+ # Describes the properties of a request source.
4839
+ class RateLimitPolicyRateLimitRuleFromSource
4840
+ include Google::Apis::Core::Hashable
4841
+
4842
+ # Required. Contains a list of identities derived from the client's certificate.
4843
+ # This field does not match on a request unless frontend mutual TLS is enabled
4844
+ # for the Gateway and the client certificate is successfully validated by mTLS.
4845
+ # Each identity is a string whose value is matched against a list of URI SANs,
4846
+ # DNS Name SANs, or the common name in the client's certificate. A match happens
4847
+ # when any principal matches with the rule.
4848
+ # Corresponds to the JSON property `principals`
4849
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRulePrincipal>]
4850
+ attr_accessor :principals
4851
+
4852
+ def initialize(**args)
4853
+ update!(**args)
4854
+ end
4855
+
4856
+ # Update properties of this object
4857
+ def update!(**args)
4858
+ @principals = args[:principals] if args.key?(:principals)
4859
+ end
4860
+ end
4861
+
4862
+ # Determines how an HTTP header is matched.
4863
+ class RateLimitPolicyRateLimitRuleHeaderMatch
4864
+ include Google::Apis::Core::Hashable
4865
+
4866
+ # Optional. Specifies the name of the header in the request.
4867
+ # Corresponds to the JSON property `name`
4868
+ # @return [String]
4869
+ attr_accessor :name
4870
+
4871
+ # Determines how a string value is matched.
4872
+ # Corresponds to the JSON property `value`
4873
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleStringMatch]
4874
+ attr_accessor :value
4875
+
4876
+ def initialize(**args)
4877
+ update!(**args)
4878
+ end
4879
+
4880
+ # Update properties of this object
4881
+ def update!(**args)
4882
+ @name = args[:name] if args.key?(:name)
4883
+ @value = args[:value] if args.key?(:value)
4884
+ end
4885
+ end
4886
+
4887
+ # Describes the properties of a principal for matching.
4888
+ class RateLimitPolicyRateLimitRulePrincipal
4889
+ include Google::Apis::Core::Hashable
4890
+
4891
+ # Determines how a string value is matched.
4892
+ # Corresponds to the JSON property `principal`
4893
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleStringMatch]
4894
+ attr_accessor :principal
4895
+
4896
+ # Optional. Decides what principal value the principal rule will match against.
4897
+ # If not specified, defaults to CLIENT_CERT_URI_SAN.
4898
+ # Corresponds to the JSON property `principalSelector`
4899
+ # @return [String]
4900
+ attr_accessor :principal_selector
4901
+
4902
+ def initialize(**args)
4903
+ update!(**args)
4904
+ end
4905
+
4906
+ # Update properties of this object
4907
+ def update!(**args)
4908
+ @principal = args[:principal] if args.key?(:principal)
4909
+ @principal_selector = args[:principal_selector] if args.key?(:principal_selector)
4910
+ end
4911
+ end
4912
+
4913
+ # Describes the action to take when the rate limit rule is matched.
4914
+ class RateLimitPolicyRateLimitRuleRateLimitAction
4915
+ include Google::Apis::Core::Hashable
4916
+
4917
+ # Required. Specifies the name of the rate limit bucket to apply when this rule
4918
+ # is matched.
4919
+ # Corresponds to the JSON property `rateLimitBucket`
4920
+ # @return [String]
4921
+ attr_accessor :rate_limit_bucket
4922
+
4923
+ def initialize(**args)
4924
+ update!(**args)
4925
+ end
4926
+
4927
+ # Update properties of this object
4928
+ def update!(**args)
4929
+ @rate_limit_bucket = args[:rate_limit_bucket] if args.key?(:rate_limit_bucket)
4930
+ end
4931
+ end
4932
+
4933
+ # Determines how a string value is matched.
4934
+ class RateLimitPolicyRateLimitRuleStringMatch
4935
+ include Google::Apis::Core::Hashable
4936
+
4937
+ # Checks if the input string contains the substring specified here. Note: empty
4938
+ # contains match is not allowed, please use regex instead. Examples: * ``abc``
4939
+ # matches the value ``xyz.abc.def``
4940
+ # Corresponds to the JSON property `contains`
4941
+ # @return [String]
4942
+ attr_accessor :contains
4943
+
4944
+ # Matches the input string exactly to the string specified here. Examples: * ``
4945
+ # abc`` only matches the value ``abc``.
4946
+ # Corresponds to the JSON property `exact`
4947
+ # @return [String]
4948
+ attr_accessor :exact
4949
+
4950
+ # Optional. Indicates if the exact/prefix/suffix/contains matching should be
4951
+ # case insensitive. For example, when true, the matcher ``data`` matches both
4952
+ # input strings ``Data`` and ``data``.
4953
+ # Corresponds to the JSON property `ignoreCase`
4954
+ # @return [Boolean]
4955
+ attr_accessor :ignore_case
4956
+ alias_method :ignore_case?, :ignore_case
4957
+
4958
+ # Checks if the input string has the prefix specified here. Note: empty prefix
4959
+ # is not allowed, please use regex instead. Examples: * ``abc`` matches the
4960
+ # value ``abc.xyz``
4961
+ # Corresponds to the JSON property `prefix`
4962
+ # @return [String]
4963
+ attr_accessor :prefix
4964
+
4965
+ # Checks if the input string has the suffix specified here. Note: empty suffix
4966
+ # is not allowed, please use regex instead. Examples: * ``abc`` matches the
4967
+ # value ``xyz.abc``
4968
+ # Corresponds to the JSON property `suffix`
4969
+ # @return [String]
4970
+ attr_accessor :suffix
4971
+
4972
+ def initialize(**args)
4973
+ update!(**args)
4974
+ end
4975
+
4976
+ # Update properties of this object
4977
+ def update!(**args)
4978
+ @contains = args[:contains] if args.key?(:contains)
4979
+ @exact = args[:exact] if args.key?(:exact)
4980
+ @ignore_case = args[:ignore_case] if args.key?(:ignore_case)
4981
+ @prefix = args[:prefix] if args.key?(:prefix)
4982
+ @suffix = args[:suffix] if args.key?(:suffix)
4983
+ end
4984
+ end
4985
+
4986
+ # Describes properties of the targets of a request.
4987
+ class RateLimitPolicyRateLimitRuleTo
4988
+ include Google::Apis::Core::Hashable
4989
+
4990
+ # Describes properties of a request target.
4991
+ # Corresponds to the JSON property `destination`
4992
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleToDestination]
4993
+ attr_accessor :destination
4994
+
4995
+ # Describes properties of a request target.
4996
+ # Corresponds to the JSON property `notDestination`
4997
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleToDestination]
4998
+ attr_accessor :not_destination
4999
+
5000
+ def initialize(**args)
5001
+ update!(**args)
5002
+ end
5003
+
5004
+ # Update properties of this object
5005
+ def update!(**args)
5006
+ @destination = args[:destination] if args.key?(:destination)
5007
+ @not_destination = args[:not_destination] if args.key?(:not_destination)
5008
+ end
5009
+ end
5010
+
5011
+ # Describes properties of a request target.
5012
+ class RateLimitPolicyRateLimitRuleToDestination
5013
+ include Google::Apis::Core::Hashable
5014
+
5015
+ # Describes a set of HTTP headers to match against.
5016
+ # Corresponds to the JSON property `headerSet`
5017
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleToDestinationHeaderSet]
5018
+ attr_accessor :header_set
5019
+
5020
+ # Optional. Specifies a list of HTTP Hosts to match against. The match can be
5021
+ # one of exact, prefix, suffix, or contains (substring match). Matches are
5022
+ # always case sensitive unless the ignoreCase is set. The match follows OR
5023
+ # semantics which means that if any of the hosts match, the operation is
5024
+ # considered to be matched.
5025
+ # Corresponds to the JSON property `hosts`
5026
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleStringMatch>]
5027
+ attr_accessor :hosts
5028
+
5029
+ # Describes a set of MCP protocol attributes to match against for a given MCP
5030
+ # request. This field is only valid if the targeted Gateway or Forwarding Rule
5031
+ # has an Agent Gateway attached to it.
5032
+ # Corresponds to the JSON property `mcp`
5033
+ # @return [Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleToDestinationMcp]
5034
+ attr_accessor :mcp
5035
+
5036
+ # Optional. Specifies a list of HTTP methods to match against. Each entry must
5037
+ # be a valid HTTP method name (GET, PUT, POST, HEAD, PATCH, DELETE, OPTIONS). It
5038
+ # only allows exact match and is always case sensitive. The match follows OR
5039
+ # semantics which means that if any of the methods match, the operation is
5040
+ # considered to be matched.
5041
+ # Corresponds to the JSON property `methods`
5042
+ # @return [Array<String>]
5043
+ attr_accessor :methods_prop
5044
+
5045
+ # Optional. Specifies a list of paths to match against. The match can be one of
5046
+ # exact, prefix, suffix, or contains (substring match). Matches are always case
5047
+ # sensitive unless the ignoreCase is set. The match follows OR semantics which
5048
+ # means that if any of the paths match, the operation is considered to be
5049
+ # matched. Note that this path match includes the query parameters. For gRPC
5050
+ # services, this should be a fully-qualified name of the form /package.service/
5051
+ # method.
5052
+ # Corresponds to the JSON property `paths`
5053
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleStringMatch>]
5054
+ attr_accessor :paths
5055
+
5056
+ def initialize(**args)
5057
+ update!(**args)
5058
+ end
5059
+
5060
+ # Update properties of this object
5061
+ def update!(**args)
5062
+ @header_set = args[:header_set] if args.key?(:header_set)
5063
+ @hosts = args[:hosts] if args.key?(:hosts)
5064
+ @mcp = args[:mcp] if args.key?(:mcp)
5065
+ @methods_prop = args[:methods_prop] if args.key?(:methods_prop)
5066
+ @paths = args[:paths] if args.key?(:paths)
5067
+ end
5068
+ end
5069
+
5070
+ # Describes a set of HTTP headers to match against.
5071
+ class RateLimitPolicyRateLimitRuleToDestinationHeaderSet
5072
+ include Google::Apis::Core::Hashable
5073
+
5074
+ # Required. Contains a list of headers to match against in http header. The
5075
+ # match can be one of exact, prefix, suffix, or contains (substring match). The
5076
+ # match follows AND semantics which means all the headers must match. Matches
5077
+ # are always case sensitive unless the ignoreCase is set.
5078
+ # Corresponds to the JSON property `headers`
5079
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleHeaderMatch>]
5080
+ attr_accessor :headers
5081
+
5082
+ def initialize(**args)
5083
+ update!(**args)
5084
+ end
5085
+
5086
+ # Update properties of this object
5087
+ def update!(**args)
5088
+ @headers = args[:headers] if args.key?(:headers)
5089
+ end
5090
+ end
5091
+
5092
+ # Describes a set of MCP protocol attributes to match against for a given MCP
5093
+ # request. This field is only valid if the targeted Gateway or Forwarding Rule
5094
+ # has an Agent Gateway attached to it.
5095
+ class RateLimitPolicyRateLimitRuleToDestinationMcp
5096
+ include Google::Apis::Core::Hashable
5097
+
5098
+ # Optional. If specified, matches on the MCP protocol’s non-access specific
5099
+ # methods namely: * initialize * completion/ * logging/ * notifications/ * ping
5100
+ # Defaults to SKIP_BASE_PROTOCOL_METHODS if not specified.
5101
+ # Corresponds to the JSON property `baseProtocolMethodsOption`
5102
+ # @return [String]
5103
+ attr_accessor :base_protocol_methods_option
5104
+
5105
+ # Optional. A list of MCP methods and associated parameter names to match on. It
5106
+ # is recommended to use this field to match on tools, prompts and resource
5107
+ # accesses while setting the baseProtocolMethodsOption to
5108
+ # MATCH_BASE_PROTOCOL_METHODS to match on all the other MCP protocol methods.
5109
+ # Limited to 10 MCP methods per Rate Limit Policy.
5110
+ # Corresponds to the JSON property `methods`
5111
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleToDestinationMcpMethod>]
5112
+ attr_accessor :methods_prop
5113
+
5114
+ def initialize(**args)
5115
+ update!(**args)
5116
+ end
5117
+
5118
+ # Update properties of this object
5119
+ def update!(**args)
5120
+ @base_protocol_methods_option = args[:base_protocol_methods_option] if args.key?(:base_protocol_methods_option)
5121
+ @methods_prop = args[:methods_prop] if args.key?(:methods_prop)
5122
+ end
5123
+ end
5124
+
5125
+ # Describes a set of MCP methods to match against. This field is only valid if
5126
+ # the targeted Gateway or Forwarding Rule has an Agent Gateway attached to it.
5127
+ class RateLimitPolicyRateLimitRuleToDestinationMcpMethod
5128
+ include Google::Apis::Core::Hashable
5129
+
5130
+ # Required. Specifies the MCP method to match against. Allowed values are as
5131
+ # follows: 1. `tools`, `prompts`, `resources` - these will match against all sub
5132
+ # methods under the respective methods. 2. `prompts/list`, `tools/list`, `
5133
+ # resources/list`, `resources/templates/list` 3. `prompts/get`, `tools/call`, `
5134
+ # resources/subscribe`, `resources/unsubscribe`, `resources/read` Params cannot
5135
+ # be specified for categories 1 and 2.
5136
+ # Corresponds to the JSON property `name`
5137
+ # @return [String]
5138
+ attr_accessor :name
5139
+
5140
+ # Optional. Specifies a list of MCP method parameter names to match against. The
5141
+ # match can be one of exact, prefix, suffix, or contains (substring match).
5142
+ # Matches are always case sensitive unless the ignoreCase is set.
5143
+ # Corresponds to the JSON property `params`
5144
+ # @return [Array<Google::Apis::NetworksecurityV1beta1::RateLimitPolicyRateLimitRuleStringMatch>]
5145
+ attr_accessor :params
5146
+
5147
+ def initialize(**args)
5148
+ update!(**args)
5149
+ end
5150
+
5151
+ # Update properties of this object
5152
+ def update!(**args)
5153
+ @name = args[:name] if args.key?(:name)
5154
+ @params = args[:params] if args.key?(:params)
5155
+ end
5156
+ end
5157
+
5158
+ # Specifies the target to which this policy applies.
5159
+ class RateLimitPolicyTarget
5160
+ include Google::Apis::Core::Hashable
5161
+
5162
+ # Required. Reference to a Gateway or Forwarding Rule resource on which this
5163
+ # policy will be applied.
5164
+ # Corresponds to the JSON property `resource`
5165
+ # @return [String]
5166
+ attr_accessor :resource
5167
+
5168
+ def initialize(**args)
5169
+ update!(**args)
5170
+ end
5171
+
5172
+ # Update properties of this object
5173
+ def update!(**args)
5174
+ @resource = args[:resource] if args.key?(:resource)
5175
+ end
5176
+ end
5177
+
4431
5178
  # Request used by the RemoveAddressGroupItems method.
4432
5179
  class RemoveAddressGroupItemsRequest
4433
5180
  include Google::Apis::Core::Hashable