Usage examples

Examples to use with the Fraud Prevention SDK for Python to implement common workflows

|

OrderPurchaseScreen

Request object

{
  "transaction": {
    "site_info": {
      "country_code": "USA",
      "agent_assisted": false
    },
    "device_details": {
      "device_box": "TrustWidget",
      "ip_address": "5.5.5.5"
    },
    "customer_account": {
      "account_type": "STANDARD",
      "name": {
        "last_name": "Expedia",
        "first_name": "Sally"
      },
      "email_address": "riskrtest@expedia.com"
    },
    "transaction_details": {
      "order_id": "33322220004",
      "current_order_status": "IN_PROGRESS",
      "order_type": "CREATE",
      "travel_products": [
        {
          "price": {
            "value": 100.0,
            "currency_code": "USD"
          },
          "type": "CAR",
          "inventory_type": "InventoryType",
          "inventory_source": "AGENCY",
          "travelers_references": [
            ""
          ],
          "pick_up_location": "pick up location",
          "drop_off_location": "drop off location",
          "pickup_time": "2020-04-15T08:00:00-07:00",
          "return_time": "2020-04-08T07:30:00-07:00"
        }
      ],
      "travelers": [
        {
          "traveler_name": {
            "last_name": "Expedia",
            "first_name": "Sally"
          },
          "email_address": "imsafe@gmail.com",
          "telephones": [
            {
              "type": "HOME",
              "country_access_code": "1",
              "area_code": "962",
              "phone_number": "12345678"
            }
          ],
          "primary": true,
          "birth_date": "2020-04-15T08:00:00-07:00"
        }
      ],
      "payments": [
        {
          "brand": "VISA",
          "method": "CREDIT_CARD",
          "billing_name": {
            "last_name": "Expedia",
            "first_name": "Sally"
          },
          "billing_address": {
            "address_type": "HOME",
            "address_line1": "Address Line 1",
            "address_line2": "Address Line 2",
            "city": "Amman",
            "zip_code": "12345",
            "country_code": "JOR"
          },
          "billing_email_address": "sally@example.com",
          "authorized_amount": {
            "value": 100.0,
            "currency_code": "USD"
          },
          "card_type": "VISA",
          "card_number": "378282246310005",
          "card_avs_response": "Z",
          "card_cvv_response": "T",
          "telephones": [
            {
              "type": "HOME",
              "country_access_code": "1",
              "area_code": "962",
              "phone_number": "12345678"
            }
          ]
        }
      ]
    }
  }
}

SDK example

fraud_prevention_client = FraudPreventionV2Client(
    ClientConfig(
        key="KEY",
        secret="SECRET",
    )
)

telephone = Telephone(
    type=TelephoneType.HOME,
    country_access_code='1',
    area_code='962',
    phone_number='12345678'
)

site_info = SiteInfo(country_code='USA', agent_assisted=False)

device_details = DeviceDetails(
    device_box='TrustWidget',
    ip_address='5.5.5.5'
)

name = Name(first_name='Sally', last_name='Expedia')

traveler = Traveler(
    traveler_name=name,
    email_address='imsafe@gmail.com',
    telephones=[telephone],
    primary=True,
    birth_date=dateutil.parser.isoparse("2020-04-15T08:00:00.000-0700")
)

amount = Amount(value=100.0, currency_code='USD')

travel_product = Car(
    type="CAR",
    inventory_type='InventoryType',
    inventory_source=InventorySource.AGENCY,
    travelers_references=[""],
    price=amount,
    pick_up_location='pick up location',
    drop_off_location='drop off location',
    return_time=dateutil.parser.isoparse('2020-04-08T07:30:00.000-0700'),
    pickup_time=dateutil.parser.isoparse('2020-04-15T08:00:00.000-0700')
)

credit_card = CreditCard(
    brand=Brand.VISA,
    method="CREDIT_CARD",
    card_type=CardType.VISA,
    billing_name=name,
    authorized_amount=amount,
    card_avs_response='Z',
    card_cvv_response='T',
    card_number='378282246310005',
    billing_email_address='sally@example.com',
    telephones=[telephone],
    billing_address=Address(
        address_type=AddressType.HOME,
        address_line1="Address Line 1",
        address_line2="Address Line 2",
        city="Amman",
        zip_code="12345",
        country_code="JOR"
    )
)

customer_account = CustomerAccount(account_type=AccountType.STANDARD, email_address='riskrtest@expedia.com', name=name)

