diff --git a/google-cloud-recaptcha_enterprise-v1/.owlbot-manifest.json b/google-cloud-recaptcha_enterprise-v1/.owlbot-manifest.json index 72320530d198..639ab9a2a79b 100644 --- a/google-cloud-recaptcha_enterprise-v1/.owlbot-manifest.json +++ b/google-cloud-recaptcha_enterprise-v1/.owlbot-manifest.json @@ -46,6 +46,7 @@ "snippets/recaptcha_enterprise_service/get_firewall_policy.rb", "snippets/recaptcha_enterprise_service/get_key.rb", "snippets/recaptcha_enterprise_service/get_metrics.rb", + "snippets/recaptcha_enterprise_service/get_policy.rb", "snippets/recaptcha_enterprise_service/list_firewall_policies.rb", "snippets/recaptcha_enterprise_service/list_ip_overrides.rb", "snippets/recaptcha_enterprise_service/list_keys.rb", @@ -58,6 +59,7 @@ "snippets/recaptcha_enterprise_service/search_related_account_group_memberships.rb", "snippets/recaptcha_enterprise_service/update_firewall_policy.rb", "snippets/recaptcha_enterprise_service/update_key.rb", + "snippets/recaptcha_enterprise_service/update_policy.rb", "snippets/snippet_metadata_google.cloud.recaptchaenterprise.v1.json", "test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_paths_test.rb", "test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_test.rb", diff --git a/google-cloud-recaptcha_enterprise-v1/gapic_metadata.json b/google-cloud-recaptcha_enterprise-v1/gapic_metadata.json index 401c9dadcea7..1c3c335bc5d7 100644 --- a/google-cloud-recaptcha_enterprise-v1/gapic_metadata.json +++ b/google-cloud-recaptcha_enterprise-v1/gapic_metadata.json @@ -75,6 +75,16 @@ "get_metrics" ] }, + "GetPolicy": { + "methods": [ + "get_policy" + ] + }, + "UpdatePolicy": { + "methods": [ + "update_policy" + ] + }, "CreateFirewallPolicy": { "methods": [ "create_firewall_policy" diff --git a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/client.rb b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/client.rb index 3ebc22f3f04a..4b9f9d5cfd4e 100644 --- a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/client.rb +++ b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/client.rb @@ -1397,6 +1397,181 @@ def get_metrics request, options = nil raise ::Google::Cloud::Error.from_error(e) end + ## + # Get the policy for a key. + # + # @overload get_policy(request, options = nil) + # Pass arguments to `get_policy` via a request object, either of type + # {::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload get_policy(name: nil) + # Pass arguments to `get_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param name [::String] + # Required. The name of the policy to get, in the format + # `projects/{project}/keys/{key}/policy`. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Google::Cloud::RecaptchaEnterprise::V1::Policy] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Google::Cloud::RecaptchaEnterprise::V1::Policy] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/recaptcha_enterprise/v1" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest.new + # + # # Call the get_policy method. + # result = client.get_policy request + # + # # The returned object is of type Google::Cloud::RecaptchaEnterprise::V1::Policy. + # p result + # + def get_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.get_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::RecaptchaEnterprise::V1::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.name + header_params["name"] = request.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.get_policy.timeout, + metadata: metadata, + retry_policy: @config.rpcs.get_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @recaptcha_enterprise_service_stub.call_rpc :get_policy, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + + ## + # Updates the policy for a key. + # + # @overload update_policy(request, options = nil) + # Pass arguments to `update_policy` via a request object, either of type + # {::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest} or an equivalent Hash. + # + # @param request [::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest, ::Hash] + # A request object representing the call parameters. Required. To specify no + # parameters, or to keep all the default parameter values, pass an empty Hash. + # @param options [::Gapic::CallOptions, ::Hash] + # Overrides the default settings for this call, e.g, timeout, retries, etc. Optional. + # + # @overload update_policy(policy: nil, update_mask: nil) + # Pass arguments to `update_policy` via keyword arguments. Note that at + # least one keyword argument is required. To specify no parameters, or to keep all + # the default parameter values, pass an empty Hash as a request object (see above). + # + # @param policy [::Google::Cloud::RecaptchaEnterprise::V1::Policy, ::Hash] + # Required. The Policy's name is used to identify the policy to update, in + # the format `projects/{project}/keys/{key}/policy`. + # @param update_mask [::Google::Protobuf::FieldMask, ::Hash] + # Optional. The mask to control which fields of the policy get updated. If + # the mask is not present, all fields are updated. + # + # @yield [response, operation] Access the result along with the RPC operation + # @yieldparam response [::Google::Cloud::RecaptchaEnterprise::V1::Policy] + # @yieldparam operation [::GRPC::ActiveCall::Operation] + # + # @return [::Google::Cloud::RecaptchaEnterprise::V1::Policy] + # + # @raise [::Google::Cloud::Error] if the RPC is aborted. + # + # @example Basic example + # require "google/cloud/recaptcha_enterprise/v1" + # + # # Create a client object. The client can be reused for multiple calls. + # client = Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new + # + # # Create a request. To set request fields, pass in keyword arguments. + # request = Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest.new + # + # # Call the update_policy method. + # result = client.update_policy request + # + # # The returned object is of type Google::Cloud::RecaptchaEnterprise::V1::Policy. + # p result + # + def update_policy request, options = nil + raise ::ArgumentError, "request must be provided" if request.nil? + + request = ::Gapic::Protobuf.coerce request, to: ::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest + + # Converts hash and nil to an options object + options = ::Gapic::CallOptions.new(**options.to_h) if options.respond_to? :to_h + + # Customize the options with defaults + metadata = @config.rpcs.update_policy.metadata.to_h + + # Set x-goog-api-client, x-goog-user-project and x-goog-api-version headers + metadata[:"x-goog-api-client"] ||= ::Gapic::Headers.x_goog_api_client \ + lib_name: @config.lib_name, lib_version: @config.lib_version, + gapic_version: ::Google::Cloud::RecaptchaEnterprise::V1::VERSION + metadata[:"x-goog-api-version"] = API_VERSION unless API_VERSION.empty? + metadata[:"x-goog-user-project"] = @quota_project_id if @quota_project_id + + header_params = {} + if request.policy&.name + header_params["policy.name"] = request.policy.name + end + + request_params_header = header_params.map { |k, v| "#{k}=#{v}" }.join("&") + metadata[:"x-goog-request-params"] ||= request_params_header + + options.apply_defaults timeout: @config.rpcs.update_policy.timeout, + metadata: metadata, + retry_policy: @config.rpcs.update_policy.retry_policy + + options.apply_defaults timeout: @config.timeout, + metadata: @config.metadata, + retry_policy: @config.retry_policy + + @recaptcha_enterprise_service_stub.call_rpc :update_policy, request, options: options do |response, operation| + yield response, operation if block_given? + end + rescue ::GRPC::BadStatus => e + raise ::Google::Cloud::Error.from_error(e) + end + ## # Creates a new FirewallPolicy, specifying conditions at which reCAPTCHA # Enterprise actions can be executed. @@ -2507,6 +2682,16 @@ class Rpcs # attr_reader :get_metrics ## + # RPC-specific configuration for `get_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :get_policy + ## + # RPC-specific configuration for `update_policy` + # @return [::Gapic::Config::Method] + # + attr_reader :update_policy + ## # RPC-specific configuration for `create_firewall_policy` # @return [::Gapic::Config::Method] # @@ -2580,6 +2765,10 @@ def initialize parent_rpcs = nil @list_ip_overrides = ::Gapic::Config::Method.new list_ip_overrides_config get_metrics_config = parent_rpcs.get_metrics if parent_rpcs.respond_to? :get_metrics @get_metrics = ::Gapic::Config::Method.new get_metrics_config + get_policy_config = parent_rpcs.get_policy if parent_rpcs.respond_to? :get_policy + @get_policy = ::Gapic::Config::Method.new get_policy_config + update_policy_config = parent_rpcs.update_policy if parent_rpcs.respond_to? :update_policy + @update_policy = ::Gapic::Config::Method.new update_policy_config create_firewall_policy_config = parent_rpcs.create_firewall_policy if parent_rpcs.respond_to? :create_firewall_policy @create_firewall_policy = ::Gapic::Config::Method.new create_firewall_policy_config list_firewall_policies_config = parent_rpcs.list_firewall_policies if parent_rpcs.respond_to? :list_firewall_policies diff --git a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/paths.rb b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/paths.rb index 7a41dbacecdb..764baa008be0 100644 --- a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/paths.rb +++ b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service/paths.rb @@ -92,6 +92,23 @@ def metrics_path project:, key: "projects/#{project}/keys/#{key}/metrics" end + ## + # Create a fully-qualified Policy resource string. + # + # The resource will be in the following format: + # + # `projects/{project}/keys/{key}/policy` + # + # @param project [String] + # @param key [String] + # + # @return [::String] + def policy_path project:, key: + raise ::ArgumentError, "project cannot contain /" if project.to_s.include? "/" + + "projects/#{project}/keys/#{key}/policy" + end + ## # Create a fully-qualified Project resource string. # diff --git a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_pb.rb b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_pb.rb index 89c5c47420f8..a6447a580b63 100644 --- a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_pb.rb +++ b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_pb.rb @@ -15,7 +15,7 @@ require 'google/rpc/status_pb' -descriptor_data = "\n=google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto\x12#google.cloud.recaptchaenterprise.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/field_info.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\"\xa8\x01\n\x17\x43reateAssessmentRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12H\n\nassessment\x18\x02 \x01(\x0b\x32/.google.cloud.recaptchaenterprise.v1.AssessmentB\x03\xe0\x41\x02\"\x92\x05\n\x10TransactionEvent\x12\x63\n\nevent_type\x18\x01 \x01(\x0e\x32J.google.cloud.recaptchaenterprise.v1.TransactionEvent.TransactionEventTypeB\x03\xe0\x41\x01\x12\x13\n\x06reason\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x03 \x01(\x01\x42\x03\xe0\x41\x01\x12\x33\n\nevent_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\"\xba\x03\n\x14TransactionEventType\x12&\n\"TRANSACTION_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10MERCHANT_APPROVE\x10\x01\x12\x11\n\rMERCHANT_DENY\x10\x02\x12\x11\n\rMANUAL_REVIEW\x10\x03\x12\x11\n\rAUTHORIZATION\x10\x04\x12\x19\n\x15\x41UTHORIZATION_DECLINE\x10\x05\x12\x13\n\x0fPAYMENT_CAPTURE\x10\x06\x12\x1b\n\x17PAYMENT_CAPTURE_DECLINE\x10\x07\x12\n\n\x06\x43\x41NCEL\x10\x08\x12\x16\n\x12\x43HARGEBACK_INQUIRY\x10\t\x12\x14\n\x10\x43HARGEBACK_ALERT\x10\n\x12\x16\n\x12\x46RAUD_NOTIFICATION\x10\x0b\x12\x0e\n\nCHARGEBACK\x10\x0c\x12\x1c\n\x18\x43HARGEBACK_REPRESENTMENT\x10\r\x12\x16\n\x12\x43HARGEBACK_REVERSE\x10\x0e\x12\x12\n\x0eREFUND_REQUEST\x10\x0f\x12\x12\n\x0eREFUND_DECLINE\x10\x10\x12\n\n\x06REFUND\x10\x11\x12\x12\n\x0eREFUND_REVERSE\x10\x12\"j\n\x18PhoneAuthenticationEvent\x12\x19\n\x0cphone_number\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x33\n\nevent_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\"\xeb\x07\n\x19\x41nnotateAssessmentRequest\x12\x43\n\x04name\x18\x01 \x01(\tB5\xe0\x41\x02\xfa\x41/\n-recaptchaenterprise.googleapis.com/Assessment\x12\x62\n\nannotation\x18\x02 \x01(\x0e\x32I.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.AnnotationB\x03\xe0\x41\x01\x12[\n\x07reasons\x18\x03 \x03(\x0e\x32\x45.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.ReasonB\x03\xe0\x41\x01\x12\x17\n\naccount_id\x18\x07 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11hashed_account_id\x18\x04 \x01(\x0c\x42\x03\xe0\x41\x01\x12U\n\x11transaction_event\x18\x05 \x01(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.TransactionEventB\x03\xe0\x41\x01\x12\x66\n\x1aphone_authentication_event\x18\x06 \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.PhoneAuthenticationEventB\x03\xe0\x41\x01\"~\n\nAnnotation\x12\x1a\n\x16\x41NNOTATION_UNSPECIFIED\x10\x00\x12\x0e\n\nLEGITIMATE\x10\x01\x12\x0e\n\nFRAUDULENT\x10\x02\x12\x18\n\x10PASSWORD_CORRECT\x10\x03\x1a\x02\x08\x01\x12\x1a\n\x12PASSWORD_INCORRECT\x10\x04\x1a\x02\x08\x01\"\xcf\x02\n\x06Reason\x12\x16\n\x12REASON_UNSPECIFIED\x10\x00\x12\x0e\n\nCHARGEBACK\x10\x01\x12\x14\n\x10\x43HARGEBACK_FRAUD\x10\x08\x12\x16\n\x12\x43HARGEBACK_DISPUTE\x10\t\x12\n\n\x06REFUND\x10\n\x12\x10\n\x0cREFUND_FRAUD\x10\x0b\x12\x18\n\x14TRANSACTION_ACCEPTED\x10\x0c\x12\x18\n\x14TRANSACTION_DECLINED\x10\r\x12\x16\n\x12PAYMENT_HEURISTICS\x10\x02\x12\x18\n\x14INITIATED_TWO_FACTOR\x10\x07\x12\x15\n\x11PASSED_TWO_FACTOR\x10\x03\x12\x15\n\x11\x46\x41ILED_TWO_FACTOR\x10\x04\x12\x14\n\x10\x43ORRECT_PASSWORD\x10\x05\x12\x16\n\x12INCORRECT_PASSWORD\x10\x06\x12\x0f\n\x0bSOCIAL_SPAM\x10\x0e\"\x1c\n\x1a\x41nnotateAssessmentResponse\"\xb4\x01\n\x18\x45ndpointVerificationInfo\x12\x17\n\remail_address\x18\x01 \x01(\tH\x00\x12\x16\n\x0cphone_number\x18\x02 \x01(\tH\x00\x12\x1a\n\rrequest_token\x18\x03 \x01(\tB\x03\xe0\x41\x03\x12?\n\x16last_verification_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x42\n\n\x08\x65ndpoint\"\xdb\x04\n\x17\x41\x63\x63ountVerificationInfo\x12U\n\tendpoints\x18\x01 \x03(\x0b\x32=.google.cloud.recaptchaenterprise.v1.EndpointVerificationInfoB\x03\xe0\x41\x01\x12\x1a\n\rlanguage_code\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12l\n\x1alatest_verification_result\x18\x07 \x01(\x0e\x32\x43.google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.ResultB\x03\xe0\x41\x03\x12\x14\n\x08username\x18\x02 \x01(\tB\x02\x18\x01\"\xc8\x02\n\x06Result\x12\x16\n\x12RESULT_UNSPECIFIED\x10\x00\x12\x19\n\x15SUCCESS_USER_VERIFIED\x10\x01\x12\x1b\n\x17\x45RROR_USER_NOT_VERIFIED\x10\x02\x12$\n ERROR_SITE_ONBOARDING_INCOMPLETE\x10\x03\x12\x1f\n\x1b\x45RROR_RECIPIENT_NOT_ALLOWED\x10\x04\x12)\n%ERROR_RECIPIENT_ABUSE_LIMIT_EXHAUSTED\x10\x05\x12\x1b\n\x17\x45RROR_CRITICAL_INTERNAL\x10\x06\x12\"\n\x1e\x45RROR_CUSTOMER_QUOTA_EXHAUSTED\x10\x07\x12\x1f\n\x1b\x45RROR_VERIFICATION_BYPASSED\x10\x08\x12\x1a\n\x16\x45RROR_VERDICT_MISMATCH\x10\t\"\xcc\x01\n\x1fPrivatePasswordLeakVerification\x12\x1f\n\x12lookup_hash_prefix\x18\x01 \x01(\x0c\x42\x03\xe0\x41\x02\x12,\n\x1f\x65ncrypted_user_credentials_hash\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x01\x12*\n\x1d\x65ncrypted_leak_match_prefixes\x18\x03 \x03(\x0c\x42\x03\xe0\x41\x03\x12.\n!reencrypted_user_credentials_hash\x18\x04 \x01(\x0c\x42\x03\xe0\x41\x03\"\xa4\t\n\nAssessment\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x03\xe0\x41\x08\x12>\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.google.cloud.recaptchaenterprise.v1.EventB\x03\xe0\x41\x01\x12M\n\rrisk_analysis\x18\x03 \x01(\x0b\x32\x31.google.cloud.recaptchaenterprise.v1.RiskAnalysisB\x03\xe0\x41\x03\x12S\n\x10token_properties\x18\x04 \x01(\x0b\x32\x34.google.cloud.recaptchaenterprise.v1.TokenPropertiesB\x03\xe0\x41\x03\x12_\n\x14\x61\x63\x63ount_verification\x18\x05 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.AccountVerificationInfoB\x03\xe0\x41\x01\x12h\n\x1b\x61\x63\x63ount_defender_assessment\x18\x06 \x01(\x0b\x32>.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessmentB\x03\xe0\x41\x03\x12u\n\"private_password_leak_verification\x18\x08 \x01(\x0b\x32\x44.google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerificationB\x03\xe0\x41\x01\x12\x66\n\x1a\x66irewall_policy_assessment\x18\n \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessmentB\x03\xe0\x41\x03\x12h\n\x1b\x66raud_prevention_assessment\x18\x0b \x01(\x0b\x32>.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessmentB\x03\xe0\x41\x03\x12M\n\rfraud_signals\x18\r \x01(\x0b\x32\x31.google.cloud.recaptchaenterprise.v1.FraudSignalsB\x03\xe0\x41\x03\x12^\n\x16phone_fraud_assessment\x18\x0c \x01(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.PhoneFraudAssessmentB\x03\xe0\x41\x03\x12_\n\x16\x61ssessment_environment\x18\x0e \x01(\x0b\x32:.google.cloud.recaptchaenterprise.v1.AssessmentEnvironmentB\x03\xe0\x41\x01:x\xea\x41u\n-recaptchaenterprise.googleapis.com/Assessment\x12+projects/{project}/assessments/{assessment}*\x0b\x61ssessments2\nassessment\"\xb0\x05\n\x05\x45vent\x12\x12\n\x05token\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08site_key\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x17\n\nuser_agent\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12$\n\x0fuser_ip_address\x18\x04 \x01(\tB\x0b\xe0\x41\x01\xe2\x8c\xcf\xd7\x08\x02\x08\x04\x12\x1c\n\x0f\x65xpected_action\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12 \n\x11hashed_account_id\x18\x06 \x01(\x0c\x42\x05\x18\x01\xe0\x41\x01\x12\x14\n\x07\x65xpress\x18\x0e \x01(\x08\x42\x03\xe0\x41\x01\x12\x1a\n\rrequested_uri\x18\x08 \x01(\tB\x03\xe0\x41\x01\x12!\n\x14waf_token_assessment\x18\t \x01(\x08\x42\x03\xe0\x41\x01\x12\x10\n\x03ja3\x18\n \x01(\tB\x03\xe0\x41\x01\x12\x10\n\x03ja4\x18\x12 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x07headers\x18\x0b \x03(\tB\x03\xe0\x41\x01\x12\'\n\x1a\x66irewall_policy_evaluation\x18\x0c \x01(\x08\x42\x03\xe0\x41\x01\x12S\n\x10transaction_data\x18\r \x01(\x0b\x32\x34.google.cloud.recaptchaenterprise.v1.TransactionDataB\x03\xe0\x41\x01\x12\x45\n\tuser_info\x18\x0f \x01(\x0b\x32-.google.cloud.recaptchaenterprise.v1.UserInfoB\x03\xe0\x41\x01\x12Y\n\x10\x66raud_prevention\x18\x11 \x01(\x0e\x32:.google.cloud.recaptchaenterprise.v1.Event.FraudPreventionB\x03\xe0\x41\x01\"N\n\x0f\x46raudPrevention\x12 \n\x1c\x46RAUD_PREVENTION_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\"\xa0\n\n\x0fTransactionData\x12\x1b\n\x0etransaction_id\x18\x0b \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0epayment_method\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08\x63\x61rd_bin\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0e\x63\x61rd_last_four\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rcurrency_code\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x05 \x01(\x01\x42\x03\xe0\x41\x01\x12\x1b\n\x0eshipping_value\x18\x0c \x01(\x01\x42\x03\xe0\x41\x01\x12[\n\x10shipping_address\x18\x06 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.TransactionData.AddressB\x03\xe0\x41\x01\x12Z\n\x0f\x62illing_address\x18\x07 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.TransactionData.AddressB\x03\xe0\x41\x01\x12L\n\x04user\x18\x08 \x01(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.TransactionData.UserB\x03\xe0\x41\x01\x12Q\n\tmerchants\x18\r \x03(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.TransactionData.UserB\x03\xe0\x41\x01\x12M\n\x05items\x18\x0e \x03(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.TransactionData.ItemB\x03\xe0\x41\x01\x12[\n\x0cgateway_info\x18\n \x01(\x0b\x32@.google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfoB\x03\xe0\x41\x01\x1a\xa4\x01\n\x07\x41\x64\x64ress\x12\x16\n\trecipient\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12\x15\n\x08locality\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12 \n\x13\x61\x64ministrative_area\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bregion_code\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bpostal_code\x18\x06 \x01(\tB\x03\xe0\x41\x01\x1a\xa2\x01\n\x04User\x12\x17\n\naccount_id\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0b\x63reation_ms\x18\x01 \x01(\x03\x42\x03\xe0\x41\x01\x12\x12\n\x05\x65mail\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0e\x65mail_verified\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12\x19\n\x0cphone_number\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0ephone_verified\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01\x1a\x66\n\x04Item\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x02 \x01(\x01\x42\x03\xe0\x41\x01\x12\x15\n\x08quantity\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12 \n\x13merchant_account_id\x18\x04 \x01(\tB\x03\xe0\x41\x01\x1a\x84\x01\n\x0bGatewayInfo\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\"\n\x15gateway_response_code\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x61vs_response_code\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x63vv_response_code\x18\x04 \x01(\tB\x03\xe0\x41\x01\x42\x11\n\x0f_transaction_id\"\xa5\x01\n\x08UserInfo\x12<\n\x13\x63reate_account_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12\x17\n\naccount_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x42\n\x08user_ids\x18\x03 \x03(\x0b\x32+.google.cloud.recaptchaenterprise.v1.UserIdB\x03\xe0\x41\x01\"`\n\x06UserId\x12\x14\n\x05\x65mail\x18\x01 \x01(\tB\x03\xe0\x41\x01H\x00\x12\x1b\n\x0cphone_number\x18\x02 \x01(\tB\x03\xe0\x41\x01H\x00\x12\x17\n\x08username\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x00\x42\n\n\x08id_oneof\"\xfd\x04\n\x0cRiskAnalysis\x12\x12\n\x05score\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12\\\n\x07reasons\x18\x02 \x03(\x0e\x32\x46.google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReasonB\x03\xe0\x41\x03\x12%\n\x18\x65xtended_verdict_reasons\x18\x03 \x03(\tB\x03\xe0\x41\x03\x12S\n\tchallenge\x18\x04 \x01(\x0e\x32;.google.cloud.recaptchaenterprise.v1.RiskAnalysis.ChallengeB\x03\xe0\x41\x03\x12\x44\n\rverified_bots\x18\x05 \x03(\x0b\x32(.google.cloud.recaptchaenterprise.v1.BotB\x03\xe0\x41\x03\"\xe9\x01\n\x14\x43lassificationReason\x12%\n!CLASSIFICATION_REASON_UNSPECIFIED\x10\x00\x12\x0e\n\nAUTOMATION\x10\x01\x12\x1a\n\x16UNEXPECTED_ENVIRONMENT\x10\x02\x12\x14\n\x10TOO_MUCH_TRAFFIC\x10\x03\x12\x1d\n\x19UNEXPECTED_USAGE_PATTERNS\x10\x04\x12\x18\n\x14LOW_CONFIDENCE_SCORE\x10\x05\x12\x15\n\x11SUSPECTED_CARDING\x10\x06\x12\x18\n\x14SUSPECTED_CHARGEBACK\x10\x07\"M\n\tChallenge\x12\x19\n\x15\x43HALLENGE_UNSPECIFIED\x10\x00\x12\r\n\tNOCAPTCHA\x10\x01\x12\n\n\x06PASSED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\"\xbd\x01\n\x03\x42ot\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12G\n\x08\x62ot_type\x18\x02 \x01(\x0e\x32\x30.google.cloud.recaptchaenterprise.v1.Bot.BotTypeB\x03\xe0\x41\x01\"Z\n\x07\x42otType\x12\x18\n\x14\x42OT_TYPE_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x41I_AGENT\x10\x01\x12\x13\n\x0f\x43ONTENT_SCRAPER\x10\x02\x12\x12\n\x0eSEARCH_INDEXER\x10\x03\"\xd2\x03\n\x0fTokenProperties\x12\x12\n\x05valid\x18\x01 \x01(\x08\x42\x03\xe0\x41\x03\x12_\n\x0einvalid_reason\x18\x02 \x01(\x0e\x32\x42.google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReasonB\x03\xe0\x41\x03\x12\x34\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x15\n\x08hostname\x18\x04 \x01(\tB\x03\xe0\x41\x03\x12!\n\x14\x61ndroid_package_name\x18\x08 \x01(\tB\x03\xe0\x41\x03\x12\x1a\n\rios_bundle_id\x18\t \x01(\tB\x03\xe0\x41\x03\x12\x13\n\x06\x61\x63tion\x18\x05 \x01(\tB\x03\xe0\x41\x03\"\xa8\x01\n\rInvalidReason\x12\x1e\n\x1aINVALID_REASON_UNSPECIFIED\x10\x00\x12\x1a\n\x16UNKNOWN_INVALID_REASON\x10\x01\x12\r\n\tMALFORMED\x10\x02\x12\x0b\n\x07\x45XPIRED\x10\x03\x12\x08\n\x04\x44UPE\x10\x04\x12\x0b\n\x07MISSING\x10\x05\x12\x11\n\rBROWSER_ERROR\x10\x06\x12\x15\n\x11UNEXPECTED_ACTION\x10\x07\"\xd0\x07\n\x19\x46raudPreventionAssessment\x12\x1d\n\x10transaction_risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12\x64\n\x0crisk_reasons\x18\x06 \x03(\x0b\x32I.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.RiskReasonB\x03\xe0\x41\x03\x12~\n\x19stolen_instrument_verdict\x18\x02 \x01(\x0b\x32V.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdictB\x03\xe0\x41\x03\x12t\n\x14\x63\x61rd_testing_verdict\x18\x03 \x01(\x0b\x32Q.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdictB\x03\xe0\x41\x03\x12|\n\x18\x62\x65havioral_trust_verdict\x18\x04 \x01(\x0b\x32U.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.BehavioralTrustVerdictB\x03\xe0\x41\x03\x1a\xb4\x02\n\nRiskReason\x12\x65\n\x06reason\x18\x01 \x01(\x0e\x32P.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.RiskReason.ReasonB\x03\xe0\x41\x03\"\xbe\x01\n\x06Reason\x12\x16\n\x12REASON_UNSPECIFIED\x10\x00\x12\x1d\n\x19HIGH_TRANSACTION_VELOCITY\x10\x01\x12!\n\x1d\x45XCESSIVE_ENUMERATION_PATTERN\x10\x02\x12\x1a\n\x16SHORT_IDENTITY_HISTORY\x10\x03\x12\x1b\n\x17GEOLOCATION_DISCREPANCY\x10\x04\x12!\n\x1d\x41SSOCIATED_WITH_FRAUD_CLUSTER\x10\x05\x1a,\n\x17StolenInstrumentVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x1a\'\n\x12\x43\x61rdTestingVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x1a,\n\x16\x42\x65havioralTrustVerdict\x12\x12\n\x05trust\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\"\xe3\x03\n\x0c\x46raudSignals\x12X\n\x0cuser_signals\x18\x01 \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.FraudSignals.UserSignalsB\x03\xe0\x41\x03\x12X\n\x0c\x63\x61rd_signals\x18\x02 \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignalsB\x03\xe0\x41\x03\x1aP\n\x0bUserSignals\x12$\n\x17\x61\x63tive_days_lower_bound\x18\x01 \x01(\x05\x42\x03\xe0\x41\x03\x12\x1b\n\x0esynthetic_risk\x18\x02 \x01(\x02\x42\x03\xe0\x41\x03\x1a\xcc\x01\n\x0b\x43\x61rdSignals\x12\x61\n\x0b\x63\x61rd_labels\x18\x01 \x03(\x0e\x32G.google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals.CardLabelB\x03\xe0\x41\x03\"Z\n\tCardLabel\x12\x1a\n\x16\x43\x41RD_LABEL_UNSPECIFIED\x10\x00\x12\x0b\n\x07PREPAID\x10\x01\x12\x0b\n\x07VIRTUAL\x10\x02\x12\x17\n\x13UNEXPECTED_LOCATION\x10\x03\"\xe2\x01\n\x13SmsTollFraudVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12\x61\n\x07reasons\x18\x02 \x03(\x0e\x32K.google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict.SmsTollFraudReasonB\x03\xe0\x41\x03\"U\n\x12SmsTollFraudReason\x12%\n!SMS_TOLL_FRAUD_REASON_UNSPECIFIED\x10\x00\x12\x18\n\x14INVALID_PHONE_NUMBER\x10\x01\"u\n\x14PhoneFraudAssessment\x12]\n\x16sms_toll_fraud_verdict\x18\x01 \x01(\x0b\x32\x38.google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdictB\x03\xe0\x41\x03\"\xbb\x02\n\x19\x41\x63\x63ountDefenderAssessment\x12h\n\x06labels\x18\x01 \x03(\x0e\x32S.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabelB\x03\xe0\x41\x03\"\xb3\x01\n\x14\x41\x63\x63ountDefenderLabel\x12&\n\"ACCOUNT_DEFENDER_LABEL_UNSPECIFIED\x10\x00\x12\x11\n\rPROFILE_MATCH\x10\x01\x12\x1d\n\x19SUSPICIOUS_LOGIN_ACTIVITY\x10\x02\x12\x1f\n\x1bSUSPICIOUS_ACCOUNT_CREATION\x10\x03\x12 \n\x1cRELATED_ACCOUNTS_NUMBER_HIGH\x10\x04\"\x93\x01\n\x10\x43reateKeyRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12:\n\x03key\x18\x02 \x01(\x0b\x32(.google.cloud.recaptchaenterprise.v1.KeyB\x03\xe0\x41\x02\"\x87\x01\n\x0fListKeysRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"c\n\x10ListKeysResponse\x12\x36\n\x04keys\x18\x01 \x03(\x0b\x32(.google.cloud.recaptchaenterprise.v1.Key\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"]\n\x1eRetrieveLegacySecretKeyRequest\x12;\n\x03key\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\"M\n\rGetKeyRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\"\x84\x01\n\x10UpdateKeyRequest\x12:\n\x03key\x18\x01 \x01(\x0b\x32(.google.cloud.recaptchaenterprise.v1.KeyB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"P\n\x10\x44\x65leteKeyRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\"\xb5\x01\n\x1b\x43reateFirewallPolicyRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12Q\n\x0f\x66irewall_policy\x18\x02 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicyB\x03\xe0\x41\x02\"\x93\x01\n\x1bListFirewallPoliciesRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\x87\x01\n\x1cListFirewallPoliciesResponse\x12N\n\x11\x66irewall_policies\x18\x01 \x03(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"c\n\x18GetFirewallPolicyRequest\x12G\n\x04name\x18\x01 \x01(\tB9\xe0\x41\x02\xfa\x41\x33\n1recaptchaenterprise.googleapis.com/FirewallPolicy\"\xa6\x01\n\x1bUpdateFirewallPolicyRequest\x12Q\n\x0f\x66irewall_policy\x18\x01 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicyB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"f\n\x1b\x44\x65leteFirewallPolicyRequest\x12G\n\x04name\x18\x01 \x01(\tB9\xe0\x41\x02\xfa\x41\x33\n1recaptchaenterprise.googleapis.com/FirewallPolicy\"\xaf\x01\n\x1eReorderFirewallPoliciesRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12H\n\x05names\x18\x02 \x03(\tB9\xe0\x41\x02\xfa\x41\x33\n1recaptchaenterprise.googleapis.com/FirewallPolicy\"!\n\x1fReorderFirewallPoliciesResponse\"r\n\x11MigrateKeyRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12\x1f\n\x12skip_billing_check\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"U\n\x11GetMetricsRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*recaptchaenterprise.googleapis.com/Metrics\"\xd5\x02\n\x07Metrics\x12\x14\n\x04name\x18\x04 \x01(\tB\x06\xe0\x41\x08\xe0\x41\x03\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12H\n\rscore_metrics\x18\x02 \x03(\x0b\x32\x31.google.cloud.recaptchaenterprise.v1.ScoreMetrics\x12P\n\x11\x63hallenge_metrics\x18\x03 \x03(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.ChallengeMetrics:h\xea\x41\x65\n*recaptchaenterprise.googleapis.com/Metrics\x12%projects/{project}/keys/{key}/metrics*\x07metrics2\x07metrics\"<\n\x1fRetrieveLegacySecretKeyResponse\x12\x19\n\x11legacy_secret_key\x18\x01 \x01(\t\"\xb3\x06\n\x03Key\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x19\n\x0c\x64isplay_name\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12K\n\x0cweb_settings\x18\x03 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.WebKeySettingsH\x00\x12S\n\x10\x61ndroid_settings\x18\x04 \x01(\x0b\x32\x37.google.cloud.recaptchaenterprise.v1.AndroidKeySettingsH\x00\x12K\n\x0cios_settings\x18\x05 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IOSKeySettingsH\x00\x12S\n\x10\x65xpress_settings\x18\x0b \x01(\x0b\x32\x37.google.cloud.recaptchaenterprise.v1.ExpressKeySettingsH\x00\x12I\n\x06labels\x18\x06 \x03(\x0b\x32\x34.google.cloud.recaptchaenterprise.v1.Key.LabelsEntryB\x03\xe0\x41\x01\x12\x34\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12Q\n\x0ftesting_options\x18\t \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.TestingOptionsB\x03\xe0\x41\x01\x12K\n\x0cwaf_settings\x18\n \x01(\x0b\x32\x30.google.cloud.recaptchaenterprise.v1.WafSettingsB\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:U\xea\x41R\n&recaptchaenterprise.googleapis.com/Key\x12\x1dprojects/{project}/keys/{key}*\x04keys2\x03keyB\x13\n\x11platform_settings\"\xf2\x01\n\x0eTestingOptions\x12\x1a\n\rtesting_score\x18\x01 \x01(\x02\x42\x03\xe0\x41\x01\x12\x64\n\x11testing_challenge\x18\x02 \x01(\x0e\x32\x44.google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallengeB\x03\xe0\x41\x01\"^\n\x10TestingChallenge\x12!\n\x1dTESTING_CHALLENGE_UNSPECIFIED\x10\x00\x12\r\n\tNOCAPTCHA\x10\x01\x12\x18\n\x14UNSOLVABLE_CHALLENGE\x10\x02\"\xc5\x08\n\x0eWebKeySettings\x12\x1e\n\x11\x61llow_all_domains\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1c\n\x0f\x61llowed_domains\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x61llow_amp_traffic\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x62\n\x10integration_type\x18\x04 \x01(\x0e\x32\x43.google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationTypeB\x03\xe0\x41\x02\x12{\n\x1d\x63hallenge_security_preference\x18\x05 \x01(\x0e\x32O.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreferenceB\x03\xe0\x41\x01\x12\x66\n\x12\x63hallenge_settings\x18\x06 \x01(\x0b\x32\x45.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSettingsB\x03\xe0\x41\x01\x1a.\n\x0e\x41\x63tionSettings\x12\x1c\n\x0fscore_threshold\x18\x01 \x01(\x02\x42\x03\xe0\x41\x02\x1a\xea\x02\n\x11\x43hallengeSettings\x12\x61\n\x10\x64\x65\x66\x61ult_settings\x18\x01 \x01(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.WebKeySettings.ActionSettingsB\x03\xe0\x41\x02\x12w\n\x0f\x61\x63tion_settings\x18\x02 \x03(\x0b\x32Y.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSettings.ActionSettingsEntryB\x03\xe0\x41\x01\x1ay\n\x13\x41\x63tionSettingsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12Q\n\x05value\x18\x02 \x01(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.WebKeySettings.ActionSettings:\x02\x38\x01\"w\n\x0fIntegrationType\x12 \n\x1cINTEGRATION_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05SCORE\x10\x01\x12\x0c\n\x08\x43HECKBOX\x10\x02\x12\r\n\tINVISIBLE\x10\x03\x12\x1a\n\x16POLICY_BASED_CHALLENGE\x10\x05\"v\n\x1b\x43hallengeSecurityPreference\x12-\n)CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED\x10\x00\x12\r\n\tUSABILITY\x10\x01\x12\x0b\n\x07\x42\x41LANCE\x10\x02\x12\x0c\n\x08SECURITY\x10\x03\"\x96\x01\n\x12\x41ndroidKeySettings\x12$\n\x17\x61llow_all_package_names\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\"\n\x15\x61llowed_package_names\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x36\n)support_non_google_app_store_distribution\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\"\xac\x01\n\x0eIOSKeySettings\x12!\n\x14\x61llow_all_bundle_ids\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1f\n\x12\x61llowed_bundle_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12V\n\x12\x61pple_developer_id\x18\x03 \x01(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.AppleDeveloperIdB\x03\xe0\x41\x01\"\x14\n\x12\x45xpressKeySettings\"Z\n\x10\x41ppleDeveloperId\x12\x1b\n\x0bprivate_key\x18\x01 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x04\x12\x13\n\x06key_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x14\n\x07team_id\x18\x03 \x01(\tB\x03\xe0\x41\x02\"\xa9\x01\n\x11ScoreDistribution\x12_\n\rscore_buckets\x18\x01 \x03(\x0b\x32H.google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry\x1a\x33\n\x11ScoreBucketsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\xab\x02\n\x0cScoreMetrics\x12O\n\x0foverall_metrics\x18\x01 \x01(\x0b\x32\x36.google.cloud.recaptchaenterprise.v1.ScoreDistribution\x12\\\n\x0e\x61\x63tion_metrics\x18\x02 \x03(\x0b\x32\x44.google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry\x1al\n\x12\x41\x63tionMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x45\n\x05value\x18\x02 \x01(\x0b\x32\x36.google.cloud.recaptchaenterprise.v1.ScoreDistribution:\x02\x38\x01\"o\n\x10\x43hallengeMetrics\x12\x16\n\x0epageload_count\x18\x01 \x01(\x03\x12\x17\n\x0fnocaptcha_count\x18\x02 \x01(\x03\x12\x14\n\x0c\x66\x61iled_count\x18\x03 \x01(\x03\x12\x14\n\x0cpassed_count\x18\x04 \x01(\x03\"\x95\x01\n\x18\x46irewallPolicyAssessment\x12&\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x12.google.rpc.StatusB\x03\xe0\x41\x03\x12Q\n\x0f\x66irewall_policy\x18\x08 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicyB\x03\xe0\x41\x03\"\x82\x06\n\x0e\x46irewallAction\x12P\n\x05\x61llow\x18\x01 \x01(\x0b\x32?.google.cloud.recaptchaenterprise.v1.FirewallAction.AllowActionH\x00\x12P\n\x05\x62lock\x18\x02 \x01(\x0b\x32?.google.cloud.recaptchaenterprise.v1.FirewallAction.BlockActionH\x00\x12t\n\x18include_recaptcha_script\x18\x06 \x01(\x0b\x32P.google.cloud.recaptchaenterprise.v1.FirewallAction.IncludeRecaptchaScriptActionH\x00\x12V\n\x08redirect\x18\x05 \x01(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.FirewallAction.RedirectActionH\x00\x12Z\n\nsubstitute\x18\x03 \x01(\x0b\x32\x44.google.cloud.recaptchaenterprise.v1.FirewallAction.SubstituteActionH\x00\x12Y\n\nset_header\x18\x04 \x01(\x0b\x32\x43.google.cloud.recaptchaenterprise.v1.FirewallAction.SetHeaderActionH\x00\x1a\r\n\x0b\x41llowAction\x1a\r\n\x0b\x42lockAction\x1a\x1e\n\x1cIncludeRecaptchaScriptAction\x1a\x10\n\x0eRedirectAction\x1a%\n\x10SubstituteAction\x12\x11\n\x04path\x18\x01 \x01(\tB\x03\xe0\x41\x01\x1a\x37\n\x0fSetHeaderAction\x12\x10\n\x03key\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x02 \x01(\tB\x03\xe0\x41\x01\x42\x17\n\x15\x66irewall_action_oneof\"\xc5\x02\n\x0e\x46irewallPolicy\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x11\n\x04path\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tcondition\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12I\n\x07\x61\x63tions\x18\x06 \x03(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallActionB\x03\xe0\x41\x01:\x8f\x01\xea\x41\x8b\x01\n1recaptchaenterprise.googleapis.com/FirewallPolicy\x12\x34projects/{project}/firewallpolicies/{firewallpolicy}*\x10\x66irewallPolicies2\x0e\x66irewallPolicy\"\xb6\x01\n)ListRelatedAccountGroupMembershipsRequest\x12X\n\x06parent\x18\x01 \x01(\tBH\xe0\x41\x02\xfa\x41\x42\x12@recaptchaenterprise.googleapis.com/RelatedAccountGroupMembership\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\xb4\x01\n*ListRelatedAccountGroupMembershipsResponse\x12m\n!related_account_group_memberships\x18\x01 \x03(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa2\x01\n\x1fListRelatedAccountGroupsRequest\x12N\n\x06parent\x18\x01 \x01(\tB>\xe0\x41\x02\xfa\x41\x38\x12\x36recaptchaenterprise.googleapis.com/RelatedAccountGroup\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\x95\x01\n ListRelatedAccountGroupsResponse\x12X\n\x16related_account_groups\x18\x01 \x03(\x0b\x32\x38.google.cloud.recaptchaenterprise.v1.RelatedAccountGroup\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xdf\x01\n+SearchRelatedAccountGroupMembershipsRequest\x12\x44\n\x07project\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x17\n\naccount_id\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12 \n\x11hashed_account_id\x18\x02 \x01(\x0c\x42\x05\x18\x01\xe0\x41\x01\x12\x16\n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x04 \x01(\tB\x03\xe0\x41\x01\"\xb6\x01\n,SearchRelatedAccountGroupMembershipsResponse\x12m\n!related_account_group_memberships\x18\x01 \x03(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa8\x01\n\x14\x41\x64\x64IpOverrideRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12R\n\x10ip_override_data\x18\x02 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IpOverrideDataB\x03\xe0\x41\x02\"\x17\n\x15\x41\x64\x64IpOverrideResponse\"\xab\x01\n\x17RemoveIpOverrideRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12R\n\x10ip_override_data\x18\x02 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IpOverrideDataB\x03\xe0\x41\x02\"\x1a\n\x18RemoveIpOverrideResponse\"\x89\x01\n\x16ListIpOverridesRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"}\n\x17ListIpOverridesResponse\x12I\n\x0cip_overrides\x18\x01 \x03(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IpOverrideData\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xc8\x02\n\x1dRelatedAccountGroupMembership\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x08\xe0\x41\x02\x12\x12\n\naccount_id\x18\x04 \x01(\t\x12\x1d\n\x11hashed_account_id\x18\x02 \x01(\x0c\x42\x02\x18\x01:\xdd\x01\xea\x41\xd9\x01\n@recaptchaenterprise.googleapis.com/RelatedAccountGroupMembership\x12Vprojects/{project}/relatedaccountgroups/{relatedaccountgroup}/memberships/{membership}*\x1erelatedAccountGroupMemberships2\x1drelatedAccountGroupMembership\"\xd4\x01\n\x13RelatedAccountGroup\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x08\xe0\x41\x02:\xa6\x01\xea\x41\xa2\x01\n6recaptchaenterprise.googleapis.com/RelatedAccountGroup\x12=projects/{project}/relatedaccountgroups/{relatedaccountgroup}*\x14relatedAccountGroups2\x13relatedAccountGroup\"\x8b\x03\n\x0bWafSettings\x12U\n\x0bwaf_service\x18\x01 \x01(\x0e\x32;.google.cloud.recaptchaenterprise.v1.WafSettings.WafServiceB\x03\xe0\x41\x02\x12U\n\x0bwaf_feature\x18\x02 \x01(\x0e\x32;.google.cloud.recaptchaenterprise.v1.WafSettings.WafFeatureB\x03\xe0\x41\x02\"s\n\nWafFeature\x12\x1b\n\x17WAF_FEATURE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HALLENGE_PAGE\x10\x01\x12\x11\n\rSESSION_TOKEN\x10\x02\x12\x10\n\x0c\x41\x43TION_TOKEN\x10\x03\x12\x0f\n\x07\x45XPRESS\x10\x05\x1a\x02\x08\x01\"Y\n\nWafService\x12\x1b\n\x17WAF_SERVICE_UNSPECIFIED\x10\x00\x12\x06\n\x02\x43\x41\x10\x01\x12\n\n\x06\x46\x41STLY\x10\x03\x12\x0e\n\nCLOUDFLARE\x10\x04\x12\n\n\x06\x41KAMAI\x10\x05\"B\n\x15\x41ssessmentEnvironment\x12\x13\n\x06\x63lient\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x07version\x18\x02 \x01(\tB\x03\xe0\x41\x01\"\xc1\x01\n\x0eIpOverrideData\x12\x17\n\x02ip\x18\x01 \x01(\tB\x0b\xe0\x41\x02\xe2\x8c\xcf\xd7\x08\x02\x08\x04\x12\\\n\roverride_type\x18\x03 \x01(\x0e\x32@.google.cloud.recaptchaenterprise.v1.IpOverrideData.OverrideTypeB\x03\xe0\x41\x02\"8\n\x0cOverrideType\x12\x1d\n\x19OVERRIDE_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05\x41LLOW\x10\x01\x32\xe5$\n\x1aRecaptchaEnterpriseService\x12\xce\x01\n\x10\x43reateAssessment\x12<.google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest\x1a/.google.cloud.recaptchaenterprise.v1.Assessment\"K\xda\x41\x11parent,assessment\x82\xd3\xe4\x93\x02\x31\"#/v1/{parent=projects/*}/assessments:\nassessment\x12\xe0\x01\n\x12\x41nnotateAssessment\x12>.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest\x1a?.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse\"I\xda\x41\x0fname,annotation\x82\xd3\xe4\x93\x02\x31\",/v1/{name=projects/*/assessments/*}:annotate:\x01*\x12\xa4\x01\n\tCreateKey\x12\x35.google.cloud.recaptchaenterprise.v1.CreateKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"6\xda\x41\nparent,key\x82\xd3\xe4\x93\x02#\"\x1c/v1/{parent=projects/*}/keys:\x03key\x12\xa6\x01\n\x08ListKeys\x12\x34.google.cloud.recaptchaenterprise.v1.ListKeysRequest\x1a\x35.google.cloud.recaptchaenterprise.v1.ListKeysResponse\"-\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{parent=projects/*}/keys\x12\xe7\x01\n\x17RetrieveLegacySecretKey\x12\x43.google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest\x1a\x44.google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse\"A\xda\x41\x03key\x82\xd3\xe4\x93\x02\x35\x12\x33/v1/{key=projects/*/keys/*}:retrieveLegacySecretKey\x12\x93\x01\n\x06GetKey\x12\x32.google.cloud.recaptchaenterprise.v1.GetKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"+\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{name=projects/*/keys/*}\x12\xad\x01\n\tUpdateKey\x12\x35.google.cloud.recaptchaenterprise.v1.UpdateKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"?\xda\x41\x0fkey,update_mask\x82\xd3\xe4\x93\x02\'2 /v1/{key.name=projects/*/keys/*}:\x03key\x12\x87\x01\n\tDeleteKey\x12\x35.google.cloud.recaptchaenterprise.v1.DeleteKeyRequest\x1a\x16.google.protobuf.Empty\"+\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1e*\x1c/v1/{name=projects/*/keys/*}\x12\x9f\x01\n\nMigrateKey\x12\x36.google.cloud.recaptchaenterprise.v1.MigrateKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"/\x82\xd3\xe4\x93\x02)\"$/v1/{name=projects/*/keys/*}:migrate:\x01*\x12\xd5\x01\n\rAddIpOverride\x12\x39.google.cloud.recaptchaenterprise.v1.AddIpOverrideRequest\x1a:.google.cloud.recaptchaenterprise.v1.AddIpOverrideResponse\"M\xda\x41\x15name,ip_override_data\x82\xd3\xe4\x93\x02/\"*/v1/{name=projects/*/keys/*}:addIpOverride:\x01*\x12\xe1\x01\n\x10RemoveIpOverride\x12<.google.cloud.recaptchaenterprise.v1.RemoveIpOverrideRequest\x1a=.google.cloud.recaptchaenterprise.v1.RemoveIpOverrideResponse\"P\xda\x41\x15name,ip_override_data\x82\xd3\xe4\x93\x02\x32\"-/v1/{name=projects/*/keys/*}:removeIpOverride:\x01*\x12\xcd\x01\n\x0fListIpOverrides\x12;.google.cloud.recaptchaenterprise.v1.ListIpOverridesRequest\x1a<.google.cloud.recaptchaenterprise.v1.ListIpOverridesResponse\"?\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x30\x12./v1/{parent=projects/*/keys/*}:listIpOverrides\x12\xa7\x01\n\nGetMetrics\x12\x36.google.cloud.recaptchaenterprise.v1.GetMetricsRequest\x1a,.google.cloud.recaptchaenterprise.v1.Metrics\"3\xda\x41\x04name\x82\xd3\xe4\x93\x02&\x12$/v1/{name=projects/*/keys/*/metrics}\x12\xe9\x01\n\x14\x43reateFirewallPolicy\x12@.google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest\x1a\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\"Z\xda\x41\x16parent,firewall_policy\x82\xd3\xe4\x93\x02;\"(/v1/{parent=projects/*}/firewallpolicies:\x0f\x66irewall_policy\x12\xd6\x01\n\x14ListFirewallPolicies\x12@.google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesRequest\x1a\x41.google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse\"9\xda\x41\x06parent\x82\xd3\xe4\x93\x02*\x12(/v1/{parent=projects/*}/firewallpolicies\x12\xc0\x01\n\x11GetFirewallPolicy\x12=.google.cloud.recaptchaenterprise.v1.GetFirewallPolicyRequest\x1a\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\"7\xda\x41\x04name\x82\xd3\xe4\x93\x02*\x12(/v1/{name=projects/*/firewallpolicies/*}\x12\xfe\x01\n\x14UpdateFirewallPolicy\x12@.google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest\x1a\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\"o\xda\x41\x1b\x66irewall_policy,update_mask\x82\xd3\xe4\x93\x02K28/v1/{firewall_policy.name=projects/*/firewallpolicies/*}:\x0f\x66irewall_policy\x12\xa9\x01\n\x14\x44\x65leteFirewallPolicy\x12@.google.cloud.recaptchaenterprise.v1.DeleteFirewallPolicyRequest\x1a\x16.google.protobuf.Empty\"7\xda\x41\x04name\x82\xd3\xe4\x93\x02**(/v1/{name=projects/*/firewallpolicies/*}\x12\xf0\x01\n\x17ReorderFirewallPolicies\x12\x43.google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesRequest\x1a\x44.google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesResponse\"J\xda\x41\x0cparent,names\x82\xd3\xe4\x93\x02\x35\"0/v1/{parent=projects/*}/firewallpolicies:reorder:\x01*\x12\xe6\x01\n\x18ListRelatedAccountGroups\x12\x44.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest\x1a\x45.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse\"=\xda\x41\x06parent\x82\xd3\xe4\x93\x02.\x12,/v1/{parent=projects/*}/relatedaccountgroups\x12\x92\x02\n\"ListRelatedAccountGroupMemberships\x12N.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest\x1aO.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse\"K\xda\x41\x06parent\x82\xd3\xe4\x93\x02<\x12:/v1/{parent=projects/*/relatedaccountgroups/*}/memberships\x12\xb2\x02\n$SearchRelatedAccountGroupMemberships\x12P.google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest\x1aQ.google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse\"e\xda\x41\x19project,hashed_account_id\x82\xd3\xe4\x93\x02\x43\">/v1/{project=projects/*}/relatedaccountgroupmemberships:search:\x01*\x1aV\xca\x41\"recaptchaenterprise.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\x99\x02\n!com.google.recaptchaenterprise.v1B\x18RecaptchaEnterpriseProtoP\x01Z\\cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb;recaptchaenterprisepb\xa2\x02\x04GCRE\xaa\x02#Google.Cloud.RecaptchaEnterprise.V1\xca\x02#Google\\Cloud\\RecaptchaEnterprise\\V1\xea\x02&Google::Cloud::RecaptchaEnterprise::V1b\x06proto3" +descriptor_data = "\n=google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto\x12#google.cloud.recaptchaenterprise.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x17google/api/client.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a\x1bgoogle/api/field_info.proto\x1a\x19google/api/resource.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x17google/rpc/status.proto\"\xa8\x01\n\x17\x43reateAssessmentRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12H\n\nassessment\x18\x02 \x01(\x0b\x32/.google.cloud.recaptchaenterprise.v1.AssessmentB\x03\xe0\x41\x02\"\x92\x05\n\x10TransactionEvent\x12\x63\n\nevent_type\x18\x01 \x01(\x0e\x32J.google.cloud.recaptchaenterprise.v1.TransactionEvent.TransactionEventTypeB\x03\xe0\x41\x01\x12\x13\n\x06reason\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x03 \x01(\x01\x42\x03\xe0\x41\x01\x12\x33\n\nevent_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\"\xba\x03\n\x14TransactionEventType\x12&\n\"TRANSACTION_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10MERCHANT_APPROVE\x10\x01\x12\x11\n\rMERCHANT_DENY\x10\x02\x12\x11\n\rMANUAL_REVIEW\x10\x03\x12\x11\n\rAUTHORIZATION\x10\x04\x12\x19\n\x15\x41UTHORIZATION_DECLINE\x10\x05\x12\x13\n\x0fPAYMENT_CAPTURE\x10\x06\x12\x1b\n\x17PAYMENT_CAPTURE_DECLINE\x10\x07\x12\n\n\x06\x43\x41NCEL\x10\x08\x12\x16\n\x12\x43HARGEBACK_INQUIRY\x10\t\x12\x14\n\x10\x43HARGEBACK_ALERT\x10\n\x12\x16\n\x12\x46RAUD_NOTIFICATION\x10\x0b\x12\x0e\n\nCHARGEBACK\x10\x0c\x12\x1c\n\x18\x43HARGEBACK_REPRESENTMENT\x10\r\x12\x16\n\x12\x43HARGEBACK_REVERSE\x10\x0e\x12\x12\n\x0eREFUND_REQUEST\x10\x0f\x12\x12\n\x0eREFUND_DECLINE\x10\x10\x12\n\n\x06REFUND\x10\x11\x12\x12\n\x0eREFUND_REVERSE\x10\x12\"j\n\x18PhoneAuthenticationEvent\x12\x19\n\x0cphone_number\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x33\n\nevent_time\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\"\xeb\x07\n\x19\x41nnotateAssessmentRequest\x12\x43\n\x04name\x18\x01 \x01(\tB5\xe0\x41\x02\xfa\x41/\n-recaptchaenterprise.googleapis.com/Assessment\x12\x62\n\nannotation\x18\x02 \x01(\x0e\x32I.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.AnnotationB\x03\xe0\x41\x01\x12[\n\x07reasons\x18\x03 \x03(\x0e\x32\x45.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest.ReasonB\x03\xe0\x41\x01\x12\x17\n\naccount_id\x18\x07 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11hashed_account_id\x18\x04 \x01(\x0c\x42\x03\xe0\x41\x01\x12U\n\x11transaction_event\x18\x05 \x01(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.TransactionEventB\x03\xe0\x41\x01\x12\x66\n\x1aphone_authentication_event\x18\x06 \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.PhoneAuthenticationEventB\x03\xe0\x41\x01\"~\n\nAnnotation\x12\x1a\n\x16\x41NNOTATION_UNSPECIFIED\x10\x00\x12\x0e\n\nLEGITIMATE\x10\x01\x12\x0e\n\nFRAUDULENT\x10\x02\x12\x18\n\x10PASSWORD_CORRECT\x10\x03\x1a\x02\x08\x01\x12\x1a\n\x12PASSWORD_INCORRECT\x10\x04\x1a\x02\x08\x01\"\xcf\x02\n\x06Reason\x12\x16\n\x12REASON_UNSPECIFIED\x10\x00\x12\x0e\n\nCHARGEBACK\x10\x01\x12\x14\n\x10\x43HARGEBACK_FRAUD\x10\x08\x12\x16\n\x12\x43HARGEBACK_DISPUTE\x10\t\x12\n\n\x06REFUND\x10\n\x12\x10\n\x0cREFUND_FRAUD\x10\x0b\x12\x18\n\x14TRANSACTION_ACCEPTED\x10\x0c\x12\x18\n\x14TRANSACTION_DECLINED\x10\r\x12\x16\n\x12PAYMENT_HEURISTICS\x10\x02\x12\x18\n\x14INITIATED_TWO_FACTOR\x10\x07\x12\x15\n\x11PASSED_TWO_FACTOR\x10\x03\x12\x15\n\x11\x46\x41ILED_TWO_FACTOR\x10\x04\x12\x14\n\x10\x43ORRECT_PASSWORD\x10\x05\x12\x16\n\x12INCORRECT_PASSWORD\x10\x06\x12\x0f\n\x0bSOCIAL_SPAM\x10\x0e\"\x1c\n\x1a\x41nnotateAssessmentResponse\"\xb4\x01\n\x18\x45ndpointVerificationInfo\x12\x17\n\remail_address\x18\x01 \x01(\tH\x00\x12\x16\n\x0cphone_number\x18\x02 \x01(\tH\x00\x12\x1a\n\rrequest_token\x18\x03 \x01(\tB\x03\xe0\x41\x03\x12?\n\x16last_verification_time\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x42\n\n\x08\x65ndpoint\"\xdb\x04\n\x17\x41\x63\x63ountVerificationInfo\x12U\n\tendpoints\x18\x01 \x03(\x0b\x32=.google.cloud.recaptchaenterprise.v1.EndpointVerificationInfoB\x03\xe0\x41\x01\x12\x1a\n\rlanguage_code\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12l\n\x1alatest_verification_result\x18\x07 \x01(\x0e\x32\x43.google.cloud.recaptchaenterprise.v1.AccountVerificationInfo.ResultB\x03\xe0\x41\x03\x12\x14\n\x08username\x18\x02 \x01(\tB\x02\x18\x01\"\xc8\x02\n\x06Result\x12\x16\n\x12RESULT_UNSPECIFIED\x10\x00\x12\x19\n\x15SUCCESS_USER_VERIFIED\x10\x01\x12\x1b\n\x17\x45RROR_USER_NOT_VERIFIED\x10\x02\x12$\n ERROR_SITE_ONBOARDING_INCOMPLETE\x10\x03\x12\x1f\n\x1b\x45RROR_RECIPIENT_NOT_ALLOWED\x10\x04\x12)\n%ERROR_RECIPIENT_ABUSE_LIMIT_EXHAUSTED\x10\x05\x12\x1b\n\x17\x45RROR_CRITICAL_INTERNAL\x10\x06\x12\"\n\x1e\x45RROR_CUSTOMER_QUOTA_EXHAUSTED\x10\x07\x12\x1f\n\x1b\x45RROR_VERIFICATION_BYPASSED\x10\x08\x12\x1a\n\x16\x45RROR_VERDICT_MISMATCH\x10\t\"\xcc\x01\n\x1fPrivatePasswordLeakVerification\x12\x1f\n\x12lookup_hash_prefix\x18\x01 \x01(\x0c\x42\x03\xe0\x41\x02\x12,\n\x1f\x65ncrypted_user_credentials_hash\x18\x02 \x01(\x0c\x42\x03\xe0\x41\x01\x12*\n\x1d\x65ncrypted_leak_match_prefixes\x18\x03 \x03(\x0c\x42\x03\xe0\x41\x03\x12.\n!reencrypted_user_credentials_hash\x18\x04 \x01(\x0c\x42\x03\xe0\x41\x03\"\xfb\t\n\nAssessment\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x03\xe0\x41\x08\x12>\n\x05\x65vent\x18\x02 \x01(\x0b\x32*.google.cloud.recaptchaenterprise.v1.EventB\x03\xe0\x41\x01\x12M\n\rrisk_analysis\x18\x03 \x01(\x0b\x32\x31.google.cloud.recaptchaenterprise.v1.RiskAnalysisB\x03\xe0\x41\x03\x12S\n\x10token_properties\x18\x04 \x01(\x0b\x32\x34.google.cloud.recaptchaenterprise.v1.TokenPropertiesB\x03\xe0\x41\x03\x12_\n\x14\x61\x63\x63ount_verification\x18\x05 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.AccountVerificationInfoB\x03\xe0\x41\x01\x12h\n\x1b\x61\x63\x63ount_defender_assessment\x18\x06 \x01(\x0b\x32>.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessmentB\x03\xe0\x41\x03\x12u\n\"private_password_leak_verification\x18\x08 \x01(\x0b\x32\x44.google.cloud.recaptchaenterprise.v1.PrivatePasswordLeakVerificationB\x03\xe0\x41\x01\x12\x66\n\x1a\x66irewall_policy_assessment\x18\n \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.FirewallPolicyAssessmentB\x03\xe0\x41\x03\x12h\n\x1b\x66raud_prevention_assessment\x18\x0b \x01(\x0b\x32>.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessmentB\x03\xe0\x41\x03\x12M\n\rfraud_signals\x18\r \x01(\x0b\x32\x31.google.cloud.recaptchaenterprise.v1.FraudSignalsB\x03\xe0\x41\x03\x12^\n\x16phone_fraud_assessment\x18\x0c \x01(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.PhoneFraudAssessmentB\x03\xe0\x41\x03\x12_\n\x16\x61ssessment_environment\x18\x0e \x01(\x0b\x32:.google.cloud.recaptchaenterprise.v1.AssessmentEnvironmentB\x03\xe0\x41\x01\x12U\n\x11policy_evaluation\x18\x10 \x01(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.PolicyEvaluationB\x03\xe0\x41\x03:x\xea\x41u\n-recaptchaenterprise.googleapis.com/Assessment\x12+projects/{project}/assessments/{assessment}*\x0b\x61ssessments2\nassessment\"\xb0\x05\n\x05\x45vent\x12\x12\n\x05token\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08site_key\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x17\n\nuser_agent\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12$\n\x0fuser_ip_address\x18\x04 \x01(\tB\x0b\xe0\x41\x01\xe2\x8c\xcf\xd7\x08\x02\x08\x04\x12\x1c\n\x0f\x65xpected_action\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12 \n\x11hashed_account_id\x18\x06 \x01(\x0c\x42\x05\x18\x01\xe0\x41\x01\x12\x14\n\x07\x65xpress\x18\x0e \x01(\x08\x42\x03\xe0\x41\x01\x12\x1a\n\rrequested_uri\x18\x08 \x01(\tB\x03\xe0\x41\x01\x12!\n\x14waf_token_assessment\x18\t \x01(\x08\x42\x03\xe0\x41\x01\x12\x10\n\x03ja3\x18\n \x01(\tB\x03\xe0\x41\x01\x12\x10\n\x03ja4\x18\x12 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x07headers\x18\x0b \x03(\tB\x03\xe0\x41\x01\x12\'\n\x1a\x66irewall_policy_evaluation\x18\x0c \x01(\x08\x42\x03\xe0\x41\x01\x12S\n\x10transaction_data\x18\r \x01(\x0b\x32\x34.google.cloud.recaptchaenterprise.v1.TransactionDataB\x03\xe0\x41\x01\x12\x45\n\tuser_info\x18\x0f \x01(\x0b\x32-.google.cloud.recaptchaenterprise.v1.UserInfoB\x03\xe0\x41\x01\x12Y\n\x10\x66raud_prevention\x18\x11 \x01(\x0e\x32:.google.cloud.recaptchaenterprise.v1.Event.FraudPreventionB\x03\xe0\x41\x01\"N\n\x0f\x46raudPrevention\x12 \n\x1c\x46RAUD_PREVENTION_UNSPECIFIED\x10\x00\x12\x0b\n\x07\x45NABLED\x10\x01\x12\x0c\n\x08\x44ISABLED\x10\x02\"\xa0\n\n\x0fTransactionData\x12\x1b\n\x0etransaction_id\x18\x0b \x01(\tH\x00\x88\x01\x01\x12\x1b\n\x0epayment_method\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x15\n\x08\x63\x61rd_bin\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0e\x63\x61rd_last_four\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1a\n\rcurrency_code\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x05 \x01(\x01\x42\x03\xe0\x41\x01\x12\x1b\n\x0eshipping_value\x18\x0c \x01(\x01\x42\x03\xe0\x41\x01\x12[\n\x10shipping_address\x18\x06 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.TransactionData.AddressB\x03\xe0\x41\x01\x12Z\n\x0f\x62illing_address\x18\x07 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.TransactionData.AddressB\x03\xe0\x41\x01\x12L\n\x04user\x18\x08 \x01(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.TransactionData.UserB\x03\xe0\x41\x01\x12Q\n\tmerchants\x18\r \x03(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.TransactionData.UserB\x03\xe0\x41\x01\x12M\n\x05items\x18\x0e \x03(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.TransactionData.ItemB\x03\xe0\x41\x01\x12[\n\x0cgateway_info\x18\n \x01(\x0b\x32@.google.cloud.recaptchaenterprise.v1.TransactionData.GatewayInfoB\x03\xe0\x41\x01\x1a\xa4\x01\n\x07\x41\x64\x64ress\x12\x16\n\trecipient\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x07\x61\x64\x64ress\x18\x02 \x03(\tB\x03\xe0\x41\x01\x12\x15\n\x08locality\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12 \n\x13\x61\x64ministrative_area\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bregion_code\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0bpostal_code\x18\x06 \x01(\tB\x03\xe0\x41\x01\x1a\xa2\x01\n\x04User\x12\x17\n\naccount_id\x18\x06 \x01(\tB\x03\xe0\x41\x01\x12\x18\n\x0b\x63reation_ms\x18\x01 \x01(\x03\x42\x03\xe0\x41\x01\x12\x12\n\x05\x65mail\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0e\x65mail_verified\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12\x19\n\x0cphone_number\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x1b\n\x0ephone_verified\x18\x05 \x01(\x08\x42\x03\xe0\x41\x01\x1a\x66\n\x04Item\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x02 \x01(\x01\x42\x03\xe0\x41\x01\x12\x15\n\x08quantity\x18\x03 \x01(\x03\x42\x03\xe0\x41\x01\x12 \n\x13merchant_account_id\x18\x04 \x01(\tB\x03\xe0\x41\x01\x1a\x84\x01\n\x0bGatewayInfo\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\"\n\x15gateway_response_code\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x61vs_response_code\x18\x03 \x01(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x63vv_response_code\x18\x04 \x01(\tB\x03\xe0\x41\x01\x42\x11\n\x0f_transaction_id\"\xa5\x01\n\x08UserInfo\x12<\n\x13\x63reate_account_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01\x12\x17\n\naccount_id\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x42\n\x08user_ids\x18\x03 \x03(\x0b\x32+.google.cloud.recaptchaenterprise.v1.UserIdB\x03\xe0\x41\x01\"`\n\x06UserId\x12\x14\n\x05\x65mail\x18\x01 \x01(\tB\x03\xe0\x41\x01H\x00\x12\x1b\n\x0cphone_number\x18\x02 \x01(\tB\x03\xe0\x41\x01H\x00\x12\x17\n\x08username\x18\x03 \x01(\tB\x03\xe0\x41\x01H\x00\x42\n\n\x08id_oneof\"\xdb\x05\n\x0cRiskAnalysis\x12\x12\n\x05score\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12\\\n\x07reasons\x18\x02 \x03(\x0e\x32\x46.google.cloud.recaptchaenterprise.v1.RiskAnalysis.ClassificationReasonB\x03\xe0\x41\x03\x12%\n\x18\x65xtended_verdict_reasons\x18\x03 \x03(\tB\x03\xe0\x41\x03\x12T\n\x13last_challenge_type\x18\x06 \x01(\x0e\x32\x32.google.cloud.recaptchaenterprise.v1.ChallengeTypeB\x03\xe0\x41\x03\x12S\n\tchallenge\x18\x04 \x01(\x0e\x32;.google.cloud.recaptchaenterprise.v1.RiskAnalysis.ChallengeB\x03\xe0\x41\x03\x12\x44\n\rverified_bots\x18\x05 \x03(\x0b\x32(.google.cloud.recaptchaenterprise.v1.BotB\x03\xe0\x41\x03\"\xf1\x01\n\x14\x43lassificationReason\x12%\n!CLASSIFICATION_REASON_UNSPECIFIED\x10\x00\x12\x0e\n\nAUTOMATION\x10\x01\x12\x1a\n\x16UNEXPECTED_ENVIRONMENT\x10\x02\x12\x14\n\x10TOO_MUCH_TRAFFIC\x10\x03\x12\x1d\n\x19UNEXPECTED_USAGE_PATTERNS\x10\x04\x12\x18\n\x14LOW_CONFIDENCE_SCORE\x10\x05\x12\x19\n\x11SUSPECTED_CARDING\x10\x06\x1a\x02\x08\x01\x12\x1c\n\x14SUSPECTED_CHARGEBACK\x10\x07\x1a\x02\x08\x01\"M\n\tChallenge\x12\x19\n\x15\x43HALLENGE_UNSPECIFIED\x10\x00\x12\r\n\tNOCAPTCHA\x10\x01\x12\n\n\x06PASSED\x10\x02\x12\n\n\x06\x46\x41ILED\x10\x03\"\xbd\x01\n\x03\x42ot\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12G\n\x08\x62ot_type\x18\x02 \x01(\x0e\x32\x30.google.cloud.recaptchaenterprise.v1.Bot.BotTypeB\x03\xe0\x41\x01\"Z\n\x07\x42otType\x12\x18\n\x14\x42OT_TYPE_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x41I_AGENT\x10\x01\x12\x13\n\x0f\x43ONTENT_SCRAPER\x10\x02\x12\x12\n\x0eSEARCH_INDEXER\x10\x03\"\xf9\x03\n\x0fTokenProperties\x12\x12\n\x05valid\x18\x01 \x01(\x08\x42\x03\xe0\x41\x03\x12_\n\x0einvalid_reason\x18\x02 \x01(\x0e\x32\x42.google.cloud.recaptchaenterprise.v1.TokenProperties.InvalidReasonB\x03\xe0\x41\x03\x12\x34\n\x0b\x63reate_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12\x15\n\x08hostname\x18\x04 \x01(\tB\x03\xe0\x41\x03\x12!\n\x14\x61ndroid_package_name\x18\x08 \x01(\tB\x03\xe0\x41\x03\x12\x1a\n\rios_bundle_id\x18\t \x01(\tB\x03\xe0\x41\x03\x12\x13\n\x06\x61\x63tion\x18\x05 \x01(\tB\x03\xe0\x41\x03\"\xcf\x01\n\rInvalidReason\x12\x1e\n\x1aINVALID_REASON_UNSPECIFIED\x10\x00\x12\x1a\n\x16UNKNOWN_INVALID_REASON\x10\x01\x12\r\n\tMALFORMED\x10\x02\x12\x0b\n\x07\x45XPIRED\x10\x03\x12\x08\n\x04\x44UPE\x10\x04\x12\x0b\n\x07MISSING\x10\x05\x12\x11\n\rBROWSER_ERROR\x10\x06\x12\x15\n\x11UNEXPECTED_ACTION\x10\x07\x12\x10\n\x0cKEY_MISMATCH\x10\x08\x12\x13\n\x0f\x44OMAIN_MISMATCH\x10\t\"\xd0\x07\n\x19\x46raudPreventionAssessment\x12\x1d\n\x10transaction_risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12\x64\n\x0crisk_reasons\x18\x06 \x03(\x0b\x32I.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.RiskReasonB\x03\xe0\x41\x03\x12~\n\x19stolen_instrument_verdict\x18\x02 \x01(\x0b\x32V.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.StolenInstrumentVerdictB\x03\xe0\x41\x03\x12t\n\x14\x63\x61rd_testing_verdict\x18\x03 \x01(\x0b\x32Q.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.CardTestingVerdictB\x03\xe0\x41\x03\x12|\n\x18\x62\x65havioral_trust_verdict\x18\x04 \x01(\x0b\x32U.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.BehavioralTrustVerdictB\x03\xe0\x41\x03\x1a\xb4\x02\n\nRiskReason\x12\x65\n\x06reason\x18\x01 \x01(\x0e\x32P.google.cloud.recaptchaenterprise.v1.FraudPreventionAssessment.RiskReason.ReasonB\x03\xe0\x41\x03\"\xbe\x01\n\x06Reason\x12\x16\n\x12REASON_UNSPECIFIED\x10\x00\x12\x1d\n\x19HIGH_TRANSACTION_VELOCITY\x10\x01\x12!\n\x1d\x45XCESSIVE_ENUMERATION_PATTERN\x10\x02\x12\x1a\n\x16SHORT_IDENTITY_HISTORY\x10\x03\x12\x1b\n\x17GEOLOCATION_DISCREPANCY\x10\x04\x12!\n\x1d\x41SSOCIATED_WITH_FRAUD_CLUSTER\x10\x05\x1a,\n\x17StolenInstrumentVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x1a\'\n\x12\x43\x61rdTestingVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x1a,\n\x16\x42\x65havioralTrustVerdict\x12\x12\n\x05trust\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\"\xe3\x03\n\x0c\x46raudSignals\x12X\n\x0cuser_signals\x18\x01 \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.FraudSignals.UserSignalsB\x03\xe0\x41\x03\x12X\n\x0c\x63\x61rd_signals\x18\x02 \x01(\x0b\x32=.google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignalsB\x03\xe0\x41\x03\x1aP\n\x0bUserSignals\x12$\n\x17\x61\x63tive_days_lower_bound\x18\x01 \x01(\x05\x42\x03\xe0\x41\x03\x12\x1b\n\x0esynthetic_risk\x18\x02 \x01(\x02\x42\x03\xe0\x41\x03\x1a\xcc\x01\n\x0b\x43\x61rdSignals\x12\x61\n\x0b\x63\x61rd_labels\x18\x01 \x03(\x0e\x32G.google.cloud.recaptchaenterprise.v1.FraudSignals.CardSignals.CardLabelB\x03\xe0\x41\x03\"Z\n\tCardLabel\x12\x1a\n\x16\x43\x41RD_LABEL_UNSPECIFIED\x10\x00\x12\x0b\n\x07PREPAID\x10\x01\x12\x0b\n\x07VIRTUAL\x10\x02\x12\x17\n\x13UNEXPECTED_LOCATION\x10\x03\"\xe2\x01\n\x13SmsTollFraudVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12\x61\n\x07reasons\x18\x02 \x03(\x0e\x32K.google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict.SmsTollFraudReasonB\x03\xe0\x41\x03\"U\n\x12SmsTollFraudReason\x12%\n!SMS_TOLL_FRAUD_REASON_UNSPECIFIED\x10\x00\x12\x18\n\x14INVALID_PHONE_NUMBER\x10\x01\"u\n\x14PhoneFraudAssessment\x12]\n\x16sms_toll_fraud_verdict\x18\x01 \x01(\x0b\x32\x38.google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdictB\x03\xe0\x41\x03\"\xb8\n\n\x19\x41\x63\x63ountDefenderAssessment\x12h\n\x06labels\x18\x01 \x03(\x0e\x32S.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabelB\x03\xe0\x41\x03\x12|\n\x18\x61\x63\x63ount_takeover_verdict\x18\x04 \x01(\x0b\x32U.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountTakeoverVerdictB\x03\xe0\x41\x03\x1a\x8d\x02\n\x16\x41\x63\x63ountTakeoverVerdict\x12\x11\n\x04risk\x18\x01 \x01(\x02\x42\x03\xe0\x41\x03\x12n\n\x0crisk_reasons\x18\x04 \x03(\x0b\x32P.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountRiskReasonB\x06\xe0\x41\x03\xe0\x41\x06\x12p\n\rtrust_reasons\x18\x05 \x03(\x0b\x32Q.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountTrustReasonB\x06\xe0\x41\x03\xe0\x41\x06\x1a\xb9\x02\n\x11\x41\x63\x63ountRiskReason\x12p\n\x06reason\x18\x01 \x01(\x0e\x32[.google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountRiskReason.RiskReasonB\x03\xe0\x41\x03\"\xb1\x01\n\nRiskReason\x12\x1b\n\x17RISK_REASON_UNSPECIFIED\x10\x00\x12\"\n\x1e\x43LIENT_HISTORICAL_BOT_ACTIVITY\x10\x01\x12\"\n\x1e\x41\x43\x43OUNT_IN_LARGE_RELATED_GROUP\x10\x02\x12!\n\x1d\x43LIENT_ACCESSED_MANY_ACCOUNTS\x10\x03\x12\x1b\n\x17\x44ISPOSABLE_EMAIL_DOMAIN\x10\x04\x1a\xb0\x02\n\x12\x41\x63\x63ountTrustReason\x12r\n\x06reason\x18\x01 \x01(\x0e\x32].google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountTrustReason.TrustReasonB\x03\xe0\x41\x03\"\xa5\x01\n\x0bTrustReason\x12\x1c\n\x18TRUST_REASON_UNSPECIFIED\x10\x00\x12\x11\n\rPROFILE_MATCH\x10\x01\x12\x1d\n\x19\x41\x43\x43OUNT_HISTORY_REPUTABLE\x10\x02\x12&\n\"IDENTITY_GLOBAL_ACTIVITY_REPUTABLE\x10\x03\x12\x1e\n\x1aIDENTITY_HISTORY_REPUTABLE\x10\x04\"\xb3\x01\n\x14\x41\x63\x63ountDefenderLabel\x12&\n\"ACCOUNT_DEFENDER_LABEL_UNSPECIFIED\x10\x00\x12\x11\n\rPROFILE_MATCH\x10\x01\x12\x1d\n\x19SUSPICIOUS_LOGIN_ACTIVITY\x10\x02\x12\x1f\n\x1bSUSPICIOUS_ACCOUNT_CREATION\x10\x03\x12 \n\x1cRELATED_ACCOUNTS_NUMBER_HIGH\x10\x04\"\x93\x01\n\x10\x43reateKeyRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12:\n\x03key\x18\x02 \x01(\x0b\x32(.google.cloud.recaptchaenterprise.v1.KeyB\x03\xe0\x41\x02\"\x87\x01\n\x0fListKeysRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"c\n\x10ListKeysResponse\x12\x36\n\x04keys\x18\x01 \x03(\x0b\x32(.google.cloud.recaptchaenterprise.v1.Key\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"]\n\x1eRetrieveLegacySecretKeyRequest\x12;\n\x03key\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\"M\n\rGetKeyRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\"\x84\x01\n\x10UpdateKeyRequest\x12:\n\x03key\x18\x01 \x01(\x0b\x32(.google.cloud.recaptchaenterprise.v1.KeyB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"P\n\x10\x44\x65leteKeyRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\"\xb5\x01\n\x1b\x43reateFirewallPolicyRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12Q\n\x0f\x66irewall_policy\x18\x02 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicyB\x03\xe0\x41\x02\"\x93\x01\n\x1bListFirewallPoliciesRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\x87\x01\n\x1cListFirewallPoliciesResponse\x12N\n\x11\x66irewall_policies\x18\x01 \x03(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"c\n\x18GetFirewallPolicyRequest\x12G\n\x04name\x18\x01 \x01(\tB9\xe0\x41\x02\xfa\x41\x33\n1recaptchaenterprise.googleapis.com/FirewallPolicy\"\xa6\x01\n\x1bUpdateFirewallPolicyRequest\x12Q\n\x0f\x66irewall_policy\x18\x01 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicyB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"f\n\x1b\x44\x65leteFirewallPolicyRequest\x12G\n\x04name\x18\x01 \x01(\tB9\xe0\x41\x02\xfa\x41\x33\n1recaptchaenterprise.googleapis.com/FirewallPolicy\"\xaf\x01\n\x1eReorderFirewallPoliciesRequest\x12\x43\n\x06parent\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12H\n\x05names\x18\x02 \x03(\tB9\xe0\x41\x02\xfa\x41\x33\n1recaptchaenterprise.googleapis.com/FirewallPolicy\"!\n\x1fReorderFirewallPoliciesResponse\"r\n\x11MigrateKeyRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12\x1f\n\x12skip_billing_check\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\"U\n\x11GetMetricsRequest\x12@\n\x04name\x18\x01 \x01(\tB2\xe0\x41\x02\xfa\x41,\n*recaptchaenterprise.googleapis.com/Metrics\"\xd5\x02\n\x07Metrics\x12\x14\n\x04name\x18\x04 \x01(\tB\x06\xe0\x41\x08\xe0\x41\x03\x12.\n\nstart_time\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12H\n\rscore_metrics\x18\x02 \x03(\x0b\x32\x31.google.cloud.recaptchaenterprise.v1.ScoreMetrics\x12P\n\x11\x63hallenge_metrics\x18\x03 \x03(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.ChallengeMetrics:h\xea\x41\x65\n*recaptchaenterprise.googleapis.com/Metrics\x12%projects/{project}/keys/{key}/metrics*\x07metrics2\x07metrics\"<\n\x1fRetrieveLegacySecretKeyResponse\x12\x19\n\x11legacy_secret_key\x18\x01 \x01(\t\"\x8c\x07\n\x03Key\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x19\n\x0c\x64isplay_name\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12K\n\x0cweb_settings\x18\x03 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.WebKeySettingsH\x00\x12S\n\x10\x61ndroid_settings\x18\x04 \x01(\x0b\x32\x37.google.cloud.recaptchaenterprise.v1.AndroidKeySettingsH\x00\x12K\n\x0cios_settings\x18\x05 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IOSKeySettingsH\x00\x12S\n\x10\x65xpress_settings\x18\x0b \x01(\x0b\x32\x37.google.cloud.recaptchaenterprise.v1.ExpressKeySettingsH\x00\x12W\n\x12universal_settings\x18\r \x01(\x0b\x32\x39.google.cloud.recaptchaenterprise.v1.UniversalKeySettingsH\x00\x12I\n\x06labels\x18\x06 \x03(\x0b\x32\x34.google.cloud.recaptchaenterprise.v1.Key.LabelsEntryB\x03\xe0\x41\x01\x12\x34\n\x0b\x63reate_time\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x03\x12Q\n\x0ftesting_options\x18\t \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.TestingOptionsB\x03\xe0\x41\x01\x12K\n\x0cwaf_settings\x18\n \x01(\x0b\x32\x30.google.cloud.recaptchaenterprise.v1.WafSettingsB\x03\xe0\x41\x01\x1a-\n\x0bLabelsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01:U\xea\x41R\n&recaptchaenterprise.googleapis.com/Key\x12\x1dprojects/{project}/keys/{key}*\x04keys2\x03keyB\x13\n\x11platform_settings\"\xf2\x01\n\x0eTestingOptions\x12\x1a\n\rtesting_score\x18\x01 \x01(\x02\x42\x03\xe0\x41\x01\x12\x64\n\x11testing_challenge\x18\x02 \x01(\x0e\x32\x44.google.cloud.recaptchaenterprise.v1.TestingOptions.TestingChallengeB\x03\xe0\x41\x01\"^\n\x10TestingChallenge\x12!\n\x1dTESTING_CHALLENGE_UNSPECIFIED\x10\x00\x12\r\n\tNOCAPTCHA\x10\x01\x12\x18\n\x14UNSOLVABLE_CHALLENGE\x10\x02\"\xc5\x08\n\x0eWebKeySettings\x12\x1e\n\x11\x61llow_all_domains\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1c\n\x0f\x61llowed_domains\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x61llow_amp_traffic\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x62\n\x10integration_type\x18\x04 \x01(\x0e\x32\x43.google.cloud.recaptchaenterprise.v1.WebKeySettings.IntegrationTypeB\x03\xe0\x41\x02\x12{\n\x1d\x63hallenge_security_preference\x18\x05 \x01(\x0e\x32O.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreferenceB\x03\xe0\x41\x01\x12\x66\n\x12\x63hallenge_settings\x18\x06 \x01(\x0b\x32\x45.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSettingsB\x03\xe0\x41\x01\x1a.\n\x0e\x41\x63tionSettings\x12\x1c\n\x0fscore_threshold\x18\x01 \x01(\x02\x42\x03\xe0\x41\x02\x1a\xea\x02\n\x11\x43hallengeSettings\x12\x61\n\x10\x64\x65\x66\x61ult_settings\x18\x01 \x01(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.WebKeySettings.ActionSettingsB\x03\xe0\x41\x02\x12w\n\x0f\x61\x63tion_settings\x18\x02 \x03(\x0b\x32Y.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSettings.ActionSettingsEntryB\x03\xe0\x41\x01\x1ay\n\x13\x41\x63tionSettingsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12Q\n\x05value\x18\x02 \x01(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.WebKeySettings.ActionSettings:\x02\x38\x01\"w\n\x0fIntegrationType\x12 \n\x1cINTEGRATION_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05SCORE\x10\x01\x12\x0c\n\x08\x43HECKBOX\x10\x02\x12\r\n\tINVISIBLE\x10\x03\x12\x1a\n\x16POLICY_BASED_CHALLENGE\x10\x05\"v\n\x1b\x43hallengeSecurityPreference\x12-\n)CHALLENGE_SECURITY_PREFERENCE_UNSPECIFIED\x10\x00\x12\r\n\tUSABILITY\x10\x01\x12\x0b\n\x07\x42\x41LANCE\x10\x02\x12\x0c\n\x08SECURITY\x10\x03\"\x96\x01\n\x12\x41ndroidKeySettings\x12$\n\x17\x61llow_all_package_names\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\"\n\x15\x61llowed_package_names\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x36\n)support_non_google_app_store_distribution\x18\x03 \x01(\x08\x42\x03\xe0\x41\x01\"\xac\x01\n\x0eIOSKeySettings\x12!\n\x14\x61llow_all_bundle_ids\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x1f\n\x12\x61llowed_bundle_ids\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12V\n\x12\x61pple_developer_id\x18\x03 \x01(\x0b\x32\x35.google.cloud.recaptchaenterprise.v1.AppleDeveloperIdB\x03\xe0\x41\x01\"\x14\n\x12\x45xpressKeySettings\"\x16\n\x14UniversalKeySettings\"Z\n\x10\x41ppleDeveloperId\x12\x1b\n\x0bprivate_key\x18\x01 \x01(\tB\x06\xe0\x41\x02\xe0\x41\x04\x12\x13\n\x06key_id\x18\x02 \x01(\tB\x03\xe0\x41\x02\x12\x14\n\x07team_id\x18\x03 \x01(\tB\x03\xe0\x41\x02\"\xa9\x01\n\x11ScoreDistribution\x12_\n\rscore_buckets\x18\x01 \x03(\x0b\x32H.google.cloud.recaptchaenterprise.v1.ScoreDistribution.ScoreBucketsEntry\x1a\x33\n\x11ScoreBucketsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12\r\n\x05value\x18\x02 \x01(\x03:\x02\x38\x01\"\xab\x02\n\x0cScoreMetrics\x12O\n\x0foverall_metrics\x18\x01 \x01(\x0b\x32\x36.google.cloud.recaptchaenterprise.v1.ScoreDistribution\x12\\\n\x0e\x61\x63tion_metrics\x18\x02 \x03(\x0b\x32\x44.google.cloud.recaptchaenterprise.v1.ScoreMetrics.ActionMetricsEntry\x1al\n\x12\x41\x63tionMetricsEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\x45\n\x05value\x18\x02 \x01(\x0b\x32\x36.google.cloud.recaptchaenterprise.v1.ScoreDistribution:\x02\x38\x01\"o\n\x10\x43hallengeMetrics\x12\x16\n\x0epageload_count\x18\x01 \x01(\x03\x12\x17\n\x0fnocaptcha_count\x18\x02 \x01(\x03\x12\x14\n\x0c\x66\x61iled_count\x18\x03 \x01(\x03\x12\x14\n\x0cpassed_count\x18\x04 \x01(\x03\"\x95\x01\n\x18\x46irewallPolicyAssessment\x12&\n\x05\x65rror\x18\x05 \x01(\x0b\x32\x12.google.rpc.StatusB\x03\xe0\x41\x03\x12Q\n\x0f\x66irewall_policy\x18\x08 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicyB\x03\xe0\x41\x03\"\x82\x06\n\x0e\x46irewallAction\x12P\n\x05\x61llow\x18\x01 \x01(\x0b\x32?.google.cloud.recaptchaenterprise.v1.FirewallAction.AllowActionH\x00\x12P\n\x05\x62lock\x18\x02 \x01(\x0b\x32?.google.cloud.recaptchaenterprise.v1.FirewallAction.BlockActionH\x00\x12t\n\x18include_recaptcha_script\x18\x06 \x01(\x0b\x32P.google.cloud.recaptchaenterprise.v1.FirewallAction.IncludeRecaptchaScriptActionH\x00\x12V\n\x08redirect\x18\x05 \x01(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.FirewallAction.RedirectActionH\x00\x12Z\n\nsubstitute\x18\x03 \x01(\x0b\x32\x44.google.cloud.recaptchaenterprise.v1.FirewallAction.SubstituteActionH\x00\x12Y\n\nset_header\x18\x04 \x01(\x0b\x32\x43.google.cloud.recaptchaenterprise.v1.FirewallAction.SetHeaderActionH\x00\x1a\r\n\x0b\x41llowAction\x1a\r\n\x0b\x42lockAction\x1a\x1e\n\x1cIncludeRecaptchaScriptAction\x1a\x10\n\x0eRedirectAction\x1a%\n\x10SubstituteAction\x12\x11\n\x04path\x18\x01 \x01(\tB\x03\xe0\x41\x01\x1a\x37\n\x0fSetHeaderAction\x12\x10\n\x03key\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x12\n\x05value\x18\x02 \x01(\tB\x03\xe0\x41\x01\x42\x17\n\x15\x66irewall_action_oneof\"\xc5\x02\n\x0e\x46irewallPolicy\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12\x18\n\x0b\x64\x65scription\x18\x02 \x01(\tB\x03\xe0\x41\x01\x12\x11\n\x04path\x18\x04 \x01(\tB\x03\xe0\x41\x01\x12\x16\n\tcondition\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12I\n\x07\x61\x63tions\x18\x06 \x03(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.FirewallActionB\x03\xe0\x41\x01:\x8f\x01\xea\x41\x8b\x01\n1recaptchaenterprise.googleapis.com/FirewallPolicy\x12\x34projects/{project}/firewallpolicies/{firewallpolicy}*\x10\x66irewallPolicies2\x0e\x66irewallPolicy\"\xb6\x01\n)ListRelatedAccountGroupMembershipsRequest\x12X\n\x06parent\x18\x01 \x01(\tBH\xe0\x41\x02\xfa\x41\x42\x12@recaptchaenterprise.googleapis.com/RelatedAccountGroupMembership\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\xb4\x01\n*ListRelatedAccountGroupMembershipsResponse\x12m\n!related_account_group_memberships\x18\x01 \x03(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa2\x01\n\x1fListRelatedAccountGroupsRequest\x12N\n\x06parent\x18\x01 \x01(\tB>\xe0\x41\x02\xfa\x41\x38\x12\x36recaptchaenterprise.googleapis.com/RelatedAccountGroup\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"\x95\x01\n ListRelatedAccountGroupsResponse\x12X\n\x16related_account_groups\x18\x01 \x03(\x0b\x32\x38.google.cloud.recaptchaenterprise.v1.RelatedAccountGroup\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xdf\x01\n+SearchRelatedAccountGroupMembershipsRequest\x12\x44\n\x07project\x18\x01 \x01(\tB3\xe0\x41\x02\xfa\x41-\n+cloudresourcemanager.googleapis.com/Project\x12\x17\n\naccount_id\x18\x05 \x01(\tB\x03\xe0\x41\x01\x12 \n\x11hashed_account_id\x18\x02 \x01(\x0c\x42\x05\x18\x01\xe0\x41\x01\x12\x16\n\tpage_size\x18\x03 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x04 \x01(\tB\x03\xe0\x41\x01\"\xb6\x01\n,SearchRelatedAccountGroupMembershipsResponse\x12m\n!related_account_group_memberships\x18\x01 \x03(\x0b\x32\x42.google.cloud.recaptchaenterprise.v1.RelatedAccountGroupMembership\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xa8\x01\n\x14\x41\x64\x64IpOverrideRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12R\n\x10ip_override_data\x18\x02 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IpOverrideDataB\x03\xe0\x41\x02\"\x17\n\x15\x41\x64\x64IpOverrideResponse\"\xab\x01\n\x17RemoveIpOverrideRequest\x12<\n\x04name\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12R\n\x10ip_override_data\x18\x02 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IpOverrideDataB\x03\xe0\x41\x02\"\x1a\n\x18RemoveIpOverrideResponse\"\x89\x01\n\x16ListIpOverridesRequest\x12>\n\x06parent\x18\x01 \x01(\tB.\xe0\x41\x02\xfa\x41(\n&recaptchaenterprise.googleapis.com/Key\x12\x16\n\tpage_size\x18\x02 \x01(\x05\x42\x03\xe0\x41\x01\x12\x17\n\npage_token\x18\x03 \x01(\tB\x03\xe0\x41\x01\"}\n\x17ListIpOverridesResponse\x12I\n\x0cip_overrides\x18\x01 \x03(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.IpOverrideData\x12\x17\n\x0fnext_page_token\x18\x02 \x01(\t\"\xc8\x02\n\x1dRelatedAccountGroupMembership\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x08\xe0\x41\x02\x12\x12\n\naccount_id\x18\x04 \x01(\t\x12\x1d\n\x11hashed_account_id\x18\x02 \x01(\x0c\x42\x02\x18\x01:\xdd\x01\xea\x41\xd9\x01\n@recaptchaenterprise.googleapis.com/RelatedAccountGroupMembership\x12Vprojects/{project}/relatedaccountgroups/{relatedaccountgroup}/memberships/{membership}*\x1erelatedAccountGroupMemberships2\x1drelatedAccountGroupMembership\"\xd4\x01\n\x13RelatedAccountGroup\x12\x14\n\x04name\x18\x01 \x01(\tB\x06\xe0\x41\x08\xe0\x41\x02:\xa6\x01\xea\x41\xa2\x01\n6recaptchaenterprise.googleapis.com/RelatedAccountGroup\x12=projects/{project}/relatedaccountgroups/{relatedaccountgroup}*\x14relatedAccountGroups2\x13relatedAccountGroup\"\x8b\x03\n\x0bWafSettings\x12U\n\x0bwaf_service\x18\x01 \x01(\x0e\x32;.google.cloud.recaptchaenterprise.v1.WafSettings.WafServiceB\x03\xe0\x41\x02\x12U\n\x0bwaf_feature\x18\x02 \x01(\x0e\x32;.google.cloud.recaptchaenterprise.v1.WafSettings.WafFeatureB\x03\xe0\x41\x02\"s\n\nWafFeature\x12\x1b\n\x17WAF_FEATURE_UNSPECIFIED\x10\x00\x12\x12\n\x0e\x43HALLENGE_PAGE\x10\x01\x12\x11\n\rSESSION_TOKEN\x10\x02\x12\x10\n\x0c\x41\x43TION_TOKEN\x10\x03\x12\x0f\n\x07\x45XPRESS\x10\x05\x1a\x02\x08\x01\"Y\n\nWafService\x12\x1b\n\x17WAF_SERVICE_UNSPECIFIED\x10\x00\x12\x06\n\x02\x43\x41\x10\x01\x12\n\n\x06\x46\x41STLY\x10\x03\x12\x0e\n\nCLOUDFLARE\x10\x04\x12\n\n\x06\x41KAMAI\x10\x05\"B\n\x15\x41ssessmentEnvironment\x12\x13\n\x06\x63lient\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12\x14\n\x07version\x18\x02 \x01(\tB\x03\xe0\x41\x01\"x\n\x10PolicyEvaluation\x12\x64\n\x19\x63hallenge_rule_evaluation\x18\x01 \x01(\x0b\x32<.google.cloud.recaptchaenterprise.v1.ChallengeRuleEvaluationB\x03\xe0\x41\x03\"\x19\n\x17\x43hallengeRuleEvaluation\"\xc1\x01\n\x0eIpOverrideData\x12\x17\n\x02ip\x18\x01 \x01(\tB\x0b\xe0\x41\x02\xe2\x8c\xcf\xd7\x08\x02\x08\x04\x12\\\n\roverride_type\x18\x03 \x01(\x0e\x32@.google.cloud.recaptchaenterprise.v1.IpOverrideData.OverrideTypeB\x03\xe0\x41\x02\"8\n\x0cOverrideType\x12\x1d\n\x19OVERRIDE_TYPE_UNSPECIFIED\x10\x00\x12\t\n\x05\x41LLOW\x10\x01\"S\n\x10GetPolicyRequest\x12?\n\x04name\x18\x01 \x01(\tB1\xe0\x41\x02\xfa\x41+\n)recaptchaenterprise.googleapis.com/Policy\"\x8d\x01\n\x13UpdatePolicyRequest\x12@\n\x06policy\x18\x01 \x01(\x0b\x32+.google.cloud.recaptchaenterprise.v1.PolicyB\x03\xe0\x41\x02\x12\x34\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x01\"\xb5\x02\n\x06Policy\x12\x11\n\x04name\x18\x01 \x01(\tB\x03\xe0\x41\x08\x12Q\n\x0f\x63lient_settings\x18\x04 \x01(\x0b\x32\x33.google.cloud.recaptchaenterprise.v1.ClientSettingsB\x03\xe0\x41\x02\x12[\n\x15\x63hallenge_rule_groups\x18\x02 \x03(\x0b\x32\x37.google.cloud.recaptchaenterprise.v1.ChallengeRuleGroupB\x03\xe0\x41\x01:h\xea\x41\x65\n)recaptchaenterprise.googleapis.com/Policy\x12$projects/{project}/keys/{key}/policy \x02*\x08policies2\x06policy\"|\n\x12\x43hallengeRuleGroup\x12\x14\n\x07\x61\x63tions\x18\x01 \x03(\tB\x03\xe0\x41\x02\x12P\n\x0f\x63hallenge_rules\x18\x02 \x03(\x0b\x32\x32.google.cloud.recaptchaenterprise.v1.ChallengeRuleB\x03\xe0\x41\x02\"\xff\x02\n\rChallengeRule\x12\x16\n\tcondition\x18\x01 \x01(\tB\x03\xe0\x41\x01\x12]\n\x0cno_challenge\x18\x02 \x01(\x0b\x32\x45.google.cloud.recaptchaenterprise.v1.ChallengeRule.NoChallengeOutcomeH\x00\x12X\n\tchallenge\x18\x03 \x01(\x0b\x32\x43.google.cloud.recaptchaenterprise.v1.ChallengeRule.ChallengeOutcomeH\x00\x1a\x14\n\x12NoChallengeOutcome\x1a|\n\x10\x43hallengeOutcome\x12h\n\ndifficulty\x18\x01 \x01(\x0e\x32O.google.cloud.recaptchaenterprise.v1.WebKeySettings.ChallengeSecurityPreferenceB\x03\xe0\x41\x01\x42\t\n\x07outcome\"\xb2\x01\n\x0e\x43lientSettings\x12\x1c\n\x0f\x61llowed_domains\x18\x01 \x03(\tB\x03\xe0\x41\x01\x12\x1e\n\x11\x61llow_all_domains\x18\x02 \x01(\x08\x42\x03\xe0\x41\x01\x12\x62\n\x18protected_endpoint_group\x18\x03 \x01(\x0b\x32;.google.cloud.recaptchaenterprise.v1.ProtectedEndpointGroupB\x03\xe0\x41\x01\"r\n\x16ProtectedEndpointGroup\x12X\n\x13protected_endpoints\x18\x01 \x03(\x0b\x32\x36.google.cloud.recaptchaenterprise.v1.ProtectedEndpointB\x03\xe0\x41\x01\";\n\x11ProtectedEndpoint\x12\x11\n\x04path\x18\x01 \x01(\tB\x03\xe0\x41\x02\x12\x13\n\x06\x61\x63tion\x18\x02 \x01(\tB\x03\xe0\x41\x02*d\n\rChallengeType\x12\x1e\n\x1a\x43HALLENGE_TYPE_UNSPECIFIED\x10\x00\x12\x19\n\x15\x43HALLENGE_TYPE_VISUAL\x10\x01\x12\x18\n\x14\x43HALLENGE_TYPE_AUDIO\x10\x02\x32\xd4\'\n\x1aRecaptchaEnterpriseService\x12\xce\x01\n\x10\x43reateAssessment\x12<.google.cloud.recaptchaenterprise.v1.CreateAssessmentRequest\x1a/.google.cloud.recaptchaenterprise.v1.Assessment\"K\xda\x41\x11parent,assessment\x82\xd3\xe4\x93\x02\x31\"#/v1/{parent=projects/*}/assessments:\nassessment\x12\xe0\x01\n\x12\x41nnotateAssessment\x12>.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentRequest\x1a?.google.cloud.recaptchaenterprise.v1.AnnotateAssessmentResponse\"I\xda\x41\x0fname,annotation\x82\xd3\xe4\x93\x02\x31\",/v1/{name=projects/*/assessments/*}:annotate:\x01*\x12\xa4\x01\n\tCreateKey\x12\x35.google.cloud.recaptchaenterprise.v1.CreateKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"6\xda\x41\nparent,key\x82\xd3\xe4\x93\x02#\"\x1c/v1/{parent=projects/*}/keys:\x03key\x12\xa6\x01\n\x08ListKeys\x12\x34.google.cloud.recaptchaenterprise.v1.ListKeysRequest\x1a\x35.google.cloud.recaptchaenterprise.v1.ListKeysResponse\"-\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{parent=projects/*}/keys\x12\xe7\x01\n\x17RetrieveLegacySecretKey\x12\x43.google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyRequest\x1a\x44.google.cloud.recaptchaenterprise.v1.RetrieveLegacySecretKeyResponse\"A\xda\x41\x03key\x82\xd3\xe4\x93\x02\x35\x12\x33/v1/{key=projects/*/keys/*}:retrieveLegacySecretKey\x12\x93\x01\n\x06GetKey\x12\x32.google.cloud.recaptchaenterprise.v1.GetKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"+\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1e\x12\x1c/v1/{name=projects/*/keys/*}\x12\xad\x01\n\tUpdateKey\x12\x35.google.cloud.recaptchaenterprise.v1.UpdateKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"?\xda\x41\x0fkey,update_mask\x82\xd3\xe4\x93\x02\'2 /v1/{key.name=projects/*/keys/*}:\x03key\x12\x87\x01\n\tDeleteKey\x12\x35.google.cloud.recaptchaenterprise.v1.DeleteKeyRequest\x1a\x16.google.protobuf.Empty\"+\xda\x41\x04name\x82\xd3\xe4\x93\x02\x1e*\x1c/v1/{name=projects/*/keys/*}\x12\x9f\x01\n\nMigrateKey\x12\x36.google.cloud.recaptchaenterprise.v1.MigrateKeyRequest\x1a(.google.cloud.recaptchaenterprise.v1.Key\"/\x82\xd3\xe4\x93\x02)\"$/v1/{name=projects/*/keys/*}:migrate:\x01*\x12\xd5\x01\n\rAddIpOverride\x12\x39.google.cloud.recaptchaenterprise.v1.AddIpOverrideRequest\x1a:.google.cloud.recaptchaenterprise.v1.AddIpOverrideResponse\"M\xda\x41\x15name,ip_override_data\x82\xd3\xe4\x93\x02/\"*/v1/{name=projects/*/keys/*}:addIpOverride:\x01*\x12\xe1\x01\n\x10RemoveIpOverride\x12<.google.cloud.recaptchaenterprise.v1.RemoveIpOverrideRequest\x1a=.google.cloud.recaptchaenterprise.v1.RemoveIpOverrideResponse\"P\xda\x41\x15name,ip_override_data\x82\xd3\xe4\x93\x02\x32\"-/v1/{name=projects/*/keys/*}:removeIpOverride:\x01*\x12\xcd\x01\n\x0fListIpOverrides\x12;.google.cloud.recaptchaenterprise.v1.ListIpOverridesRequest\x1a<.google.cloud.recaptchaenterprise.v1.ListIpOverridesResponse\"?\xda\x41\x06parent\x82\xd3\xe4\x93\x02\x30\x12./v1/{parent=projects/*/keys/*}:listIpOverrides\x12\xa7\x01\n\nGetMetrics\x12\x36.google.cloud.recaptchaenterprise.v1.GetMetricsRequest\x1a,.google.cloud.recaptchaenterprise.v1.Metrics\"3\xda\x41\x04name\x82\xd3\xe4\x93\x02&\x12$/v1/{name=projects/*/keys/*/metrics}\x12\xa3\x01\n\tGetPolicy\x12\x35.google.cloud.recaptchaenterprise.v1.GetPolicyRequest\x1a+.google.cloud.recaptchaenterprise.v1.Policy\"2\xda\x41\x04name\x82\xd3\xe4\x93\x02%\x12#/v1/{name=projects/*/keys/*/policy}\x12\xc6\x01\n\x0cUpdatePolicy\x12\x38.google.cloud.recaptchaenterprise.v1.UpdatePolicyRequest\x1a+.google.cloud.recaptchaenterprise.v1.Policy\"O\xda\x41\x12policy,update_mask\x82\xd3\xe4\x93\x02\x34\x32*/v1/{policy.name=projects/*/keys/*/policy}:\x06policy\x12\xe9\x01\n\x14\x43reateFirewallPolicy\x12@.google.cloud.recaptchaenterprise.v1.CreateFirewallPolicyRequest\x1a\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\"Z\xda\x41\x16parent,firewall_policy\x82\xd3\xe4\x93\x02;\"(/v1/{parent=projects/*}/firewallpolicies:\x0f\x66irewall_policy\x12\xd6\x01\n\x14ListFirewallPolicies\x12@.google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesRequest\x1a\x41.google.cloud.recaptchaenterprise.v1.ListFirewallPoliciesResponse\"9\xda\x41\x06parent\x82\xd3\xe4\x93\x02*\x12(/v1/{parent=projects/*}/firewallpolicies\x12\xc0\x01\n\x11GetFirewallPolicy\x12=.google.cloud.recaptchaenterprise.v1.GetFirewallPolicyRequest\x1a\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\"7\xda\x41\x04name\x82\xd3\xe4\x93\x02*\x12(/v1/{name=projects/*/firewallpolicies/*}\x12\xfe\x01\n\x14UpdateFirewallPolicy\x12@.google.cloud.recaptchaenterprise.v1.UpdateFirewallPolicyRequest\x1a\x33.google.cloud.recaptchaenterprise.v1.FirewallPolicy\"o\xda\x41\x1b\x66irewall_policy,update_mask\x82\xd3\xe4\x93\x02K28/v1/{firewall_policy.name=projects/*/firewallpolicies/*}:\x0f\x66irewall_policy\x12\xa9\x01\n\x14\x44\x65leteFirewallPolicy\x12@.google.cloud.recaptchaenterprise.v1.DeleteFirewallPolicyRequest\x1a\x16.google.protobuf.Empty\"7\xda\x41\x04name\x82\xd3\xe4\x93\x02**(/v1/{name=projects/*/firewallpolicies/*}\x12\xf0\x01\n\x17ReorderFirewallPolicies\x12\x43.google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesRequest\x1a\x44.google.cloud.recaptchaenterprise.v1.ReorderFirewallPoliciesResponse\"J\xda\x41\x0cparent,names\x82\xd3\xe4\x93\x02\x35\"0/v1/{parent=projects/*}/firewallpolicies:reorder:\x01*\x12\xe6\x01\n\x18ListRelatedAccountGroups\x12\x44.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsRequest\x1a\x45.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupsResponse\"=\xda\x41\x06parent\x82\xd3\xe4\x93\x02.\x12,/v1/{parent=projects/*}/relatedaccountgroups\x12\x92\x02\n\"ListRelatedAccountGroupMemberships\x12N.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsRequest\x1aO.google.cloud.recaptchaenterprise.v1.ListRelatedAccountGroupMembershipsResponse\"K\xda\x41\x06parent\x82\xd3\xe4\x93\x02<\x12:/v1/{parent=projects/*/relatedaccountgroups/*}/memberships\x12\xb2\x02\n$SearchRelatedAccountGroupMemberships\x12P.google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsRequest\x1aQ.google.cloud.recaptchaenterprise.v1.SearchRelatedAccountGroupMembershipsResponse\"e\xda\x41\x19project,hashed_account_id\x82\xd3\xe4\x93\x02\x43\">/v1/{project=projects/*}/relatedaccountgroupmemberships:search:\x01*\x1aV\xca\x41\"recaptchaenterprise.googleapis.com\xd2\x41.https://www.googleapis.com/auth/cloud-platformB\x99\x02\n!com.google.recaptchaenterprise.v1B\x18RecaptchaEnterpriseProtoP\x01Z\\cloud.google.com/go/recaptchaenterprise/v2/apiv1/recaptchaenterprisepb;recaptchaenterprisepb\xa2\x02\x04GCRE\xaa\x02#Google.Cloud.RecaptchaEnterprise.V1\xca\x02#Google\\Cloud\\RecaptchaEnterprise\\V1\xea\x02&Google::Cloud::RecaptchaEnterprise::V1b\x06proto3" pool = ::Google::Protobuf::DescriptorPool.generated_pool pool.add_serialized_file(descriptor_data) @@ -67,6 +67,11 @@ module V1 SmsTollFraudVerdict::SmsTollFraudReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.SmsTollFraudVerdict.SmsTollFraudReason").enummodule PhoneFraudAssessment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.PhoneFraudAssessment").msgclass AccountDefenderAssessment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment").msgclass + AccountDefenderAssessment::AccountTakeoverVerdict = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountTakeoverVerdict").msgclass + AccountDefenderAssessment::AccountRiskReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountRiskReason").msgclass + AccountDefenderAssessment::AccountRiskReason::RiskReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountRiskReason.RiskReason").enummodule + AccountDefenderAssessment::AccountTrustReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountTrustReason").msgclass + AccountDefenderAssessment::AccountTrustReason::TrustReason = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountTrustReason.TrustReason").enummodule AccountDefenderAssessment::AccountDefenderLabel = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AccountDefenderAssessment.AccountDefenderLabel").enummodule CreateKeyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.CreateKeyRequest").msgclass ListKeysRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ListKeysRequest").msgclass @@ -98,6 +103,7 @@ module V1 AndroidKeySettings = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AndroidKeySettings").msgclass IOSKeySettings = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.IOSKeySettings").msgclass ExpressKeySettings = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ExpressKeySettings").msgclass + UniversalKeySettings = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.UniversalKeySettings").msgclass AppleDeveloperId = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AppleDeveloperId").msgclass ScoreDistribution = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ScoreDistribution").msgclass ScoreMetrics = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ScoreMetrics").msgclass @@ -129,8 +135,21 @@ module V1 WafSettings::WafFeature = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.WafSettings.WafFeature").enummodule WafSettings::WafService = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.WafSettings.WafService").enummodule AssessmentEnvironment = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.AssessmentEnvironment").msgclass + PolicyEvaluation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.PolicyEvaluation").msgclass + ChallengeRuleEvaluation = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ChallengeRuleEvaluation").msgclass IpOverrideData = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.IpOverrideData").msgclass IpOverrideData::OverrideType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.IpOverrideData.OverrideType").enummodule + GetPolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.GetPolicyRequest").msgclass + UpdatePolicyRequest = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.UpdatePolicyRequest").msgclass + Policy = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.Policy").msgclass + ChallengeRuleGroup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ChallengeRuleGroup").msgclass + ChallengeRule = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ChallengeRule").msgclass + ChallengeRule::NoChallengeOutcome = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ChallengeRule.NoChallengeOutcome").msgclass + ChallengeRule::ChallengeOutcome = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ChallengeRule.ChallengeOutcome").msgclass + ClientSettings = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ClientSettings").msgclass + ProtectedEndpointGroup = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ProtectedEndpointGroup").msgclass + ProtectedEndpoint = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ProtectedEndpoint").msgclass + ChallengeType = ::Google::Protobuf::DescriptorPool.generated_pool.lookup("google.cloud.recaptchaenterprise.v1.ChallengeType").enummodule end end end diff --git a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_services_pb.rb b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_services_pb.rb index 86e7915c82df..f763a1c45d5f 100644 --- a/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_services_pb.rb +++ b/google-cloud-recaptcha_enterprise-v1/lib/google/cloud/recaptchaenterprise/v1/recaptchaenterprise_services_pb.rb @@ -1,7 +1,7 @@ # Generated by the protocol buffer compiler. DO NOT EDIT! # Source: google/cloud/recaptchaenterprise/v1/recaptchaenterprise.proto for package 'Google.Cloud.RecaptchaEnterprise.V1' # Original file comments: -# Copyright 2025 Google LLC +# Copyright 2026 Google LLC # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -75,6 +75,10 @@ class Service # Get some aggregated metrics for a Key. This data can be used to build # dashboards. rpc :GetMetrics, ::Google::Cloud::RecaptchaEnterprise::V1::GetMetricsRequest, ::Google::Cloud::RecaptchaEnterprise::V1::Metrics + # Get the policy for a key. + rpc :GetPolicy, ::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest, ::Google::Cloud::RecaptchaEnterprise::V1::Policy + # Updates the policy for a key. + rpc :UpdatePolicy, ::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest, ::Google::Cloud::RecaptchaEnterprise::V1::Policy # Creates a new FirewallPolicy, specifying conditions at which reCAPTCHA # Enterprise actions can be executed. # A project may have a maximum of 1000 policies. diff --git a/google-cloud-recaptcha_enterprise-v1/proto_docs/google/cloud/recaptchaenterprise/v1/recaptchaenterprise.rb b/google-cloud-recaptcha_enterprise-v1/proto_docs/google/cloud/recaptchaenterprise/v1/recaptchaenterprise.rb index 56c8b1952bff..514a0d0be353 100644 --- a/google-cloud-recaptcha_enterprise-v1/proto_docs/google/cloud/recaptchaenterprise/v1/recaptchaenterprise.rb +++ b/google-cloud-recaptcha_enterprise-v1/proto_docs/google/cloud/recaptchaenterprise/v1/recaptchaenterprise.rb @@ -436,7 +436,7 @@ class PrivatePasswordLeakVerification # assessment event must include a token and site key to use this feature. # @!attribute [r] account_defender_assessment # @return [::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment] - # Output only. Assessment returned by account defender when an account + # Output only. Assessment returned by Account defense when an account # identifier is provided. # @!attribute [rw] private_password_leak_verification # @return [::Google::Cloud::RecaptchaEnterprise::V1::PrivatePasswordLeakVerification] @@ -458,13 +458,16 @@ class PrivatePasswordLeakVerification # @!attribute [r] phone_fraud_assessment # @return [::Google::Cloud::RecaptchaEnterprise::V1::PhoneFraudAssessment] # Output only. Assessment returned when a site key, a token, and a phone - # number as `user_id` are provided. Account defender and SMS toll fraud - # protection need to be enabled. + # number as `user_id` are provided. SMS defense needs to be enabled. # @!attribute [rw] assessment_environment # @return [::Google::Cloud::RecaptchaEnterprise::V1::AssessmentEnvironment] # Optional. The environment creating the assessment. This describes your # environment (the system invoking CreateAssessment), NOT the environment of # your user. + # @!attribute [r] policy_evaluation + # @return [::Google::Cloud::RecaptchaEnterprise::V1::PolicyEvaluation] + # Output only. Provides information about the policy evaluation for this + # assessment. class Assessment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods @@ -491,7 +494,7 @@ class Assessment # @return [::String] # Optional. The expected action for this type of event. This should be the # same action provided at token generation time on client-side platforms - # already integrated with recaptcha enterprise. + # already integrated with recaptcha enterprise. Required for Universal keys. # @!attribute [rw] hashed_account_id # @deprecated This field is deprecated and may be removed in the next major version update. # @return [::String] @@ -652,8 +655,8 @@ class Address # Details about a user's account involved in the transaction. # @!attribute [rw] account_id # @return [::String] - # Optional. Unique account identifier for this user. If using account - # defender, this should match the hashed_account_id field. Otherwise, a + # Optional. Unique account identifier for this user. If using Account + # defense, this should match the hashed_account_id field. Otherwise, a # unique and persistent identifier for this account. # @!attribute [rw] creation_ms # @return [::Integer] @@ -774,12 +777,19 @@ class UserId # Output only. Reasons contributing to the risk analysis verdict. # @!attribute [r] extended_verdict_reasons # @return [::Array<::String>] - # Output only. Extended verdict reasons to be used for experimentation only. - # The set of possible reasons is subject to change. + # Output only. Additional reasons contributing to the risk analysis verdict. + # These reasons are available to Enterprise tier projects only. Contact sales + # for more information. + # The set of reasons is subject to change. + # @!attribute [r] last_challenge_type + # @return [::Google::Cloud::RecaptchaEnterprise::V1::ChallengeType] + # Output only. Type of the last challenge presented to the user for + # Universal, `POLICY_BASED_CHALLENGE` and `INVISIBLE` keys. The field is only + # set when a challenge was presented to the user. # @!attribute [r] challenge # @return [::Google::Cloud::RecaptchaEnterprise::V1::RiskAnalysis::Challenge] - # Output only. Challenge information for POLICY_BASED_CHALLENGE and INVISIBLE - # keys. + # Output only. Challenge information for Universal, `POLICY_BASED_CHALLENGE` + # and `INVISIBLE` keys. # @!attribute [r] verified_bots # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::Bot>] # Output only. Bots with identities that have been verified by reCAPTCHA and @@ -811,15 +821,24 @@ module ClassificationReason # quality risk analysis. LOW_CONFIDENCE_SCORE = 5 - # The request matches behavioral characteristics of a carding attack. + # Deprecated: Use + # {::Google::Cloud::RecaptchaEnterprise::V1::FraudPreventionAssessment#transaction_risk FraudPreventionAssessment.transaction_risk} + # and + # {::Google::Cloud::RecaptchaEnterprise::V1::FraudPreventionAssessment::RiskReason::Reason::EXCESSIVE_ENUMERATION_PATTERN FraudPreventionAssessment.RiskReason.Reason.EXCESSIVE_ENUMERATION_PATTERN} + # instead. SUSPECTED_CARDING = 6 - # The request matches behavioral characteristics of chargebacks for fraud. + # Deprecated: Use + # {::Google::Cloud::RecaptchaEnterprise::V1::FraudPreventionAssessment#transaction_risk FraudPreventionAssessment.transaction_risk} + # and + # {::Google::Cloud::RecaptchaEnterprise::V1::FraudPreventionAssessment::RiskReason::Reason::ASSOCIATED_WITH_FRAUD_CLUSTER FraudPreventionAssessment.RiskReason.Reason.ASSOCIATED_WITH_FRAUD_CLUSTER} + # instead. SUSPECTED_CHARGEBACK = 7 end - # Challenge information for POLICY_BASED_CHALLENGE and INVISIBLE keys. - # Ensure that applications can handle values not explicitly listed. + # Challenge information for Universal, `POLICY_BASED_CHALLENGE` and + # `INVISIBLE` keys. Ensure that applications can handle values not explicitly + # listed. module Challenge # Default unspecified type. CHALLENGE_UNSPECIFIED = 0 @@ -840,7 +859,30 @@ module Challenge # @!attribute [rw] name # @return [::String] # Optional. Enumerated string value that indicates the identity of the bot, - # formatted in kebab-case. + # formatted in kebab-case. Current example values include the following: + # + # * google-agent - AI_AGENT + # * browser-base - AI_AGENT + # * chat-gpt - AI_AGENT + # * aws-bedrock - AI_AGENT + # * cybaa-bot - AI_AGENT + # * cloudflare - AI_AGENT + # * payhawk - AI_AGENT + # * duck-duck-go - SEARCH_INDEXER + # * mediaboard - CONTENT_SCRAPER + # * marker-io - AI_AGENT + # * broadcom - AI_AGENT + # * anchor-browser - AI_AGENT + # * shopify - AI_AGENT + # * stackscope - CONTENT_SCRAPER + # * manus - AI_AGENT + # * kernel-sh - AI_AGENT + # * zvelo - SEARCH_INDEXER + # + # Ensure that your applications can handle identifier values not explicitly + # listed here. Deprecated values might take some time to stop showing + # up in responses. New values can be pushed so this list should be taken + # as non exhaustive. # @!attribute [rw] bot_type # @return [::Google::Cloud::RecaptchaEnterprise::V1::Bot::BotType] # Optional. Enumerated field representing the type of bot. @@ -870,11 +912,9 @@ module BotType # Properties of the provided event token. # @!attribute [r] valid # @return [::Boolean] - # Output only. Whether the provided user response token is valid. When valid - # = false, the reason could be specified in invalid_reason or it could also - # be due to a user failing to solve a challenge or a sitekey mismatch (i.e - # the sitekey used to generate the token was different than the one specified - # in the assessment). + # Output only. Indicates whether the provided user response token is valid. + # If `false`, the token is invalid, either because the user failed the + # challenge or for a reason provided in the `invalid_reason` field. # @!attribute [r] invalid_reason # @return [::Google::Cloud::RecaptchaEnterprise::V1::TokenProperties::InvalidReason] # Output only. Reason associated with the response when valid = false. @@ -934,6 +974,13 @@ module InvalidReason # - you set an action score threshold higher than 0.0 # - you provided a non-empty `expected_action` UNEXPECTED_ACTION = 7 + + # The key used to generate the token does not match the `site_key`. + KEY_MISMATCH = 8 + + # The domain of the page on which the token was generated does not match + # the `allowed_domains` configured in the `site_key`. + DOMAIN_MISMATCH = 9 end end @@ -1120,21 +1167,111 @@ class PhoneFraudAssessment extend ::Google::Protobuf::MessageExts::ClassMethods end - # Account defender risk assessment. + # Account defense risk assessment. # @!attribute [r] labels # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment::AccountDefenderLabel>] # Output only. Labels for this request. + # @!attribute [r] account_takeover_verdict + # @return [::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment::AccountTakeoverVerdict] + # Output only. Account takeover risk assessment for this request. class AccountDefenderAssessment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods - # Labels returned by account defender for this request. + # Account takeover risk assessment. + # @!attribute [r] risk + # @return [::Float] + # Output only. Account takeover attempt probability. + # Values are from 0.0 (lowest risk) to 1.0 (highest risk). + # @!attribute [r] risk_reasons + # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment::AccountRiskReason>] + # Output only. Unordered list. Reasons why the request appears risky. Risk + # reasons can be returned even if the risk is low, as trustworthy requests + # can still have some risk signals. + # @!attribute [r] trust_reasons + # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment::AccountTrustReason>] + # Output only. Unordered list. Reasons why the request appears trustworthy. + # Trust reasons can be returned even if the risk is high, as risky requests + # can still have some trust signals. + class AccountTakeoverVerdict + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Risk explainability reasons for Account defense. + # @!attribute [r] reason + # @return [::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment::AccountRiskReason::RiskReason] + # Output only. A risk reason associated with this request. + class AccountRiskReason + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Risk explainability reasons for Account defense. + # Ensure that applications can handle values not explicitly listed. + module RiskReason + # Default unspecified type. + RISK_REASON_UNSPECIFIED = 0 + + # The client has been observed sending bot-like traffic to this site in + # the past. This reason incorporates historical reputation and indicates + # that the client is known to use bots, even if the current request is + # being made by a human. + CLIENT_HISTORICAL_BOT_ACTIVITY = 1 + + # The account is part of a large group of related accounts, indicating + # that it may be part of a fraudulent network. Related accounts are + # identified based on having similar traffic patterns and request + # characteristics. + ACCOUNT_IN_LARGE_RELATED_GROUP = 2 + + # The client has been observed accessing many accounts on this site. + CLIENT_ACCESSED_MANY_ACCOUNTS = 3 + + # This email domain is a suspected provider of disposable email + # addresses. + DISPOSABLE_EMAIL_DOMAIN = 4 + end + end + + # Trust explainability reasons for Account defense. + # @!attribute [r] reason + # @return [::Google::Cloud::RecaptchaEnterprise::V1::AccountDefenderAssessment::AccountTrustReason::TrustReason] + # Output only. A trust reason associated with this request. + class AccountTrustReason + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # Trust explainability reasons for Account defense. + # Ensure that applications can handle values not explicitly listed. + module TrustReason + # Default unspecified type. + TRUST_REASON_UNSPECIFIED = 0 + + # The request matches a trusted profile associated with this account. + # Equivalent to `AccountDefenderLabel.PROFILE_MATCH`. + PROFILE_MATCH = 1 + + # The account's historical activity is reputable. It is unlikely that the + # account has been compromised in the past. + ACCOUNT_HISTORY_REPUTABLE = 2 + + # The identity shows a global pattern of reputable activity based on + # `userInfo` and associated identifiers. + IDENTITY_GLOBAL_ACTIVITY_REPUTABLE = 3 + + # The identity shows a long-standing history of reputable activity based + # on `userInfo` and associated identifiers. + IDENTITY_HISTORY_REPUTABLE = 4 + end + end + + # Labels returned by Account defense for this request. # Ensure that applications can handle values not explicitly listed. module AccountDefenderLabel # Default unspecified type. ACCOUNT_DEFENDER_LABEL_UNSPECIFIED = 0 - # The request matches a known good profile for the user. + # The request matches a trusted profile associated with this account. PROFILE_MATCH = 1 # The request is potentially a suspicious login event and must be further @@ -1415,22 +1552,27 @@ class RetrieveLegacySecretKeyResponse # @return [::Google::Cloud::RecaptchaEnterprise::V1::WebKeySettings] # Settings for keys that can be used by websites. # - # Note: The following fields are mutually exclusive: `web_settings`, `android_settings`, `ios_settings`, `express_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # Note: The following fields are mutually exclusive: `web_settings`, `android_settings`, `ios_settings`, `express_settings`, `universal_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] android_settings # @return [::Google::Cloud::RecaptchaEnterprise::V1::AndroidKeySettings] # Settings for keys that can be used by Android apps. # - # Note: The following fields are mutually exclusive: `android_settings`, `web_settings`, `ios_settings`, `express_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # Note: The following fields are mutually exclusive: `android_settings`, `web_settings`, `ios_settings`, `express_settings`, `universal_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] ios_settings # @return [::Google::Cloud::RecaptchaEnterprise::V1::IOSKeySettings] # Settings for keys that can be used by iOS apps. # - # Note: The following fields are mutually exclusive: `ios_settings`, `web_settings`, `android_settings`, `express_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # Note: The following fields are mutually exclusive: `ios_settings`, `web_settings`, `android_settings`, `express_settings`, `universal_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] express_settings # @return [::Google::Cloud::RecaptchaEnterprise::V1::ExpressKeySettings] # Settings for keys that can be used by reCAPTCHA Express. # - # Note: The following fields are mutually exclusive: `express_settings`, `web_settings`, `android_settings`, `ios_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # Note: The following fields are mutually exclusive: `express_settings`, `web_settings`, `android_settings`, `ios_settings`, `universal_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] universal_settings + # @return [::Google::Cloud::RecaptchaEnterprise::V1::UniversalKeySettings] + # Settings for keys that are configured through their Policy. + # + # Note: The following fields are mutually exclusive: `universal_settings`, `web_settings`, `android_settings`, `ios_settings`, `express_settings`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] labels # @return [::Google::Protobuf::Map{::String => ::String}] # Optional. See [Creating and managing labels] @@ -1659,6 +1801,12 @@ class ExpressKeySettings extend ::Google::Protobuf::MessageExts::ClassMethods end + # Settings for keys that are configured through their Policy. + class UniversalKeySettings + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # Contains fields that are required to perform Apple-specific integrity checks. # @!attribute [rw] private_key # @return [::String] @@ -2196,6 +2344,23 @@ class AssessmentEnvironment extend ::Google::Protobuf::MessageExts::ClassMethods end + # Information about the policy evaluation. + # @!attribute [r] challenge_rule_evaluation + # @return [::Google::Cloud::RecaptchaEnterprise::V1::ChallengeRuleEvaluation] + # Output only. Populated if one or more Challenge rules were matched. + # Its presence in the assessment indicates that at least one challenge rule + # was matched and determined whether a challenge was presented to the user. + class PolicyEvaluation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Information about the evaluation of a `ChallengeRule`. + class ChallengeRuleEvaluation + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + # Information about the IP or IP range override. # @!attribute [rw] ip # @return [::String] @@ -2224,6 +2389,198 @@ module OverrideType ALLOW = 1 end end + + # The request message to get a policy. + # @!attribute [rw] name + # @return [::String] + # Required. The name of the policy to get, in the format + # `projects/{project}/keys/{key}/policy`. + class GetPolicyRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # The request message to update a policy. + # @!attribute [rw] policy + # @return [::Google::Cloud::RecaptchaEnterprise::V1::Policy] + # Required. The Policy's name is used to identify the policy to update, in + # the format `projects/{project}/keys/{key}/policy`. + # @!attribute [rw] update_mask + # @return [::Google::Protobuf::FieldMask] + # Optional. The mask to control which fields of the policy get updated. If + # the mask is not present, all fields are updated. + class UpdatePolicyRequest + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A complete configuration set containing multiple grouped rules defining the + # behavior of reCAPTCHA for fraud detection and prevention. + # @!attribute [rw] name + # @return [::String] + # Identifier. Resource name for this policy. + # Format: "projects/\\{project}/keys/\\{key}/policy" for a policy under a key. + # @!attribute [rw] client_settings + # @return [::Google::Cloud::RecaptchaEnterprise::V1::ClientSettings] + # Required. Configuration for clients protected by this policy. + # @!attribute [rw] challenge_rule_groups + # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::ChallengeRuleGroup>] + # Optional. Rules to configure the behavior of reCAPTCHA for showing a + # challenge. Rule groups are evaluated in order. Evaluation stops when the + # first matching rule group is found. + class Policy + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A collection of challenge rules that applies to one or more actions. + # @!attribute [rw] actions + # @return [::Array<::String>] + # Required. Action name provided at token generation. The action name is not + # case-sensitive and can only contain alphanumeric characters, slashes, and + # underscores. If "*" is provided, the rule group applies to all actions. If + # multiple actions are provided, the rule group is applied to all of + # them. This field is required. + # @!attribute [rw] challenge_rules + # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::ChallengeRule>] + # Required. A list of rules that configure when and how reCAPTCHA presents a + # challenge. reCAPTCHA evaluates these rules in order and applies the first + # one that matches. + class ChallengeRuleGroup + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # A rule to configure the behavior of reCAPTCHA for conditionally presenting a + # challenge. + # @!attribute [rw] condition + # @return [::String] + # Optional. A CEL condition that must be met for this rule to apply. + # If unspecified, the rule applies unconditionally. + # The following fields can be referenced in the condition: + # * `score` + # * `user_ip_address` + # * `user_asn` + # * `user_agent` + # * `verified_bots.name` + # * `verified_bots.bot_type` + # + # Examples: + # * `score < 0.5` + # * `user_ip_address == "123.45.67.89"` + # * `user_agent.contains("Chrome")` + # * `score < 0.5 && user_ip_address == "123.45.67.89"` + # @!attribute [rw] no_challenge + # @return [::Google::Cloud::RecaptchaEnterprise::V1::ChallengeRule::NoChallengeOutcome] + # Do not present a challenge to the user. + # + # Note: The following fields are mutually exclusive: `no_challenge`, `challenge`. If a field in that set is populated, all other fields in the set will automatically be cleared. + # @!attribute [rw] challenge + # @return [::Google::Cloud::RecaptchaEnterprise::V1::ChallengeRule::ChallengeOutcome] + # Present a challenge to the user. + # + # Note: The following fields are mutually exclusive: `challenge`, `no_challenge`. If a field in that set is populated, all other fields in the set will automatically be cleared. + class ChallengeRule + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + + # An outcome that indicates that no challenge should be presented to the + # user. + class NoChallengeOutcome + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # An outcome that indicates that a challenge of a specified difficulty should + # be presented to the user. + # @!attribute [rw] difficulty + # @return [::Google::Cloud::RecaptchaEnterprise::V1::WebKeySettings::ChallengeSecurityPreference] + # Optional. The difficulty of the challenge to present to the user. + # If unspecified, `BALANCE` is used. + class ChallengeOutcome + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + end + + # Configuration for clients to protect with reCAPTCHA. + # @!attribute [rw] allowed_domains + # @return [::Array<::String>] + # Optional. Domains or subdomains of websites allowed to use the policy. All + # subdomains of an allowed domain are automatically allowed. A valid domain + # requires a host and must not include any path, port, query or fragment. + # Examples: 'example.com' or 'subdomain.example.com' + # Each policy supports a maximum of 250 domains. To use a policy on more + # domains, set `allow_all_domains` to true. When this is set, you are + # responsible for validating the hostname by checking the + # `token_properties.hostname` field in each assessment response against your + # list of allowed domains. + # @!attribute [rw] allow_all_domains + # @return [::Boolean] + # Optional. If set to true, it means allowed_domains are not enforced. + # @!attribute [rw] protected_endpoint_group + # @return [::Google::Cloud::RecaptchaEnterprise::V1::ProtectedEndpointGroup] + # Optional. Configuration for all API endpoints to protect with reCAPTCHA. If + # this field is not set, reCAPTCHA will not automatically request tokens on + # any API endpoints. + class ClientSettings + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Configuration for API endpoints to protect with reCAPTCHA. + # @!attribute [rw] protected_endpoints + # @return [::Array<::Google::Cloud::RecaptchaEnterprise::V1::ProtectedEndpoint>] + # Optional. List of API endpoints to automatically protect with reCAPTCHA. If + # any of these endpoints is invoked from a page where a key bound to this + # policy is installed, a reCAPTCHA token is automatically generated and + # attached to the request. If multiple protected endpoints match a given API + # endpoint, the first one in the list is used. + class ProtectedEndpointGroup + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Configuration for an API endpoint to protect with reCAPTCHA. + # @!attribute [rw] path + # @return [::String] + # Required. URI path of the API endpoint to protect. Must start with '/'. + # Supports glob characters '*' to match a single path segment and '**' to + # match multiple path segments. Standalone root catch-alls ('/*' and '/**') + # are invalid because it can negatively impact performance to trigger + # reCAPTCHA on every single request to your backend. + # + # Matching is evaluated against the URL path only (domain, scheme, and query + # parameters are ignored). + # + # Examples: + # - `/login` matches `/login`, `https://example.com/login`, and + # `/login?query=1`, but not `/login/step1`. + # - `/products/*` matches `/products/123`, but not `/products/123/456`. + # - `/content/**` matches `/content/articles/2024/01/01`. + # @!attribute [rw] action + # @return [::String] + # Required. Action name to be used for token generation for this endpoint. + # The action name can only contain alphanumeric characters, slashes, and + # underscores. + class ProtectedEndpoint + include ::Google::Protobuf::MessageExts + extend ::Google::Protobuf::MessageExts::ClassMethods + end + + # Enum of challenge types for Universal, `POLICY_BASED_CHALLENGE` and + # `INVISIBLE` keys. Ensure that applications can handle values not explicitly + # listed. + module ChallengeType + # Default unspecified type. + CHALLENGE_TYPE_UNSPECIFIED = 0 + + # A visual challenge. + CHALLENGE_TYPE_VISUAL = 1 + + # An audio challenge. + CHALLENGE_TYPE_AUDIO = 2 + end end end end diff --git a/google-cloud-recaptcha_enterprise-v1/snippets/recaptcha_enterprise_service/get_policy.rb b/google-cloud-recaptcha_enterprise-v1/snippets/recaptcha_enterprise_service/get_policy.rb new file mode 100644 index 000000000000..bdbebde00f5d --- /dev/null +++ b/google-cloud-recaptcha_enterprise-v1/snippets/recaptcha_enterprise_service/get_policy.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_GetPolicy_sync] +require "google/cloud/recaptcha_enterprise/v1" + +## +# Snippet for the get_policy call in the RecaptchaEnterpriseService service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client#get_policy. +# +def get_policy + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest.new + + # Call the get_policy method. + result = client.get_policy request + + # The returned object is of type Google::Cloud::RecaptchaEnterprise::V1::Policy. + p result +end +# [END recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_GetPolicy_sync] diff --git a/google-cloud-recaptcha_enterprise-v1/snippets/recaptcha_enterprise_service/update_policy.rb b/google-cloud-recaptcha_enterprise-v1/snippets/recaptcha_enterprise_service/update_policy.rb new file mode 100644 index 000000000000..a015974d3704 --- /dev/null +++ b/google-cloud-recaptcha_enterprise-v1/snippets/recaptcha_enterprise_service/update_policy.rb @@ -0,0 +1,47 @@ +# frozen_string_literal: true + +# Copyright 2026 Google LLC +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Auto-generated by gapic-generator-ruby. DO NOT EDIT! + +# [START recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_UpdatePolicy_sync] +require "google/cloud/recaptcha_enterprise/v1" + +## +# Snippet for the update_policy call in the RecaptchaEnterpriseService service +# +# This snippet has been automatically generated and should be regarded as a code +# template only. It will require modifications to work: +# - It may require correct/in-range values for request initialization. +# - It may require specifying regional endpoints when creating the service +# client as shown in https://cloud.google.com/ruby/docs/reference. +# +# This is an auto-generated example demonstrating basic usage of +# Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client#update_policy. +# +def update_policy + # Create a client object. The client can be reused for multiple calls. + client = Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new + + # Create a request. To set request fields, pass in keyword arguments. + request = Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest.new + + # Call the update_policy method. + result = client.update_policy request + + # The returned object is of type Google::Cloud::RecaptchaEnterprise::V1::Policy. + p result +end +# [END recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_UpdatePolicy_sync] diff --git a/google-cloud-recaptcha_enterprise-v1/snippets/snippet_metadata_google.cloud.recaptchaenterprise.v1.json b/google-cloud-recaptcha_enterprise-v1/snippets/snippet_metadata_google.cloud.recaptchaenterprise.v1.json index d932d264a4ec..ecbb3f6a138b 100644 --- a/google-cloud-recaptcha_enterprise-v1/snippets/snippet_metadata_google.cloud.recaptchaenterprise.v1.json +++ b/google-cloud-recaptcha_enterprise-v1/snippets/snippet_metadata_google.cloud.recaptchaenterprise.v1.json @@ -531,6 +531,86 @@ } ] }, + { + "region_tag": "recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_GetPolicy_sync", + "title": "Snippet for the get_policy call in the RecaptchaEnterpriseService service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client#get_policy.", + "file": "recaptcha_enterprise_service/get_policy.rb", + "language": "RUBY", + "client_method": { + "short_name": "get_policy", + "full_name": "::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client#get_policy", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::RecaptchaEnterprise::V1::Policy", + "client": { + "short_name": "RecaptchaEnterpriseService::Client", + "full_name": "::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client" + }, + "method": { + "short_name": "GetPolicy", + "full_name": "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.GetPolicy", + "service": { + "short_name": "RecaptchaEnterpriseService", + "full_name": "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 46, + "type": "FULL" + } + ] + }, + { + "region_tag": "recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_UpdatePolicy_sync", + "title": "Snippet for the update_policy call in the RecaptchaEnterpriseService service", + "description": "This is an auto-generated example demonstrating basic usage of Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client#update_policy.", + "file": "recaptcha_enterprise_service/update_policy.rb", + "language": "RUBY", + "client_method": { + "short_name": "update_policy", + "full_name": "::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client#update_policy", + "async": false, + "parameters": [ + { + "type": "::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest", + "name": "request" + } + ], + "result_type": "::Google::Cloud::RecaptchaEnterprise::V1::Policy", + "client": { + "short_name": "RecaptchaEnterpriseService::Client", + "full_name": "::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client" + }, + "method": { + "short_name": "UpdatePolicy", + "full_name": "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService.UpdatePolicy", + "service": { + "short_name": "RecaptchaEnterpriseService", + "full_name": "google.cloud.recaptchaenterprise.v1.RecaptchaEnterpriseService" + } + } + }, + "canonical": true, + "origin": "API_DEFINITION", + "segments": [ + { + "start": 20, + "end": 46, + "type": "FULL" + } + ] + }, { "region_tag": "recaptchaenterprise_v1_generated_RecaptchaEnterpriseService_CreateFirewallPolicy_sync", "title": "Snippet for the create_firewall_policy call in the RecaptchaEnterpriseService service", diff --git a/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_paths_test.rb b/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_paths_test.rb index 5ace4590a74e..085d2844f8a4 100644 --- a/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_paths_test.rb +++ b/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_paths_test.rb @@ -89,6 +89,18 @@ def test_metrics_path end end + def test_policy_path + grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + ::Gapic::ServiceStub.stub :new, DummyStub.new do + client = ::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new do |config| + config.credentials = grpc_channel + end + + path = client.policy_path project: "value0", key: "value1" + assert_equal "projects/value0/keys/value1/policy", path + end + end + def test_project_path grpc_channel = ::GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure ::Gapic::ServiceStub.stub :new, DummyStub.new do diff --git a/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_test.rb b/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_test.rb index 1b4f08c7c462..0aff9beeb849 100644 --- a/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_test.rb +++ b/google-cloud-recaptcha_enterprise-v1/test/google/cloud/recaptcha_enterprise/v1/recaptcha_enterprise_service_test.rb @@ -859,6 +859,124 @@ def test_get_metrics end end + def test_get_policy + # Create GRPC objects. + grpc_response = ::Google::Cloud::RecaptchaEnterprise::V1::Policy.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + name = "hello world" + + get_policy_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :get_policy, name + assert_kind_of ::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest, request + assert_equal "hello world", request["name"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, get_policy_client_stub do + # Create client + c = ::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + c.get_policy({ name: name }) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use named arguments + c.get_policy name: name do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object + c.get_policy ::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest.new(name: name) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use hash object with options + c.get_policy({ name: name }, grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + c.get_policy(::Google::Cloud::RecaptchaEnterprise::V1::GetPolicyRequest.new(name: name), grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, get_policy_client_stub.call_rpc_count + end + end + + def test_update_policy + # Create GRPC objects. + grpc_response = ::Google::Cloud::RecaptchaEnterprise::V1::Policy.new + grpc_operation = GRPC::ActiveCall::Operation.new nil + grpc_channel = GRPC::Core::Channel.new "localhost:8888", nil, :this_channel_is_insecure + grpc_options = {} + + # Create request parameters for a unary method. + policy = {} + update_mask = {} + + update_policy_client_stub = ClientStub.new grpc_response, grpc_operation do |name, request, options:| + assert_equal :update_policy, name + assert_kind_of ::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest, request + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Cloud::RecaptchaEnterprise::V1::Policy), request["policy"] + assert_equal Gapic::Protobuf.coerce({}, to: ::Google::Protobuf::FieldMask), request["update_mask"] + refute_nil options + end + + Gapic::ServiceStub.stub :new, update_policy_client_stub do + # Create client + c = ::Google::Cloud::RecaptchaEnterprise::V1::RecaptchaEnterpriseService::Client.new do |config| + config.credentials = grpc_channel + end + + # Use hash object + c.update_policy({ policy: policy, update_mask: update_mask }) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use named arguments + c.update_policy policy: policy, update_mask: update_mask do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object + c.update_policy ::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest.new(policy: policy, update_mask: update_mask) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use hash object with options + c.update_policy({ policy: policy, update_mask: update_mask }, grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Use protobuf object with options + c.update_policy(::Google::Cloud::RecaptchaEnterprise::V1::UpdatePolicyRequest.new(policy: policy, update_mask: update_mask), grpc_options) do |response, operation| + assert_equal grpc_response, response + assert_equal grpc_operation, operation + end + + # Verify method calls + assert_equal 5, update_policy_client_stub.call_rpc_count + end + end + def test_create_firewall_policy # Create GRPC objects. grpc_response = ::Google::Cloud::RecaptchaEnterprise::V1::FirewallPolicy.new