1*d5c09012SAndroid Build Coastguard Worker// Copyright 2023 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.recaptchaenterprise.v1beta1; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/annotations.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/client.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 23*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 24*d5c09012SAndroid Build Coastguard Worker 25*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.RecaptchaEnterprise.V1Beta1"; 26*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/recaptchaenterprise/v2/apiv1beta1/recaptchaenterprisepb;recaptchaenterprisepb"; 27*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 28*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "RecaptchaEnterpriseProto"; 29*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.recaptchaenterprise.v1beta1"; 30*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "GCRE"; 31*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\RecaptchaEnterprise\\V1beta1"; 32*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::RecaptchaEnterprise::V1beta1"; 33*d5c09012SAndroid Build Coastguard Worker 34*d5c09012SAndroid Build Coastguard Worker// Service to determine the likelihood an event is legitimate. 35*d5c09012SAndroid Build Coastguard Workerservice RecaptchaEnterpriseServiceV1Beta1 { 36*d5c09012SAndroid Build Coastguard Worker option (google.api.default_host) = "recaptchaenterprise.googleapis.com"; 37*d5c09012SAndroid Build Coastguard Worker option (google.api.oauth_scopes) = 38*d5c09012SAndroid Build Coastguard Worker "https://www.googleapis.com/auth/cloud-platform"; 39*d5c09012SAndroid Build Coastguard Worker 40*d5c09012SAndroid Build Coastguard Worker // Creates an Assessment of the likelihood an event is legitimate. 41*d5c09012SAndroid Build Coastguard Worker rpc CreateAssessment(CreateAssessmentRequest) returns (Assessment) { 42*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 43*d5c09012SAndroid Build Coastguard Worker post: "/v1beta1/{parent=projects/*}/assessments" 44*d5c09012SAndroid Build Coastguard Worker body: "assessment" 45*d5c09012SAndroid Build Coastguard Worker }; 46*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "parent,assessment"; 47*d5c09012SAndroid Build Coastguard Worker } 48*d5c09012SAndroid Build Coastguard Worker 49*d5c09012SAndroid Build Coastguard Worker // Annotates a previously created Assessment to provide additional information 50*d5c09012SAndroid Build Coastguard Worker // on whether the event turned out to be authentic or fradulent. 51*d5c09012SAndroid Build Coastguard Worker rpc AnnotateAssessment(AnnotateAssessmentRequest) 52*d5c09012SAndroid Build Coastguard Worker returns (AnnotateAssessmentResponse) { 53*d5c09012SAndroid Build Coastguard Worker option (google.api.http) = { 54*d5c09012SAndroid Build Coastguard Worker post: "/v1beta1/{name=projects/*/assessments/*}:annotate" 55*d5c09012SAndroid Build Coastguard Worker body: "*" 56*d5c09012SAndroid Build Coastguard Worker }; 57*d5c09012SAndroid Build Coastguard Worker option (google.api.method_signature) = "name,annotation"; 58*d5c09012SAndroid Build Coastguard Worker } 59*d5c09012SAndroid Build Coastguard Worker} 60*d5c09012SAndroid Build Coastguard Worker 61*d5c09012SAndroid Build Coastguard Worker// The create assessment request message. 62*d5c09012SAndroid Build Coastguard Workermessage CreateAssessmentRequest { 63*d5c09012SAndroid Build Coastguard Worker // Required. The name of the project in which the assessment will be created, 64*d5c09012SAndroid Build Coastguard Worker // in the format `projects/{project_number}`. 65*d5c09012SAndroid Build Coastguard Worker string parent = 1 [ 66*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 67*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 68*d5c09012SAndroid Build Coastguard Worker type: "cloudresourcemanager.googleapis.com/Project" 69*d5c09012SAndroid Build Coastguard Worker } 70*d5c09012SAndroid Build Coastguard Worker ]; 71*d5c09012SAndroid Build Coastguard Worker 72*d5c09012SAndroid Build Coastguard Worker // Required. The assessment details. 73*d5c09012SAndroid Build Coastguard Worker Assessment assessment = 2 [(google.api.field_behavior) = REQUIRED]; 74*d5c09012SAndroid Build Coastguard Worker} 75*d5c09012SAndroid Build Coastguard Worker 76*d5c09012SAndroid Build Coastguard Worker// Describes an event in the lifecycle of a payment transaction. 77*d5c09012SAndroid Build Coastguard Workermessage TransactionEvent { 78*d5c09012SAndroid Build Coastguard Worker // Enum that represents an event in the payment transaction lifecycle. 79*d5c09012SAndroid Build Coastguard Worker enum TransactionEventType { 80*d5c09012SAndroid Build Coastguard Worker // Default, unspecified event type. 81*d5c09012SAndroid Build Coastguard Worker TRANSACTION_EVENT_TYPE_UNSPECIFIED = 0; 82*d5c09012SAndroid Build Coastguard Worker 83*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction is approved by the merchant. The 84*d5c09012SAndroid Build Coastguard Worker // accompanying reasons can include terms such as 'INHOUSE', 'ACCERTIFY', 85*d5c09012SAndroid Build Coastguard Worker // 'CYBERSOURCE', or 'MANUAL_REVIEW'. 86*d5c09012SAndroid Build Coastguard Worker MERCHANT_APPROVE = 1; 87*d5c09012SAndroid Build Coastguard Worker 88*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction is denied and concluded due to risks 89*d5c09012SAndroid Build Coastguard Worker // detected by the merchant. The accompanying reasons can include terms such 90*d5c09012SAndroid Build Coastguard Worker // as 'INHOUSE', 'ACCERTIFY', 'CYBERSOURCE', or 'MANUAL_REVIEW'. 91*d5c09012SAndroid Build Coastguard Worker MERCHANT_DENY = 2; 92*d5c09012SAndroid Build Coastguard Worker 93*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction is being evaluated by a human, due to 94*d5c09012SAndroid Build Coastguard Worker // suspicion or risk. 95*d5c09012SAndroid Build Coastguard Worker MANUAL_REVIEW = 3; 96*d5c09012SAndroid Build Coastguard Worker 97*d5c09012SAndroid Build Coastguard Worker // Indicates that the authorization attempt with the card issuer succeeded. 98*d5c09012SAndroid Build Coastguard Worker AUTHORIZATION = 4; 99*d5c09012SAndroid Build Coastguard Worker 100*d5c09012SAndroid Build Coastguard Worker // Indicates that the authorization attempt with the card issuer failed. 101*d5c09012SAndroid Build Coastguard Worker // The accompanying reasons can include Visa's '54' indicating that the card 102*d5c09012SAndroid Build Coastguard Worker // is expired, or '82' indicating that the CVV is incorrect. 103*d5c09012SAndroid Build Coastguard Worker AUTHORIZATION_DECLINE = 5; 104*d5c09012SAndroid Build Coastguard Worker 105*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction is completed because the funds were 106*d5c09012SAndroid Build Coastguard Worker // settled. 107*d5c09012SAndroid Build Coastguard Worker PAYMENT_CAPTURE = 6; 108*d5c09012SAndroid Build Coastguard Worker 109*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction could not be completed because the funds 110*d5c09012SAndroid Build Coastguard Worker // were not settled. 111*d5c09012SAndroid Build Coastguard Worker PAYMENT_CAPTURE_DECLINE = 7; 112*d5c09012SAndroid Build Coastguard Worker 113*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction has been canceled. Specify the reason 114*d5c09012SAndroid Build Coastguard Worker // for the cancellation. For example, 'INSUFFICIENT_INVENTORY'. 115*d5c09012SAndroid Build Coastguard Worker CANCEL = 8; 116*d5c09012SAndroid Build Coastguard Worker 117*d5c09012SAndroid Build Coastguard Worker // Indicates that the merchant has received a chargeback inquiry due to 118*d5c09012SAndroid Build Coastguard Worker // fraud for the transaction, requesting additional information before a 119*d5c09012SAndroid Build Coastguard Worker // fraud chargeback is officially issued and a formal chargeback 120*d5c09012SAndroid Build Coastguard Worker // notification is sent. 121*d5c09012SAndroid Build Coastguard Worker CHARGEBACK_INQUIRY = 9; 122*d5c09012SAndroid Build Coastguard Worker 123*d5c09012SAndroid Build Coastguard Worker // Indicates that the merchant has received a chargeback alert due to fraud 124*d5c09012SAndroid Build Coastguard Worker // for the transaction. The process of resolving the dispute without 125*d5c09012SAndroid Build Coastguard Worker // involving the payment network is started. 126*d5c09012SAndroid Build Coastguard Worker CHARGEBACK_ALERT = 10; 127*d5c09012SAndroid Build Coastguard Worker 128*d5c09012SAndroid Build Coastguard Worker // Indicates that a fraud notification is issued for the transaction, sent 129*d5c09012SAndroid Build Coastguard Worker // by the payment instrument's issuing bank because the transaction appears 130*d5c09012SAndroid Build Coastguard Worker // to be fraudulent. We recommend including TC40 or SAFE data in the 131*d5c09012SAndroid Build Coastguard Worker // `reason` field for this event type. For partial chargebacks, we recommend 132*d5c09012SAndroid Build Coastguard Worker // that you include an amount in the `value` field. 133*d5c09012SAndroid Build Coastguard Worker FRAUD_NOTIFICATION = 11; 134*d5c09012SAndroid Build Coastguard Worker 135*d5c09012SAndroid Build Coastguard Worker // Indicates that the merchant is informed by the payment network that the 136*d5c09012SAndroid Build Coastguard Worker // transaction has entered the chargeback process due to fraud. Reason code 137*d5c09012SAndroid Build Coastguard Worker // examples include Discover's '6005' and '6041'. For partial chargebacks, 138*d5c09012SAndroid Build Coastguard Worker // we recommend that you include an amount in the `value` field. 139*d5c09012SAndroid Build Coastguard Worker CHARGEBACK = 12; 140*d5c09012SAndroid Build Coastguard Worker 141*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction has entered the chargeback process due to 142*d5c09012SAndroid Build Coastguard Worker // fraud, and that the merchant has chosen to enter representment. Reason 143*d5c09012SAndroid Build Coastguard Worker // examples include Discover's '6005' and '6041'. For partial chargebacks, 144*d5c09012SAndroid Build Coastguard Worker // we recommend that you include an amount in the `value` field. 145*d5c09012SAndroid Build Coastguard Worker CHARGEBACK_REPRESENTMENT = 13; 146*d5c09012SAndroid Build Coastguard Worker 147*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction has had a fraud chargeback which was 148*d5c09012SAndroid Build Coastguard Worker // illegitimate and was reversed as a result. For partial chargebacks, we 149*d5c09012SAndroid Build Coastguard Worker // recommend that you include an amount in the `value` field. 150*d5c09012SAndroid Build Coastguard Worker CHARGEBACK_REVERSE = 14; 151*d5c09012SAndroid Build Coastguard Worker 152*d5c09012SAndroid Build Coastguard Worker // Indicates that the merchant has received a refund for a completed 153*d5c09012SAndroid Build Coastguard Worker // transaction. For partial refunds, we recommend that you include an amount 154*d5c09012SAndroid Build Coastguard Worker // in the `value` field. Reason example: 'TAX_EXEMPT' (partial refund of 155*d5c09012SAndroid Build Coastguard Worker // exempt tax) 156*d5c09012SAndroid Build Coastguard Worker REFUND_REQUEST = 15; 157*d5c09012SAndroid Build Coastguard Worker 158*d5c09012SAndroid Build Coastguard Worker // Indicates that the merchant has received a refund request for this 159*d5c09012SAndroid Build Coastguard Worker // transaction, but that they have declined it. For partial refunds, we 160*d5c09012SAndroid Build Coastguard Worker // recommend that you include an amount in the `value` field. Reason 161*d5c09012SAndroid Build Coastguard Worker // example: 'TAX_EXEMPT' (partial refund of exempt tax) 162*d5c09012SAndroid Build Coastguard Worker REFUND_DECLINE = 16; 163*d5c09012SAndroid Build Coastguard Worker 164*d5c09012SAndroid Build Coastguard Worker // Indicates that the completed transaction was refunded by the merchant. 165*d5c09012SAndroid Build Coastguard Worker // For partial refunds, we recommend that you include an amount in the 166*d5c09012SAndroid Build Coastguard Worker // `value` field. Reason example: 'TAX_EXEMPT' (partial refund of exempt 167*d5c09012SAndroid Build Coastguard Worker // tax) 168*d5c09012SAndroid Build Coastguard Worker REFUND = 17; 169*d5c09012SAndroid Build Coastguard Worker 170*d5c09012SAndroid Build Coastguard Worker // Indicates that the completed transaction was refunded by the merchant, 171*d5c09012SAndroid Build Coastguard Worker // and that this refund was reversed. For partial refunds, we recommend that 172*d5c09012SAndroid Build Coastguard Worker // you include an amount in the `value` field. 173*d5c09012SAndroid Build Coastguard Worker REFUND_REVERSE = 18; 174*d5c09012SAndroid Build Coastguard Worker } 175*d5c09012SAndroid Build Coastguard Worker 176*d5c09012SAndroid Build Coastguard Worker // Optional. The type of this transaction event. 177*d5c09012SAndroid Build Coastguard Worker TransactionEventType event_type = 1 [(google.api.field_behavior) = OPTIONAL]; 178*d5c09012SAndroid Build Coastguard Worker 179*d5c09012SAndroid Build Coastguard Worker // Optional. The reason or standardized code that corresponds with this 180*d5c09012SAndroid Build Coastguard Worker // transaction event, if one exists. For example, a CHARGEBACK event with code 181*d5c09012SAndroid Build Coastguard Worker // 6005. 182*d5c09012SAndroid Build Coastguard Worker string reason = 2 [(google.api.field_behavior) = OPTIONAL]; 183*d5c09012SAndroid Build Coastguard Worker 184*d5c09012SAndroid Build Coastguard Worker // Optional. The value that corresponds with this transaction event, if one 185*d5c09012SAndroid Build Coastguard Worker // exists. For example, a refund event where $5.00 was refunded. Currency is 186*d5c09012SAndroid Build Coastguard Worker // obtained from the original transaction data. 187*d5c09012SAndroid Build Coastguard Worker double value = 3 [(google.api.field_behavior) = OPTIONAL]; 188*d5c09012SAndroid Build Coastguard Worker 189*d5c09012SAndroid Build Coastguard Worker // Optional. Timestamp when this transaction event occurred; otherwise assumed 190*d5c09012SAndroid Build Coastguard Worker // to be the time of the API call. 191*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp event_time = 4 192*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 193*d5c09012SAndroid Build Coastguard Worker} 194*d5c09012SAndroid Build Coastguard Worker 195*d5c09012SAndroid Build Coastguard Worker// The request message to annotate an Assessment. 196*d5c09012SAndroid Build Coastguard Workermessage AnnotateAssessmentRequest { 197*d5c09012SAndroid Build Coastguard Worker // Enum that represents the types of annotations. 198*d5c09012SAndroid Build Coastguard Worker enum Annotation { 199*d5c09012SAndroid Build Coastguard Worker // Default unspecified type. 200*d5c09012SAndroid Build Coastguard Worker ANNOTATION_UNSPECIFIED = 0; 201*d5c09012SAndroid Build Coastguard Worker 202*d5c09012SAndroid Build Coastguard Worker // Provides information that the event turned out to be legitimate. 203*d5c09012SAndroid Build Coastguard Worker LEGITIMATE = 1; 204*d5c09012SAndroid Build Coastguard Worker 205*d5c09012SAndroid Build Coastguard Worker // Provides information that the event turned out to be fraudulent. 206*d5c09012SAndroid Build Coastguard Worker FRAUDULENT = 2; 207*d5c09012SAndroid Build Coastguard Worker 208*d5c09012SAndroid Build Coastguard Worker // Provides information that the event was related to a login event in which 209*d5c09012SAndroid Build Coastguard Worker // the user typed the correct password. Deprecated, prefer indicating 210*d5c09012SAndroid Build Coastguard Worker // CORRECT_PASSWORD through the reasons field instead. 211*d5c09012SAndroid Build Coastguard Worker PASSWORD_CORRECT = 3 [deprecated = true]; 212*d5c09012SAndroid Build Coastguard Worker 213*d5c09012SAndroid Build Coastguard Worker // Provides information that the event was related to a login event in which 214*d5c09012SAndroid Build Coastguard Worker // the user typed the incorrect password. Deprecated, prefer indicating 215*d5c09012SAndroid Build Coastguard Worker // INCORRECT_PASSWORD through the reasons field instead. 216*d5c09012SAndroid Build Coastguard Worker PASSWORD_INCORRECT = 4 [deprecated = true]; 217*d5c09012SAndroid Build Coastguard Worker } 218*d5c09012SAndroid Build Coastguard Worker 219*d5c09012SAndroid Build Coastguard Worker // Enum that represents potential reasons for annotating an assessment. 220*d5c09012SAndroid Build Coastguard Worker enum Reason { 221*d5c09012SAndroid Build Coastguard Worker // Default unspecified reason. 222*d5c09012SAndroid Build Coastguard Worker REASON_UNSPECIFIED = 0; 223*d5c09012SAndroid Build Coastguard Worker 224*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction had a chargeback issued with no other 225*d5c09012SAndroid Build Coastguard Worker // details. When possible, specify the type by using CHARGEBACK_FRAUD or 226*d5c09012SAndroid Build Coastguard Worker // CHARGEBACK_DISPUTE instead. 227*d5c09012SAndroid Build Coastguard Worker CHARGEBACK = 1; 228*d5c09012SAndroid Build Coastguard Worker 229*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction had a chargeback issued related to an 230*d5c09012SAndroid Build Coastguard Worker // alleged unauthorized transaction from the cardholder's perspective (for 231*d5c09012SAndroid Build Coastguard Worker // example, the card number was stolen). 232*d5c09012SAndroid Build Coastguard Worker CHARGEBACK_FRAUD = 8; 233*d5c09012SAndroid Build Coastguard Worker 234*d5c09012SAndroid Build Coastguard Worker // Indicates that the transaction had a chargeback issued related to the 235*d5c09012SAndroid Build Coastguard Worker // cardholder having provided their card details but allegedly not being 236*d5c09012SAndroid Build Coastguard Worker // satisfied with the purchase (for example, misrepresentation, attempted 237*d5c09012SAndroid Build Coastguard Worker // cancellation). 238*d5c09012SAndroid Build Coastguard Worker CHARGEBACK_DISPUTE = 9; 239*d5c09012SAndroid Build Coastguard Worker 240*d5c09012SAndroid Build Coastguard Worker // Indicates that the completed payment transaction was refunded by the 241*d5c09012SAndroid Build Coastguard Worker // seller. 242*d5c09012SAndroid Build Coastguard Worker REFUND = 10; 243*d5c09012SAndroid Build Coastguard Worker 244*d5c09012SAndroid Build Coastguard Worker // Indicates that the completed payment transaction was determined to be 245*d5c09012SAndroid Build Coastguard Worker // fraudulent by the seller, and was cancelled and refunded as a result. 246*d5c09012SAndroid Build Coastguard Worker REFUND_FRAUD = 11; 247*d5c09012SAndroid Build Coastguard Worker 248*d5c09012SAndroid Build Coastguard Worker // Indicates that the payment transaction was accepted, and the user was 249*d5c09012SAndroid Build Coastguard Worker // charged. 250*d5c09012SAndroid Build Coastguard Worker TRANSACTION_ACCEPTED = 12; 251*d5c09012SAndroid Build Coastguard Worker 252*d5c09012SAndroid Build Coastguard Worker // Indicates that the payment transaction was declined, for example due to 253*d5c09012SAndroid Build Coastguard Worker // invalid card details. 254*d5c09012SAndroid Build Coastguard Worker TRANSACTION_DECLINED = 13; 255*d5c09012SAndroid Build Coastguard Worker 256*d5c09012SAndroid Build Coastguard Worker // Indicates the transaction associated with the assessment is suspected of 257*d5c09012SAndroid Build Coastguard Worker // being fraudulent based on the payment method, billing details, shipping 258*d5c09012SAndroid Build Coastguard Worker // address or other transaction information. 259*d5c09012SAndroid Build Coastguard Worker PAYMENT_HEURISTICS = 2; 260*d5c09012SAndroid Build Coastguard Worker 261*d5c09012SAndroid Build Coastguard Worker // Indicates that the user was served a 2FA challenge. An old assessment 262*d5c09012SAndroid Build Coastguard Worker // with `ENUM_VALUES.INITIATED_TWO_FACTOR` reason that has not been 263*d5c09012SAndroid Build Coastguard Worker // overwritten with `PASSED_TWO_FACTOR` is treated as an abandoned 2FA flow. 264*d5c09012SAndroid Build Coastguard Worker // This is equivalent to `FAILED_TWO_FACTOR`. 265*d5c09012SAndroid Build Coastguard Worker INITIATED_TWO_FACTOR = 7; 266*d5c09012SAndroid Build Coastguard Worker 267*d5c09012SAndroid Build Coastguard Worker // Indicates that the user passed a 2FA challenge. 268*d5c09012SAndroid Build Coastguard Worker PASSED_TWO_FACTOR = 3; 269*d5c09012SAndroid Build Coastguard Worker 270*d5c09012SAndroid Build Coastguard Worker // Indicates that the user failed a 2FA challenge. 271*d5c09012SAndroid Build Coastguard Worker FAILED_TWO_FACTOR = 4; 272*d5c09012SAndroid Build Coastguard Worker 273*d5c09012SAndroid Build Coastguard Worker // Indicates the user provided the correct password. 274*d5c09012SAndroid Build Coastguard Worker CORRECT_PASSWORD = 5; 275*d5c09012SAndroid Build Coastguard Worker 276*d5c09012SAndroid Build Coastguard Worker // Indicates the user provided an incorrect password. 277*d5c09012SAndroid Build Coastguard Worker INCORRECT_PASSWORD = 6; 278*d5c09012SAndroid Build Coastguard Worker 279*d5c09012SAndroid Build Coastguard Worker // Indicates that the user sent unwanted and abusive messages to other users 280*d5c09012SAndroid Build Coastguard Worker // of the platform, such as spam, scams, phishing, or social engineering. 281*d5c09012SAndroid Build Coastguard Worker SOCIAL_SPAM = 14; 282*d5c09012SAndroid Build Coastguard Worker } 283*d5c09012SAndroid Build Coastguard Worker 284*d5c09012SAndroid Build Coastguard Worker // Required. The resource name of the Assessment, in the format 285*d5c09012SAndroid Build Coastguard Worker // `projects/{project_number}/assessments/{assessment_id}`. 286*d5c09012SAndroid Build Coastguard Worker string name = 1 [ 287*d5c09012SAndroid Build Coastguard Worker (google.api.field_behavior) = REQUIRED, 288*d5c09012SAndroid Build Coastguard Worker (google.api.resource_reference) = { 289*d5c09012SAndroid Build Coastguard Worker type: "recaptchaenterprise.googleapis.com/Assessment" 290*d5c09012SAndroid Build Coastguard Worker } 291*d5c09012SAndroid Build Coastguard Worker ]; 292*d5c09012SAndroid Build Coastguard Worker 293*d5c09012SAndroid Build Coastguard Worker // Optional. The annotation that will be assigned to the Event. This field can 294*d5c09012SAndroid Build Coastguard Worker // be left empty to provide reasons that apply to an event without concluding 295*d5c09012SAndroid Build Coastguard Worker // whether the event is legitimate or fraudulent. 296*d5c09012SAndroid Build Coastguard Worker Annotation annotation = 2 [(google.api.field_behavior) = OPTIONAL]; 297*d5c09012SAndroid Build Coastguard Worker 298*d5c09012SAndroid Build Coastguard Worker // Optional. Reasons for the annotation that are assigned to the event. 299*d5c09012SAndroid Build Coastguard Worker repeated Reason reasons = 3 [(google.api.field_behavior) = OPTIONAL]; 300*d5c09012SAndroid Build Coastguard Worker 301*d5c09012SAndroid Build Coastguard Worker // Optional. Unique stable hashed user identifier to apply to the assessment. 302*d5c09012SAndroid Build Coastguard Worker // This is an alternative to setting the `hashed_account_id` in 303*d5c09012SAndroid Build Coastguard Worker // `CreateAssessment`, for example, when the account identifier is not yet 304*d5c09012SAndroid Build Coastguard Worker // known in the initial request. It is recommended that the identifier is 305*d5c09012SAndroid Build Coastguard Worker // hashed using hmac-sha256 with stable secret. 306*d5c09012SAndroid Build Coastguard Worker bytes hashed_account_id = 4 [(google.api.field_behavior) = OPTIONAL]; 307*d5c09012SAndroid Build Coastguard Worker 308*d5c09012SAndroid Build Coastguard Worker // Optional. If the assessment is part of a payment transaction, provide 309*d5c09012SAndroid Build Coastguard Worker // details on payment lifecycle events that occur in the transaction. 310*d5c09012SAndroid Build Coastguard Worker TransactionEvent transaction_event = 5 311*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 312*d5c09012SAndroid Build Coastguard Worker} 313*d5c09012SAndroid Build Coastguard Worker 314*d5c09012SAndroid Build Coastguard Worker// Empty response for AnnotateAssessment. 315*d5c09012SAndroid Build Coastguard Workermessage AnnotateAssessmentResponse {} 316*d5c09012SAndroid Build Coastguard Worker 317*d5c09012SAndroid Build Coastguard Worker// Password leak verification info. 318*d5c09012SAndroid Build Coastguard Workermessage PasswordLeakVerification { 319*d5c09012SAndroid Build Coastguard Worker // Optional. Scrypt hash of the username+password that the customer wants to 320*d5c09012SAndroid Build Coastguard Worker // verify against a known password leak. 321*d5c09012SAndroid Build Coastguard Worker bytes hashed_user_credentials = 1 [(google.api.field_behavior) = OPTIONAL]; 322*d5c09012SAndroid Build Coastguard Worker 323*d5c09012SAndroid Build Coastguard Worker // Output only. Whether or not the user's credentials are present in a known 324*d5c09012SAndroid Build Coastguard Worker // leak. 325*d5c09012SAndroid Build Coastguard Worker bool credentials_leaked = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; 326*d5c09012SAndroid Build Coastguard Worker 327*d5c09012SAndroid Build Coastguard Worker // Optional. The username part of the user credentials for which we want to 328*d5c09012SAndroid Build Coastguard Worker // trigger a leak check in canonicalized form. This is the same data used to 329*d5c09012SAndroid Build Coastguard Worker // create the hashed_user_credentials on the customer side. 330*d5c09012SAndroid Build Coastguard Worker string canonicalized_username = 3 [(google.api.field_behavior) = OPTIONAL]; 331*d5c09012SAndroid Build Coastguard Worker} 332*d5c09012SAndroid Build Coastguard Worker 333*d5c09012SAndroid Build Coastguard Worker// A reCAPTCHA Enterprise assessment resource. 334*d5c09012SAndroid Build Coastguard Workermessage Assessment { 335*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 336*d5c09012SAndroid Build Coastguard Worker type: "recaptchaenterprise.googleapis.com/Assessment" 337*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/assessments/{assessment}" 338*d5c09012SAndroid Build Coastguard Worker }; 339*d5c09012SAndroid Build Coastguard Worker 340*d5c09012SAndroid Build Coastguard Worker // Reasons contributing to the risk analysis verdict. 341*d5c09012SAndroid Build Coastguard Worker enum ClassificationReason { 342*d5c09012SAndroid Build Coastguard Worker // Default unspecified type. 343*d5c09012SAndroid Build Coastguard Worker CLASSIFICATION_REASON_UNSPECIFIED = 0; 344*d5c09012SAndroid Build Coastguard Worker 345*d5c09012SAndroid Build Coastguard Worker // Interactions matched the behavior of an automated agent. 346*d5c09012SAndroid Build Coastguard Worker AUTOMATION = 1; 347*d5c09012SAndroid Build Coastguard Worker 348*d5c09012SAndroid Build Coastguard Worker // The event originated from an illegitimate environment. 349*d5c09012SAndroid Build Coastguard Worker UNEXPECTED_ENVIRONMENT = 2; 350*d5c09012SAndroid Build Coastguard Worker 351*d5c09012SAndroid Build Coastguard Worker // Traffic volume from the event source is higher than normal. 352*d5c09012SAndroid Build Coastguard Worker TOO_MUCH_TRAFFIC = 3; 353*d5c09012SAndroid Build Coastguard Worker 354*d5c09012SAndroid Build Coastguard Worker // Interactions with the site were significantly different than expected 355*d5c09012SAndroid Build Coastguard Worker // patterns. 356*d5c09012SAndroid Build Coastguard Worker UNEXPECTED_USAGE_PATTERNS = 4; 357*d5c09012SAndroid Build Coastguard Worker 358*d5c09012SAndroid Build Coastguard Worker // Too little traffic has been received from this site thus far to generate 359*d5c09012SAndroid Build Coastguard Worker // quality risk analysis. 360*d5c09012SAndroid Build Coastguard Worker LOW_CONFIDENCE_SCORE = 5; 361*d5c09012SAndroid Build Coastguard Worker 362*d5c09012SAndroid Build Coastguard Worker // The request matches behavioral characteristics of a carding attack. 363*d5c09012SAndroid Build Coastguard Worker SUSPECTED_CARDING = 6; 364*d5c09012SAndroid Build Coastguard Worker 365*d5c09012SAndroid Build Coastguard Worker // The request matches behavioral characteristics of chargebacks for fraud. 366*d5c09012SAndroid Build Coastguard Worker SUSPECTED_CHARGEBACK = 7; 367*d5c09012SAndroid Build Coastguard Worker } 368*d5c09012SAndroid Build Coastguard Worker 369*d5c09012SAndroid Build Coastguard Worker // Output only. The resource name for the Assessment in the format 370*d5c09012SAndroid Build Coastguard Worker // `projects/{project_number}/assessments/{assessment_id}`. 371*d5c09012SAndroid Build Coastguard Worker string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY]; 372*d5c09012SAndroid Build Coastguard Worker 373*d5c09012SAndroid Build Coastguard Worker // The event being assessed. 374*d5c09012SAndroid Build Coastguard Worker Event event = 2; 375*d5c09012SAndroid Build Coastguard Worker 376*d5c09012SAndroid Build Coastguard Worker // Output only. Legitimate event score from 0.0 to 1.0. 377*d5c09012SAndroid Build Coastguard Worker // (1.0 means very likely legitimate traffic while 0.0 means very likely 378*d5c09012SAndroid Build Coastguard Worker // non-legitimate traffic). 379*d5c09012SAndroid Build Coastguard Worker float score = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; 380*d5c09012SAndroid Build Coastguard Worker 381*d5c09012SAndroid Build Coastguard Worker // Output only. Properties of the provided event token. 382*d5c09012SAndroid Build Coastguard Worker TokenProperties token_properties = 4 383*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 384*d5c09012SAndroid Build Coastguard Worker 385*d5c09012SAndroid Build Coastguard Worker // Output only. Reasons contributing to the risk analysis verdict. 386*d5c09012SAndroid Build Coastguard Worker repeated ClassificationReason reasons = 5 387*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 388*d5c09012SAndroid Build Coastguard Worker 389*d5c09012SAndroid Build Coastguard Worker // Information about the user's credentials used to check for leaks. 390*d5c09012SAndroid Build Coastguard Worker // This feature is part of the Early Access Program (EAP). Exercise caution, 391*d5c09012SAndroid Build Coastguard Worker // and do not deploy integrations based on this feature in a production 392*d5c09012SAndroid Build Coastguard Worker // environment. 393*d5c09012SAndroid Build Coastguard Worker PasswordLeakVerification password_leak_verification = 7; 394*d5c09012SAndroid Build Coastguard Worker 395*d5c09012SAndroid Build Coastguard Worker // Assessment returned by account defender when a hashed_account_id is 396*d5c09012SAndroid Build Coastguard Worker // provided. 397*d5c09012SAndroid Build Coastguard Worker AccountDefenderAssessment account_defender_assessment = 8; 398*d5c09012SAndroid Build Coastguard Worker 399*d5c09012SAndroid Build Coastguard Worker // Assessment returned by Fraud Prevention when TransactionData is provided. 400*d5c09012SAndroid Build Coastguard Worker FraudPreventionAssessment fraud_prevention_assessment = 11; 401*d5c09012SAndroid Build Coastguard Worker} 402*d5c09012SAndroid Build Coastguard Worker 403*d5c09012SAndroid Build Coastguard Workermessage Event { 404*d5c09012SAndroid Build Coastguard Worker // Setting that controls Fraud Prevention assessments. 405*d5c09012SAndroid Build Coastguard Worker enum FraudPrevention { 406*d5c09012SAndroid Build Coastguard Worker // Default, unspecified setting. If opted in for automatic detection, 407*d5c09012SAndroid Build Coastguard Worker // `fraud_prevention_assessment` is returned based on the request. 408*d5c09012SAndroid Build Coastguard Worker // Otherwise, `fraud_prevention_assessment` is returned if 409*d5c09012SAndroid Build Coastguard Worker // `transaction_data` is present in the `Event` and Fraud Prevention is 410*d5c09012SAndroid Build Coastguard Worker // enabled in the Google Cloud console. 411*d5c09012SAndroid Build Coastguard Worker FRAUD_PREVENTION_UNSPECIFIED = 0; 412*d5c09012SAndroid Build Coastguard Worker 413*d5c09012SAndroid Build Coastguard Worker // Enable Fraud Prevention for this assessment, if Fraud Prevention is 414*d5c09012SAndroid Build Coastguard Worker // enabled in the Google Cloud console. 415*d5c09012SAndroid Build Coastguard Worker ENABLED = 1; 416*d5c09012SAndroid Build Coastguard Worker 417*d5c09012SAndroid Build Coastguard Worker // Disable Fraud Prevention for this assessment, regardless of opt-in 418*d5c09012SAndroid Build Coastguard Worker // status or the Google Cloud console settings. 419*d5c09012SAndroid Build Coastguard Worker DISABLED = 2; 420*d5c09012SAndroid Build Coastguard Worker } 421*d5c09012SAndroid Build Coastguard Worker 422*d5c09012SAndroid Build Coastguard Worker // Optional. The user response token provided by the reCAPTCHA Enterprise 423*d5c09012SAndroid Build Coastguard Worker // client-side integration on your site. 424*d5c09012SAndroid Build Coastguard Worker string token = 1 [(google.api.field_behavior) = OPTIONAL]; 425*d5c09012SAndroid Build Coastguard Worker 426*d5c09012SAndroid Build Coastguard Worker // Optional. The site key that was used to invoke reCAPTCHA Enterprise on your 427*d5c09012SAndroid Build Coastguard Worker // site and generate the token. 428*d5c09012SAndroid Build Coastguard Worker string site_key = 2 [(google.api.field_behavior) = OPTIONAL]; 429*d5c09012SAndroid Build Coastguard Worker 430*d5c09012SAndroid Build Coastguard Worker // Optional. The user agent present in the request from the user's device 431*d5c09012SAndroid Build Coastguard Worker // related to this event. 432*d5c09012SAndroid Build Coastguard Worker string user_agent = 3 [(google.api.field_behavior) = OPTIONAL]; 433*d5c09012SAndroid Build Coastguard Worker 434*d5c09012SAndroid Build Coastguard Worker // Optional. The IP address in the request from the user's device related to 435*d5c09012SAndroid Build Coastguard Worker // this event. 436*d5c09012SAndroid Build Coastguard Worker string user_ip_address = 4 [(google.api.field_behavior) = OPTIONAL]; 437*d5c09012SAndroid Build Coastguard Worker 438*d5c09012SAndroid Build Coastguard Worker // Optional. The expected action for this type of event. This should be the 439*d5c09012SAndroid Build Coastguard Worker // same action provided at token generation time on client-side platforms 440*d5c09012SAndroid Build Coastguard Worker // already integrated with recaptcha enterprise. 441*d5c09012SAndroid Build Coastguard Worker string expected_action = 5 [(google.api.field_behavior) = OPTIONAL]; 442*d5c09012SAndroid Build Coastguard Worker 443*d5c09012SAndroid Build Coastguard Worker // Optional. Unique stable hashed user identifier for the request. The 444*d5c09012SAndroid Build Coastguard Worker // identifier must be hashed using hmac-sha256 with stable secret. 445*d5c09012SAndroid Build Coastguard Worker bytes hashed_account_id = 6 [(google.api.field_behavior) = OPTIONAL]; 446*d5c09012SAndroid Build Coastguard Worker 447*d5c09012SAndroid Build Coastguard Worker // Optional. Data describing a payment transaction to be assessed. Sending 448*d5c09012SAndroid Build Coastguard Worker // this data enables reCAPTCHA Enterprise Fraud Prevention and the 449*d5c09012SAndroid Build Coastguard Worker // FraudPreventionAssessment component in the response. 450*d5c09012SAndroid Build Coastguard Worker TransactionData transaction_data = 13 451*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 452*d5c09012SAndroid Build Coastguard Worker 453*d5c09012SAndroid Build Coastguard Worker // Optional. The Fraud Prevention setting for this Assessment. 454*d5c09012SAndroid Build Coastguard Worker FraudPrevention fraud_prevention = 17 455*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 456*d5c09012SAndroid Build Coastguard Worker} 457*d5c09012SAndroid Build Coastguard Worker 458*d5c09012SAndroid Build Coastguard Worker// Transaction data associated with a payment protected by reCAPTCHA Enterprise. 459*d5c09012SAndroid Build Coastguard Workermessage TransactionData { 460*d5c09012SAndroid Build Coastguard Worker // Structured address format for billing and shipping addresses. 461*d5c09012SAndroid Build Coastguard Worker message Address { 462*d5c09012SAndroid Build Coastguard Worker // The recipient name, potentially including information such as "care of". 463*d5c09012SAndroid Build Coastguard Worker string recipient = 1; 464*d5c09012SAndroid Build Coastguard Worker 465*d5c09012SAndroid Build Coastguard Worker // The first lines of the address. The first line generally contains the 466*d5c09012SAndroid Build Coastguard Worker // street name and number, and further lines may include information such as 467*d5c09012SAndroid Build Coastguard Worker // an apartment number. 468*d5c09012SAndroid Build Coastguard Worker repeated string address = 2; 469*d5c09012SAndroid Build Coastguard Worker 470*d5c09012SAndroid Build Coastguard Worker // The town/city of the address. 471*d5c09012SAndroid Build Coastguard Worker string locality = 3; 472*d5c09012SAndroid Build Coastguard Worker 473*d5c09012SAndroid Build Coastguard Worker // The state, province, or otherwise administrative area of the address. 474*d5c09012SAndroid Build Coastguard Worker string administrative_area = 4; 475*d5c09012SAndroid Build Coastguard Worker 476*d5c09012SAndroid Build Coastguard Worker // The CLDR country/region of the address. 477*d5c09012SAndroid Build Coastguard Worker string region_code = 5; 478*d5c09012SAndroid Build Coastguard Worker 479*d5c09012SAndroid Build Coastguard Worker // The postal or ZIP code of the address. 480*d5c09012SAndroid Build Coastguard Worker string postal_code = 6; 481*d5c09012SAndroid Build Coastguard Worker } 482*d5c09012SAndroid Build Coastguard Worker 483*d5c09012SAndroid Build Coastguard Worker // Details about a user's account involved in the transaction. 484*d5c09012SAndroid Build Coastguard Worker message User { 485*d5c09012SAndroid Build Coastguard Worker // Unique account identifier for this user. If using account defender, 486*d5c09012SAndroid Build Coastguard Worker // this should match the hashed_account_id field. Otherwise, a unique and 487*d5c09012SAndroid Build Coastguard Worker // persistent identifier for this account. 488*d5c09012SAndroid Build Coastguard Worker string account_id = 6; 489*d5c09012SAndroid Build Coastguard Worker 490*d5c09012SAndroid Build Coastguard Worker // The epoch milliseconds of the user's account creation. 491*d5c09012SAndroid Build Coastguard Worker int64 creation_ms = 1; 492*d5c09012SAndroid Build Coastguard Worker 493*d5c09012SAndroid Build Coastguard Worker // The email address of the user. 494*d5c09012SAndroid Build Coastguard Worker string email = 2; 495*d5c09012SAndroid Build Coastguard Worker 496*d5c09012SAndroid Build Coastguard Worker // Whether the email has been verified to be accessible by the user (OTP or 497*d5c09012SAndroid Build Coastguard Worker // similar). 498*d5c09012SAndroid Build Coastguard Worker bool email_verified = 3; 499*d5c09012SAndroid Build Coastguard Worker 500*d5c09012SAndroid Build Coastguard Worker // The phone number of the user, with country code. 501*d5c09012SAndroid Build Coastguard Worker string phone_number = 4; 502*d5c09012SAndroid Build Coastguard Worker 503*d5c09012SAndroid Build Coastguard Worker // Whether the phone number has been verified to be accessible by the user 504*d5c09012SAndroid Build Coastguard Worker // (OTP or similar). 505*d5c09012SAndroid Build Coastguard Worker bool phone_verified = 5; 506*d5c09012SAndroid Build Coastguard Worker } 507*d5c09012SAndroid Build Coastguard Worker 508*d5c09012SAndroid Build Coastguard Worker // Line items being purchased in this transaction. 509*d5c09012SAndroid Build Coastguard Worker message Item { 510*d5c09012SAndroid Build Coastguard Worker // The full name of the item. 511*d5c09012SAndroid Build Coastguard Worker string name = 1; 512*d5c09012SAndroid Build Coastguard Worker 513*d5c09012SAndroid Build Coastguard Worker // The value per item that the user is paying, in the transaction currency, 514*d5c09012SAndroid Build Coastguard Worker // after discounts. 515*d5c09012SAndroid Build Coastguard Worker double value = 2; 516*d5c09012SAndroid Build Coastguard Worker 517*d5c09012SAndroid Build Coastguard Worker // The quantity of this item that is being purchased. 518*d5c09012SAndroid Build Coastguard Worker int64 quantity = 3; 519*d5c09012SAndroid Build Coastguard Worker 520*d5c09012SAndroid Build Coastguard Worker // When a merchant is specified, its corresponding account_id. Necessary to 521*d5c09012SAndroid Build Coastguard Worker // populate marketplace-style transactions. 522*d5c09012SAndroid Build Coastguard Worker string merchant_account_id = 4; 523*d5c09012SAndroid Build Coastguard Worker } 524*d5c09012SAndroid Build Coastguard Worker 525*d5c09012SAndroid Build Coastguard Worker // Details about the transaction from the gateway. 526*d5c09012SAndroid Build Coastguard Worker message GatewayInfo { 527*d5c09012SAndroid Build Coastguard Worker // Name of the gateway service (for example, stripe, square, paypal). 528*d5c09012SAndroid Build Coastguard Worker string name = 1; 529*d5c09012SAndroid Build Coastguard Worker 530*d5c09012SAndroid Build Coastguard Worker // Gateway response code describing the state of the transaction. 531*d5c09012SAndroid Build Coastguard Worker string gateway_response_code = 2; 532*d5c09012SAndroid Build Coastguard Worker 533*d5c09012SAndroid Build Coastguard Worker // AVS response code from the gateway 534*d5c09012SAndroid Build Coastguard Worker // (available only when reCAPTCHA Enterprise is called after authorization). 535*d5c09012SAndroid Build Coastguard Worker string avs_response_code = 3; 536*d5c09012SAndroid Build Coastguard Worker 537*d5c09012SAndroid Build Coastguard Worker // CVV response code from the gateway 538*d5c09012SAndroid Build Coastguard Worker // (available only when reCAPTCHA Enterprise is called after authorization). 539*d5c09012SAndroid Build Coastguard Worker string cvv_response_code = 4; 540*d5c09012SAndroid Build Coastguard Worker } 541*d5c09012SAndroid Build Coastguard Worker 542*d5c09012SAndroid Build Coastguard Worker // Unique identifier for the transaction. This custom identifier can be used 543*d5c09012SAndroid Build Coastguard Worker // to reference this transaction in the future, for example, labeling a refund 544*d5c09012SAndroid Build Coastguard Worker // or chargeback event. Two attempts at the same transaction should use the 545*d5c09012SAndroid Build Coastguard Worker // same transaction id. 546*d5c09012SAndroid Build Coastguard Worker optional string transaction_id = 11; 547*d5c09012SAndroid Build Coastguard Worker 548*d5c09012SAndroid Build Coastguard Worker // The payment method for the transaction. The allowed values are: 549*d5c09012SAndroid Build Coastguard Worker // 550*d5c09012SAndroid Build Coastguard Worker // * credit-card 551*d5c09012SAndroid Build Coastguard Worker // * debit-card 552*d5c09012SAndroid Build Coastguard Worker // * gift-card 553*d5c09012SAndroid Build Coastguard Worker // * processor-{name} (If a third-party is used, for example, 554*d5c09012SAndroid Build Coastguard Worker // processor-paypal) 555*d5c09012SAndroid Build Coastguard Worker // * custom-{name} (If an alternative method is used, for example, 556*d5c09012SAndroid Build Coastguard Worker // custom-crypto) 557*d5c09012SAndroid Build Coastguard Worker string payment_method = 1; 558*d5c09012SAndroid Build Coastguard Worker 559*d5c09012SAndroid Build Coastguard Worker // The Bank Identification Number - generally the first 6 or 8 digits of the 560*d5c09012SAndroid Build Coastguard Worker // card. 561*d5c09012SAndroid Build Coastguard Worker string card_bin = 2; 562*d5c09012SAndroid Build Coastguard Worker 563*d5c09012SAndroid Build Coastguard Worker // The last four digits of the card. 564*d5c09012SAndroid Build Coastguard Worker string card_last_four = 3; 565*d5c09012SAndroid Build Coastguard Worker 566*d5c09012SAndroid Build Coastguard Worker // The currency code in ISO-4217 format. 567*d5c09012SAndroid Build Coastguard Worker string currency_code = 4; 568*d5c09012SAndroid Build Coastguard Worker 569*d5c09012SAndroid Build Coastguard Worker // The decimal value of the transaction in the specified currency. 570*d5c09012SAndroid Build Coastguard Worker double value = 5; 571*d5c09012SAndroid Build Coastguard Worker 572*d5c09012SAndroid Build Coastguard Worker // The value of shipping in the specified currency. 0 for free or no shipping. 573*d5c09012SAndroid Build Coastguard Worker double shipping_value = 12; 574*d5c09012SAndroid Build Coastguard Worker 575*d5c09012SAndroid Build Coastguard Worker // Destination address if this transaction involves shipping a physical item. 576*d5c09012SAndroid Build Coastguard Worker Address shipping_address = 6; 577*d5c09012SAndroid Build Coastguard Worker 578*d5c09012SAndroid Build Coastguard Worker // Address associated with the payment method when applicable. 579*d5c09012SAndroid Build Coastguard Worker Address billing_address = 7; 580*d5c09012SAndroid Build Coastguard Worker 581*d5c09012SAndroid Build Coastguard Worker // Information about the user paying/initiating the transaction. 582*d5c09012SAndroid Build Coastguard Worker User user = 8; 583*d5c09012SAndroid Build Coastguard Worker 584*d5c09012SAndroid Build Coastguard Worker // Information about the user or users fulfilling the transaction. 585*d5c09012SAndroid Build Coastguard Worker repeated User merchants = 13; 586*d5c09012SAndroid Build Coastguard Worker 587*d5c09012SAndroid Build Coastguard Worker // Items purchased in this transaction. 588*d5c09012SAndroid Build Coastguard Worker repeated Item items = 14; 589*d5c09012SAndroid Build Coastguard Worker 590*d5c09012SAndroid Build Coastguard Worker // Information about the payment gateway's response to the transaction. 591*d5c09012SAndroid Build Coastguard Worker GatewayInfo gateway_info = 10; 592*d5c09012SAndroid Build Coastguard Worker} 593*d5c09012SAndroid Build Coastguard Worker 594*d5c09012SAndroid Build Coastguard Workermessage TokenProperties { 595*d5c09012SAndroid Build Coastguard Worker // Enum that represents the types of invalid token reasons. 596*d5c09012SAndroid Build Coastguard Worker enum InvalidReason { 597*d5c09012SAndroid Build Coastguard Worker // Default unspecified type. 598*d5c09012SAndroid Build Coastguard Worker INVALID_REASON_UNSPECIFIED = 0; 599*d5c09012SAndroid Build Coastguard Worker 600*d5c09012SAndroid Build Coastguard Worker // If the failure reason was not accounted for. 601*d5c09012SAndroid Build Coastguard Worker UNKNOWN_INVALID_REASON = 1; 602*d5c09012SAndroid Build Coastguard Worker 603*d5c09012SAndroid Build Coastguard Worker // The provided user verification token was malformed. 604*d5c09012SAndroid Build Coastguard Worker MALFORMED = 2; 605*d5c09012SAndroid Build Coastguard Worker 606*d5c09012SAndroid Build Coastguard Worker // The user verification token had expired. 607*d5c09012SAndroid Build Coastguard Worker EXPIRED = 3; 608*d5c09012SAndroid Build Coastguard Worker 609*d5c09012SAndroid Build Coastguard Worker // The user verification had already been seen. 610*d5c09012SAndroid Build Coastguard Worker DUPE = 4; 611*d5c09012SAndroid Build Coastguard Worker 612*d5c09012SAndroid Build Coastguard Worker // The user verification token did not match the provided site key. 613*d5c09012SAndroid Build Coastguard Worker // This may be a configuration error (for example, development keys used in 614*d5c09012SAndroid Build Coastguard Worker // production) or end users trying to use verification tokens from other 615*d5c09012SAndroid Build Coastguard Worker // sites. 616*d5c09012SAndroid Build Coastguard Worker SITE_MISMATCH = 5 [deprecated = true]; 617*d5c09012SAndroid Build Coastguard Worker 618*d5c09012SAndroid Build Coastguard Worker // The user verification token was not present. It is a required input. 619*d5c09012SAndroid Build Coastguard Worker MISSING = 6; 620*d5c09012SAndroid Build Coastguard Worker 621*d5c09012SAndroid Build Coastguard Worker // A retriable error (such as network failure) occurred on the browser. 622*d5c09012SAndroid Build Coastguard Worker // Could easily be simulated by an attacker. 623*d5c09012SAndroid Build Coastguard Worker BROWSER_ERROR = 7; 624*d5c09012SAndroid Build Coastguard Worker } 625*d5c09012SAndroid Build Coastguard Worker 626*d5c09012SAndroid Build Coastguard Worker // Whether the provided user response token is valid. When valid = false, the 627*d5c09012SAndroid Build Coastguard Worker // reason could be specified in invalid_reason or it could also be due to 628*d5c09012SAndroid Build Coastguard Worker // a user failing to solve a challenge or a sitekey mismatch (i.e the sitekey 629*d5c09012SAndroid Build Coastguard Worker // used to generate the token was different than the one specified in the 630*d5c09012SAndroid Build Coastguard Worker // assessment). 631*d5c09012SAndroid Build Coastguard Worker bool valid = 1; 632*d5c09012SAndroid Build Coastguard Worker 633*d5c09012SAndroid Build Coastguard Worker // Reason associated with the response when valid = false. 634*d5c09012SAndroid Build Coastguard Worker InvalidReason invalid_reason = 2; 635*d5c09012SAndroid Build Coastguard Worker 636*d5c09012SAndroid Build Coastguard Worker // The timestamp corresponding to the generation of the token. 637*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp create_time = 3; 638*d5c09012SAndroid Build Coastguard Worker 639*d5c09012SAndroid Build Coastguard Worker // The hostname of the page on which the token was generated. 640*d5c09012SAndroid Build Coastguard Worker string hostname = 4; 641*d5c09012SAndroid Build Coastguard Worker 642*d5c09012SAndroid Build Coastguard Worker // Action name provided at token generation. 643*d5c09012SAndroid Build Coastguard Worker string action = 5; 644*d5c09012SAndroid Build Coastguard Worker} 645*d5c09012SAndroid Build Coastguard Worker 646*d5c09012SAndroid Build Coastguard Worker// Assessment for Fraud Prevention. 647*d5c09012SAndroid Build Coastguard Workermessage FraudPreventionAssessment { 648*d5c09012SAndroid Build Coastguard Worker // Information about stolen instrument fraud, where the user is not the 649*d5c09012SAndroid Build Coastguard Worker // legitimate owner of the instrument being used for the purchase. 650*d5c09012SAndroid Build Coastguard Worker message StolenInstrumentVerdict { 651*d5c09012SAndroid Build Coastguard Worker // Probability (0-1) of this transaction being executed with a stolen 652*d5c09012SAndroid Build Coastguard Worker // instrument. 653*d5c09012SAndroid Build Coastguard Worker float risk = 1; 654*d5c09012SAndroid Build Coastguard Worker } 655*d5c09012SAndroid Build Coastguard Worker 656*d5c09012SAndroid Build Coastguard Worker // Information about card testing fraud, where an adversary is testing 657*d5c09012SAndroid Build Coastguard Worker // fraudulently obtained cards or brute forcing their details. 658*d5c09012SAndroid Build Coastguard Worker message CardTestingVerdict { 659*d5c09012SAndroid Build Coastguard Worker // Probability (0-1) of this transaction attempt being part of a card 660*d5c09012SAndroid Build Coastguard Worker // testing attack. 661*d5c09012SAndroid Build Coastguard Worker float risk = 1; 662*d5c09012SAndroid Build Coastguard Worker } 663*d5c09012SAndroid Build Coastguard Worker 664*d5c09012SAndroid Build Coastguard Worker // Information about behavioral trust of the transaction. 665*d5c09012SAndroid Build Coastguard Worker message BehavioralTrustVerdict { 666*d5c09012SAndroid Build Coastguard Worker // Probability (0-1) of this transaction attempt being executed in a 667*d5c09012SAndroid Build Coastguard Worker // behaviorally trustworthy way. 668*d5c09012SAndroid Build Coastguard Worker float trust = 1; 669*d5c09012SAndroid Build Coastguard Worker } 670*d5c09012SAndroid Build Coastguard Worker 671*d5c09012SAndroid Build Coastguard Worker // Probability (0-1) of this transaction being fraudulent. Summarizes the 672*d5c09012SAndroid Build Coastguard Worker // combined risk of attack vectors below. 673*d5c09012SAndroid Build Coastguard Worker float transaction_risk = 1; 674*d5c09012SAndroid Build Coastguard Worker 675*d5c09012SAndroid Build Coastguard Worker // Assessment of this transaction for risk of a stolen instrument. 676*d5c09012SAndroid Build Coastguard Worker StolenInstrumentVerdict stolen_instrument_verdict = 2; 677*d5c09012SAndroid Build Coastguard Worker 678*d5c09012SAndroid Build Coastguard Worker // Assessment of this transaction for risk of being part of a card testing 679*d5c09012SAndroid Build Coastguard Worker // attack. 680*d5c09012SAndroid Build Coastguard Worker CardTestingVerdict card_testing_verdict = 3; 681*d5c09012SAndroid Build Coastguard Worker 682*d5c09012SAndroid Build Coastguard Worker // Assessment of this transaction for behavioral trust. 683*d5c09012SAndroid Build Coastguard Worker BehavioralTrustVerdict behavioral_trust_verdict = 4; 684*d5c09012SAndroid Build Coastguard Worker} 685*d5c09012SAndroid Build Coastguard Worker 686*d5c09012SAndroid Build Coastguard Worker// Account defender risk assessment. 687*d5c09012SAndroid Build Coastguard Workermessage AccountDefenderAssessment { 688*d5c09012SAndroid Build Coastguard Worker // Labels returned by account defender for this request. 689*d5c09012SAndroid Build Coastguard Worker enum AccountDefenderLabel { 690*d5c09012SAndroid Build Coastguard Worker // Default unspecified type. 691*d5c09012SAndroid Build Coastguard Worker ACCOUNT_DEFENDER_LABEL_UNSPECIFIED = 0; 692*d5c09012SAndroid Build Coastguard Worker 693*d5c09012SAndroid Build Coastguard Worker // The request matches a known good profile for the user. 694*d5c09012SAndroid Build Coastguard Worker PROFILE_MATCH = 1; 695*d5c09012SAndroid Build Coastguard Worker 696*d5c09012SAndroid Build Coastguard Worker // The request is potentially a suspicious login event and should be further 697*d5c09012SAndroid Build Coastguard Worker // verified either via multi-factor authentication or another system. 698*d5c09012SAndroid Build Coastguard Worker SUSPICIOUS_LOGIN_ACTIVITY = 2; 699*d5c09012SAndroid Build Coastguard Worker 700*d5c09012SAndroid Build Coastguard Worker // The request matched a profile that previously had suspicious account 701*d5c09012SAndroid Build Coastguard Worker // creation behavior. This could mean this is a fake account. 702*d5c09012SAndroid Build Coastguard Worker SUSPICIOUS_ACCOUNT_CREATION = 3; 703*d5c09012SAndroid Build Coastguard Worker 704*d5c09012SAndroid Build Coastguard Worker // The account in the request has a high number of related accounts. It does 705*d5c09012SAndroid Build Coastguard Worker // not necessarily imply that the account is bad but could require 706*d5c09012SAndroid Build Coastguard Worker // investigating. 707*d5c09012SAndroid Build Coastguard Worker RELATED_ACCOUNTS_NUMBER_HIGH = 4; 708*d5c09012SAndroid Build Coastguard Worker } 709*d5c09012SAndroid Build Coastguard Worker 710*d5c09012SAndroid Build Coastguard Worker // Labels for this request. 711*d5c09012SAndroid Build Coastguard Worker repeated AccountDefenderLabel labels = 1; 712*d5c09012SAndroid Build Coastguard Worker} 713