transaction_details = TransactionDetails(
    order_id='33322220004',
    current_order_status=CurrentOrderStatus.IN_PROGRESS,
    order_type=OrderType.CREATE,
    travelers=[traveler],
    travel_products=[travel_product],
    payments=[credit_card],

)

order_purchase_transaction = OrderPurchaseTransaction(
    site_info=site_info,
    device_details=device_details,
    customer_account=customer_account,
    transaction_details=transaction_details
)

order_purchase_screen_request = OrderPurchaseScreenRequest(transaction=order_purchase_transaction)

fraud_prevention_client.screen(body=order_purchase_screen_request)

OrderPurchaseUpdate: Order Update

Request object

{
    "type": "ORDER_UPDATE",
    "risk_id": "RISK_ID",
    "order_status": "COMPLETED",
    "cancellation_reason": {
        "primary_reason_code": "PRIMARY REASON CODE",
        "sub_reason_code": "SUB REASON CODE",
        "primary_reason_description": "PRIMARY REASON DESCRIPTION",
        "sub_reason_description": "SUB REASON DESCRIPTION"
    }
}

SDK example

fraud_prevention_client = FraudPreventionV2Client(
    ClientConfig(
        key="KEY",
        secret="SECRET",
    )
)

order_update = OrderUpdate(
    type=UpdateType.ORDER_UPDATE,
    risk_id="RISK_ID",
    order_status=Status.COMPLETED,
    cancellation_reason=CancellationReason(
        primary_reason_code="PRIMARY REASON CODE",
        sub_reason_code="SUB REASON CODE",
        primary_reason_description="PRIMARY REASON DESCRIPTION",
        sub_reason_description="SUB REASON DESCRIPTION"
    )
)

fraud_prevention_client.update(body=order_update)

OrderPurchaseUpdate: Chargeback Feedback

Request object

{
  "type": "CHARGEBACK_FEEDBACK",
  "risk_id": "7b8cf809b18d4089bc924c9c808e2705",
  "chargeback_detail": {
    "chargeback_status": "RECEIVED",
    "chargeback_reason": "FRAUD",
    "chargeback_amount": {
      "value": 100.0,
      "currency_code": "USD"
    },
    "bank_reason_code": "BANK_REASON_CODE",
    "chargeback_reported_date_time": "2023-06-04T22:53:10.757885"
  }
}

SDK example

chargeback_feedback = ChargebackFeedback(
    type="CHARGEBACK_FEEDBACK",
    risk_id="RISK_ID",
    chargeback_detail=ChargebackDetail(
        chargeback_reason=ChargebackReason.FRAUD,
        chargeback_amount=Amount(value=100, currency_code='USD'),
        bank_reason_code='BANK_REASON_CODE',
        chargeback_reported_date_time=datetime.now(),
        chargeback_status=ChargebackStatus.RECEIVED
    )
)

fraud_prevention_client.update(body=chargeback_feedback)

OrderPurchaseUpdate: Insult Feedback

Request object

{
  "type": "INSULT_FEEDBACK",
  "risk_id": "7b8cf809b18d4089bc924c9c808e2705",
  "insult_detail": {
    "insult_reported_date_time": "2023-06-04T22:50:39.108124"
  }
}

SDK example

insult_feedback = InsultFeedback(
    risk_id="RISK_ID",
    type="INSULT_FEEDBACK",
    insult_detail=InsultDetail(
        insult_reported_date_time=datetime.now()
    )
)

fraud_prevention_client.update(body=insult_feedback)

OrderPurchaseUpdate: Issued Refund Update

Request object

{
  "type": "REFUND_UPDATE",
  "risk_id": "RISK_ID",
  "refund_status": "ISSUED",
  "refund_details": {
    "refund_issued_date_time": "2022-07-24T01:01:01.111000+00:00",
    "refund_issued_amount": {
      "value": 123.32,
      "currency_code": "USD"
    }
  }
}

SDK example

issued_refund_update = IssuedRefundUpdate(
    type="REFUND_UPDATE",
    risk_id="7b8cf809b18d4089bc924c9c808e2705",
    refund_status="ISSUED",
    refund_details=IssuedRefundUpdateDetails(
        refund_issued_date_time=dateutil.parser.isoparse("2022-07-24T01:01:01.111000+00:00"),
        refund_issued_amount=Amount(
            value=123.32,
            currency_code="USD"
        )
    )
)

fraud_prevention_client.update(body=issued_refund_update)

OrderPurchaseUpdate: Settled Refund Update

Request object

