Bindings for Sift's APIs -- including the [Events](https://developers.sift.com/docs/python/events-api/, Labels, and Score APIs.
# install from PyPi
pip install SiftPlease see here for the most up-to-date documentation.
Please see the CHANGELOG for a history of all changes.
Here's an example:
importsiftclient=sift.Client(api_key='<your API key here>', account_id='<your account ID here>')
# User ID's may only contain a-z, A-Z, 0-9, =, ., -, _, +, @, :, &, ^, %, !, $user_id="23056"# Track a transaction event -- note this is a blocking callproperties= {
"$user_id": user_id,
"$user_email": "buyer@gmail.com",
"$seller_user_id": "2371",
"seller_user_email": "seller@gmail.com",
"$transaction_id": "573050",
"$payment_method": {
"$payment_type": "$credit_card",
"$payment_gateway": "$braintree",
"$card_bin": "542486",
"$card_last4": "4444"
},
"$currency_code": "USD",
"$amount": 15230000,
}
try:
response=client.track(
"$transaction",
properties,
)
exceptsift.client.ApiException:
# request failedpasselse:
ifresponse.is_ok():
print("Successfully tracked event")
# Track a transaсtion event and receive a score with percentiles in response (sync flow).# Note: `return_score` or `return_workflow_status` must be set `True`.properties= {
"$user_id": user_id,
"$user_email": "buyer@gmail.com",
"$seller_user_id": "2371",
"seller_user_email": "seller@gmail.com",
"$transaction_id": "573050",
"$payment_method": {
"$payment_type": "$credit_card",
"$payment_gateway": "$braintree",
"$card_bin": "542486",
"$card_last4": "4444"
},
"$currency_code": "USD",
"$amount": 15230000,
}
try:
response=client.track(
"$transaction",
properties,
return_score=True,
include_score_percentiles=True,
abuse_types=("promotion_abuse", "content_abuse", "payment_abuse"),
)
exceptsift.client.ApiException:
# request failedpasselse:
ifresponse.is_ok():
score_response=response.body["score_response"]
print(score_response)
# In order to include `warnings` field to Events API response via calling# `track()` method, set it by the `include_warnings` param:try:
response=client.track("$transaction", properties, include_warnings=True)
# ...exceptsift.client.ApiException:
# request failedpass# Request a score for the user with user_id 23056try:
response=client.score(user_id)
exceptsift.client.ApiException:
# request failedpasselse:
print(response.body)
try:
# Label the user with user_id 23056 as Bad with all optional fieldsresponse=client.label(user_id, {
"$is_bad": True,
"$abuse_type": "payment_abuse",
"$description": "Chargeback issued",
"$source": "Manual Review",
"$analyst": "analyst.name@your_domain.com"
})
exceptsift.client.ApiException:
# request failedpass# Remove a label from a user with user_id 23056try:
response=client.unlabel(user_id, abuse_type='content_abuse')
exceptsift.client.ApiException:
# request failedpass# Get the status of a workflow runtry:
response=client.get_workflow_status('my_run_id')
exceptsift.client.ApiException:
# request failedpass# Get the latest decisions for a usertry:
response=client.get_user_decisions('example_user')
exceptsift.client.ApiException:
# request failedpass# Get the latest decisions for an ordertry:
response=client.get_order_decisions('example_order')
exceptsift.client.ApiException:
# request failedpass# Get the latest decisions for a sessiontry:
response=client.get_session_decisions('example_user', 'example_session')
exceptsift.client.ApiException:
# request failedpass# Get the latest decisions for a piece of contenttry:
response=client.get_content_decisions('example_user', 'example_content')
exceptsift.client.ApiException:
# request failedpass# The send call triggers the generation of a OTP code that is stored by Sift and email/sms the code to the user.send_properties= {
"$user_id": "billy_jones_301",
"$send_to": "billy_jones_301@gmail.com",
"$verification_type": "$email",
"$brand_name": "MyTopBrand",
"$language": "en",
"$site_country": "IN",
"$event": {
"$session_id": "SOME_SESSION_ID",
"$verified_event": "$login",
"$verified_entity_id": "SOME_SESSION_ID",
"$reason": "$automated_rule",
"$ip": "192.168.1.1",
"$browser": {
"$user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36"
}
}
}
try:
response=client.verification_send(send_properties)
exceptsift.client.ApiException:
# request failedpass# The resend call generates a new OTP and sends it to the original recipient with the same settings.resend_properties= {
"$user_id": "billy_jones_301",
"$verified_event": "$login",
"$verified_entity_id": "SOME_SESSION_ID"
}
try:
response=client.verification_resend(resend_properties)
exceptsift.client.ApiException:
# request failedpass# The check call is used for verifying the OTP provided by the end user to Sift.check_properties= {
"$user_id": "billy_jones_301",
"$code": 123456,
"$verified_event": "$login",
"$verified_entity_id": "SOME_SESSION_ID"
}
try:
response=client.verification_check(check_properties)
exceptsift.client.ApiException:
# request failedpass