xref: /aosp_15_r20/external/googleapis/google/cloud/recaptchaenterprise/v1beta1/recaptchaenterprise.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
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