{
  "type": "REFUND_UPDATE",
  "risk_id": "RISK_ID",
  "refund_status": "SETTLED",
  "refund_details": {
    "refund_settlement_date_time": "2022-07-24T01:01:01.111000+00:00",
    "refund_deposit_date_time": "2022-07-24T01:01:01.111000+00:00",
    "acquirer_reference_number": "12345",
    "settlement_id": "12345",
    "refund_settled_amount": {
      "value": 123.32,
      "currency_code": "USD"
    }
  }
}

SDK example

settled_refund_update = SettledRefundUpdate(
    type="REFUND_UPDATE",
    risk_id="RISK_ID",
    refund_status="SETTLED",
    refund_details=SettledRefundUpdateDetails(
        refund_settlement_date_time=dateutil.parser.isoparse("2022-07-24T01:01:01.111000+00:00"),
        refund_deposit_date_time=dateutil.parser.isoparse("2022-07-24T01:01:01.111000+00:00"),
        acquirer_reference_number="12345",
        settlement_id="12345",
        refund_settled_amount=Amount(
            value=123.32,
            currency_code="USD"
        )
    )
)

fraud_prevention_client.update(body=settled_refund_update)

OrderPurchaseUpdate: Payment Update

Request object

{
  "type": "PAYMENT_UPDATE",
  "risk_id": "RISK_ID",
  "merchant_order_code": "MERCHANT_ORDER_CODE"
}

SDK example

payment_update = PaymentUpdate(
    risk_id="RISK_ID",
    type="PAYMENT_UPDATE",
    merchant_order_code='MERCHANT_ORDER_CODE'
)

fraud_prevention_client.update(body=payment_update)

AccountTakeoverScreen

Request object

{
  "transaction": {
    "site_info": {
      "locale": "en-US",
      "name": "expedia.com",
      "brand_name": "BRAND_NAME",
      "placement_name": "LOGIN"
    },
    "device_details": {
      "source": "SOURCE",
      "device_box": "DEVICE_BOX",
      "ip_address": "127.0.0.1",
      "user_agent": "USER_AGENT",
      "type": "WEBSITE"
    },
    "customer_account": {
      "user_id": "USER_ID",
      "account_type": "INDIVIDUAL",
      "account_role": "USER",
      "name": {
        "last_name": "LAST_NAME",
        "first_name": "FIRST_NAME",
        "middle_name": "MIDDLE_NAME",
        "title": "TITLE",
        "suffix": "SUFFIX"
      },
      "username": "USERNAME",
      "email_address": "user@example.com",
      "telephones": [
        {
          "type": "HOME",
          "platform_type": "MOBILE",
          "country_access_code": "1",
          "area_code": "123",
          "phone_number": "123456",
          "extension_number": "123",
          "preference_rank": 0,
          "last_verified_date_time": "1970-01-01T00:00:00+00:00",
          "verified_flag": false
        }
      ],
      "address": {
        "address_type": "HOME",
        "address_line1": "ADDRESS_LINE1",
        "address_line2": "ADDRESS_LINE2",
        "city": "CITY",
        "state": "AB",
        "zip_code": "ZIP_CODE",
        "country_code": "ABC"
      },
      "registered_time": "1970-01-01T00:00:00+00:00",
      "active_flag": false,
      "loyalty_member_id": "LOYALTY_MEMBER_ID"
    },
    "transaction_details": {
      "type": "LOGIN",
      "transaction_date_time": "1970-01-01T00:00:00+00:00",
      "transaction_id": "TRANSACTION_ID",
      "current_user_session": {
        "session_id": "SESSION_ID",
        "start_date_time": "1970-01-01T00:00:00+00:00",
        "challenge_detail": {
          "displayed_flag": false,
          "type": "CAPTCHA",
          "status": "SUCCESS"
        }
      },
      "authentication_type": "CREDENTIALS",
      "authentication_sub_type": "EMAIL",
      "successful_login_flag": false,
      "failed_login_reason": "INVALID_CREDENTIALS"
    }
  }
}

SDK example

site_info = AccountTakeoverSiteInfo(
    locale="en-US",
    name="expedia.com",
    brand_name="BRAND_NAME",
    placement_name="LOGIN"
) 

device_details = AccountTakeoverDeviceDetails(
    source="SOURCE",
    device_box="DEVICE_BOX",
    ip_address="127.0.0.1",
    user_agent="USER_AGENT",
    type=Type2.WEBSITE
)

name = AccountTakeoverName(
    first_name="FIRST_NAME",
    middle_name="MIDDLE_NAME",
    last_name="LAST_NAME",
    suffix="SUFFIX",
    title="TITLE"
)

telephone = Telephone(
    type=TelephoneType.HOME,
    platform_type=TelephonePlatformType.MOBILE,
    country_access_code="1",
    area_code="123",
    phone_number="123456",
    extension_number="123",
    preference_rank=0,
    last_verified_date_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z"),
    verified_flag=False
)

address = Address(
    address_type=AddressType.HOME,
    address_line1="ADDRESS_LINE1",
    address_line2="ADDRESS_LINE2",
    city="CITY",
    state="AB",
    zip_code="ZIP_CODE",
    country_code="ABC"
)

customer_account = AccountTakeoverCustomerAccount(
    user_id="USER_ID",
    account_type=AccountType1.INDIVIDUAL,
    account_role=AccountRole.USER,
    name=name,
    username="USERNAME",
    email_address="user@example.com",
    telephones=[telephone],
    address=address,
    registered_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z"),
    active_flag=False,
    loyalty_member_id="LOYALTY_MEMBER_ID"
)

challenge_detail = ChallengeDetail(
    displayed_flag=False,
    type=Type4.CAPTCHA,
    status=Status3.SUCCESS
)

current_user_session=CurrentUserSession(
    session_id="SESSION_ID",
    start_date_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z"),
    challenge_detail=challenge_detail
)

transaction_details = LoginTransactionDetails(
    transaction_date_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z"),
    transaction_id="TRANSACTION_ID",
    current_user_session=current_user_session,
    authentication_type=AuthenticationType.CREDENTIALS,
    authentication_sub_type=AuthenticationSubType.EMAIL,
    successful_login_flag=False,
    failed_login_reason=FailedLoginReason.INVALID_CREDENTIALS
)

transaction=AccountTransaction(
    site_info=site_info,
    device_details=device_details,
    customer_account=customer_account,
    transaction_details=transaction_details
)

account_screen_request = AccountScreenRequest(transaction=transaction)

fraud_prevention_client.account_screen(body=account_screen_request)

AccountTakeoverUpdate: Multifactor Authentication Update

Request

{
  "type": "MULTI_FACTOR_AUTHENTICATION_UPDATE",
  "risk_id": "RISK_ID",
  "multi_factor_authentication_attempts": [
    {
      "delivery_method": "SMS",
      "status": "SUCCESS",
      "reference_id": "REF_ID",
      "provider_name": "PROVIDER_NAME",
      "attempt_count": 1,
      "update_start_date_time": "1970-01-01T00:00:00+00:00",
      "update_end_date_time": "1970-01-01T00:00:00+00:00",
      "telephone": {
        "country_access_code": "1",
        "area_code": "123",
        "phone_number": "123456"
      }
    }
  ]
}

SDK Example

telephone=Telephone(
    country_access_code="1",
    area_code="123",
    phone_number="123456"
)

multifactor_auth_attempt = MultiFactorAuthenticationAttempt(
    delivery_method=DeliveryMethod.SMS,
    status=Status1.SUCCESS,
    reference_id="REF_ID",
    provider_name="PROVIDER_NAME",
    attempt_count=1,
    update_start_date_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z"),
    update_end_date_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z"),
    telephone=telephone
)

multifactor_auth_update = MultiFactorAuthenticationUpdate(
    risk_id="RISK_ID",
    multi_factor_authentication_attempts=[multifactor_auth_attempt]
)

fraud_prevention_client.account_update(body=multifactor_auth_update)

AccountTakeoverUpdate: Remediation Update

Request

{
  "type": "REMEDIATION_UPDATE",
  "risk_id": "RISK_ID",
  "remediation_update_actions": [
    {
      "action_name": "PASSWORD_RESET",
      "status": "SUCCESS",
      "update_end_date_time": "1970-01-01T00:00:00+00:00"
    }
  ]
}

SDK Example

remediation_update_action = RemediationUpdateAction(
    action_name=ActionName.PASSWORD_RESET,
    status=Status2.SUCCESS,
    update_end_date_time=dateutil.parser.isoparse("1970-01-01T00:00:00.000Z")
)

remediation_update = RemediationUpdate(
    type="REMEDIATION_UPDATE",
    risk_id="RISK_ID",
    remediation_update_actions=[remediation_update_action]
)

response = fraud_prevention_client.account_update(body=remediation_update)
Did you find this page helpful?
How can we improve this content?
Thank you for helping us improve Developer Hub!