Rewards
All rewards endpoints have path prefix /rewards-service.
Module
Activate Rewards Module
Activate rewards module for the participant. Takes JSON object containing module name rewards. Responds with list of participant's enabled modules. Current participant must be either System (can activate rewards for Partner, Manufacturer, Product 360, Expert or Retailer participants) or Partner with active rewards module (can active rewards for child Manufacturer, Product 360, Expert or Retailer participants).
POST /rewards-service/participants/:id/modules
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Participant identifier |
module | string | e.g. "rewards" |
Example Response
[
"rewards",
"other_module",
"yet_another_module"
]
Deactivate Rewards Module
Deactivate rewards module for the participant. Required current participant permissions are the same as for activate module endpoint.
DELETE /rewards-service/participants/:id/modules/:module
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Participant identifier |
module | string | e.g. "rewards" |
Reminders
Reminder is a special campaign which using for sending push notifications for users. This types of campaigns available only for system participant.
Create Reminder Campaign
POST /rewards-service/reminder_campaigns
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
name | body | Required: Reminder name |
run_options | body | Required: Reminder options |
messages | body | Required: List of reminder messages |
audience | body | Audience filter |
status | body | Required: Reminder status (active/inactive) |
run_options object
Name | Description |
---|---|
start_date | Required: Start date |
start_time | Required: Start time |
frequency | One of values (once is default): |
"once", | |
"daily", | |
"weekly", | |
"monthly", | |
"yearly", | |
"working_days", | |
"weekends" | |
custom_days | List of custom days (from 1 to 7) |
Example Request
{
"name": "Sample Reminder",
"run_options": {
"start_date": "2018-12-16",
"start_time": "13:29:12",
"frequency": "daily",
"custom_days": [
1,
2,
3
]
},
"audience": {
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"gold"
]
},
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"status": "inactive",
"messages": [
{
"text": "Some push text en",
"language": "en"
},
{
"text": "Some push text ru",
"language": "ru"
}
]
}
Example Response
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold"
]
},
"id": "urn:authenticateit:reminder:263082888221005",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"distance": 1000,
"geodata": [
{
"distance": 0,
"latitude": -70.0,
"longitude": 43.0
}
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"states": [
"VIC"
]
}
],
"messages": [
{
"language": "en",
"text": "Some push text en"
},
{
"language": "ru",
"text": "Some push text ru"
}
],
"name": "Sample Reminder",
"owner": "urn:authenticateit:participant:1",
"run_options": {
"custom_days": [
1,
2,
3
],
"frequency": "daily",
"start_date": "2018-12-16",
"start_time": "13:29:12"
},
"status": "inactive"
}
Update Reminder Campaign
PUT /rewards-service/reminder_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Reminder campaign identifier |
Example Request
{
"name": "Sample Reminder",
"run_options": {
"start_date": "2018-12-16",
"start_time": "13:29:12",
"frequency": "daily",
"custom_days": [
1,
2,
3
]
},
"audience": {
"countries": [
"036"
],
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"basic"
]
},
"status": "inactive",
"messages": [
{
"text": "Some push text en",
"language": "en"
},
{
"text": "Some push text ru",
"language": "ru"
}
]
}
Example Response
{
"audience": {
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"id": "urn:authenticateit:reminder:300261839642784",
"messages": [
{
"language": "en",
"text": "Some push text en"
},
{
"language": "ru",
"text": "Some push text ru"
}
],
"name": "Sample Reminder",
"owner": "urn:authenticateit:participant:1",
"run_options": {
"custom_days": [
1,
2,
3
],
"frequency": "daily",
"start_date": "2018-12-16",
"start_time": "13:29:12"
},
"status": "inactive"
}
Delete Reminder Campaign
DELETE /rewards-service/reminder_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Reminder campaign identifier |
Get Reminder Campaign
GET /rewards-service/reminder_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Reminder campaign identifier |
Example Response
{
"audience": {
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"id": "urn:authenticateit:reminder:300261839642784",
"messages": [
{
"language": "en",
"text": "Some push text en"
},
{
"language": "ru",
"text": "Some push text ru"
}
],
"name": "Sample Reminder",
"owner": "urn:authenticateit:participant:1",
"run_options": {
"custom_days": [
1,
2,
3
],
"frequency": "daily",
"start_date": "2018-12-16",
"start_time": "13:29:12"
},
"status": "inactive"
}
List Of Reminder Campaigns
List participant's own reminder campaigns. Responds with a list of reminder campaigns representations. The resulting list may be filtered by sending parameters in the request JSON body. All parameters are optional.
Campaigns can be filtered by audience (audience
parameter (empty filter by default), see example request below), number of campaigns can be skipped from output (offset
parameter (0 if unspecified)), and resulting list length can be limited (limit
parameter (100 if unspecified)).
Campaigns can be filtered by status.
POST /rewards-service/reminder_campaigns/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"audience": {
"min_age": 18,
"max_age": 60,
"user_level": "basic",
"country": "036",
"gender": "other",
"language": "en"
},
"status":"active",
"offset": 0,
"limit": 3
}
Example Response
[
{
"audience": {
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"id": "urn:authenticateit:reminder:912959360711414",
"messages": [
{
"language": "en",
"text": "Some push text en 1"
},
{
"language": "ru",
"text": "Some push text ru 1"
}
],
"name": "Sample Reminder 1",
"owner": "urn:authenticateit:participant:1",
"run_options": {
"custom_days": [
1,
2,
3
],
"frequency": "daily",
"start_date": "2018-12-16",
"start_time": "13:29:12"
},
"status": "active"
}
]
Level Boosts
Boost is a special campaign which activates a level for the user who has scanned attached gtin code. This types of campaigns available only for system participant.
Also, boosts are available for special buddy_invite
events (buddy_invite
option is included). Only one active boost can contain key buddy_invite
.
Create Boost Campaign
POST /rewards-service/boost_campaigns
end_date
must be more than start_date
and also
stop_date
must be more than start_date
and also
stop_date
must be more than current timestamp (UTC+0).
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
name | body | Required: Boost name |
start_date | body | Required: Start datetime |
end_date | body | Required: End datetime |
stop_date | body | Stop boost datetime |
limit | body | Limit of number of users |
level | body | Required for scans: Granted level |
audience | body | Audience filter |
locations | body | Locations filter |
first_scan | body | First scan condition (true or false) |
status | body | Required: Boost status (active or inactive) |
period_min | body | Required for scans: Period for new level (in minutes) |
products | body | List of gtins. May be skipped (all gtins option) |
buddy_invite | body | Buddy invite options |
buddy_invite object. All fields are required
Name | Description |
---|---|
first | Values: none or inc_level or level (bronze or silver etc.) |
first_period | Values: none or next_day_end |
if_max_level | Values: none or next_day_end |
max_repeat | Integer, from 1 to 100 |
repeat | Values: inc_level or next_day_end or none |
repeat_period | Values: last_date or next_day_end or none |
Example 1. buddy_invite boost settings
It means that:
1) When user first-time caught boost - his level will be upgraded (first
:inc_level
option) to the end of next day (first_period
: next_day_end
)
2) When user caught boost when the previous buddy boost is active - his level will be upgraded without changing date (repeat
: inc_level
and repeat_period
: last_date
)
3) When user catch max level (ambassador
) - the end of boost will be increased to end of the next day (if_max_level
: next_day_end
)
4) Maximal of applying (max_repeat
) the boost per user - 30
{
"audience": {
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"basic"
]
},
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"buddy_invite": {
"first": "inc_level",
"first_period": "next_day_end",
"if_max_level": "next_day_end",
"max_repeat": 30,
"repeat": "inc_level",
"repeat_period": "last_date"
},
"end_date": "2019-05-16T19:59:59Z",
"name": "Buddies invite boost 1",
"start_date": "2019-03-02T16:00:00Z",
"status": "inactive",
"type": "boost"
}
Example Request
{
"audience": {
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"basic"
]
},
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"buddy_invite": {
"first": "inc_level",
"first_period": "next_day_end",
"if_max_level": "next_day_end",
"max_repeat": 30,
"repeat": "inc_level",
"repeat_period": "last_date"
},
"end_date": "2019-05-16T19:59:59Z",
"name": "Buddies invite boost 1",
"start_date": "2019-03-02T16:00:00Z",
"status": "inactive",
"type": "boost"
}
Example Response
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"buddy_invite": {
"first": "inc_level",
"first_period": "next_day_end",
"if_max_level": "next_day_end",
"max_repeat": 30,
"repeat": "inc_level",
"repeat_period": "last_date"
},
"end_date": "2019-05-16T19:59:59Z",
"id": "urn:authenticateit:boost:369069035755767",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"distance": 1000,
"geodata": [
{
"distance": 0,
"latitude": -70.0,
"longitude": 43.0
}
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"states": [
"VIC"
]
}
],
"name": "Buddies invite boost 1",
"owner": "urn:authenticateit:participant:1",
"start_date": "2019-03-02T16:00:00Z",
"status": "inactive"
}
Example Request
{
"name": "Sample Boost All Products And Stop Date",
"start_date": "2018-10-09T00:00:01Z",
"end_date": "2019-12-12T00:00:01Z",
"level": "gold",
"audience": {},
"stop_date": "2018-12-14T12:00:00Z",
"first_scan": true,
"status": "active",
"period_min": 100
}
Example Response
{
"audience": {},
"end_date": "2019-12-12T00:00:01Z",
"id": "urn:authenticateit:boost:045346796826981",
"level": "gold",
"name": "Sample Boost All Products And Stop Date",
"owner": "urn:authenticateit:participant:1",
"period_min": 100,
"start_date": "2018-10-09T00:00:01Z",
"first_scan": true,
"status": "active",
"stop_date": "2018-12-14T12:00:00Z"
}
Update Boost Campaign
PUT /rewards-service/boost_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Boost campaign identifier |
Example Request
{
"name": "Sample Boost Renamed",
"start_date": "2018-10-09T00:00:01Z",
"end_date": "2019-12-12T00:00:01Z",
"limit": 2,
"level": "silver",
"first_scan": false,
"products": [
"02987376234230"
],
"audience": {
"countries": [
"036"
],
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"basic"
]
},
"status": "inactive",
"period_min": 1000
}
Example Response
{
"audience": {
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"end_date": "2019-12-12T00:00:01Z",
"id": "urn:authenticateit:boost:555542010537598",
"level": "silver",
"limit": 2,
"first_scan": false,
"name": "Sample Boost Renamed",
"owner": "urn:authenticateit:participant:1",
"period_min": 1000,
"products": [
"02987376234230"
],
"start_date": "2018-10-09T00:00:01Z",
"status": "inactive"
}
Delete Boost Campaign
DELETE /rewards-service/boost_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Boost campaign identifier |
Get Boost Campaign
GET /rewards-service/boost_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Boost campaign identifier |
Example Response
{
"audience": {
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"end_date": "2019-12-12T00:00:01Z",
"id": "urn:authenticateit:boost:569210120439034",
"level": "silver",
"limit": 2,
"name": "Sample Boost",
"owner": "urn:authenticateit:participant:1",
"period_min": 1000,
"products": [
"02987376234230"
],
"start_date": "2018-10-09T00:00:01Z",
"status": "active"
}
List Boost Campaigns
List participant's own boost campaigns. Responds with a list of boost campaign representations. The resulting list may be filtered by sending parameters in the request JSON body. All parameters are optional.
Campaigns can be filtered by audience (audience
parameter (empty filter by default), see example request below), number of campaigns can be skipped from output (offset
parameter (0 if unspecified)), and resulting list length can be limited (limit
parameter (100 if unspecified)).
Campaigns can be filtered by start and end dates range (start_date
and end_date
fields).
POST /rewards-service/boost_campaigns/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"audience": {
"min_age": 18,
"max_age": 60,
"user_level": "basic",
"country": "036",
"gender": "other",
"language": "en"
},
"start_date": "2018-05-08T00:00:01Z",
"end_date": "2019-12-30T00:00:01Z",
"status":"active",
"offset": 0,
"limit": 1
}
Example Response
[
{
"audience": {
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"end_date": "2019-12-12T00:00:01Z",
"id": "urn:authenticateit:boost:569210120439034",
"level": "silver",
"limit": 2,
"name": "Sample Boost",
"owner": "urn:authenticateit:participant:1",
"period_min": 1000,
"products": [
"02987376234230"
],
"start_date": "2018-10-09T00:00:01Z",
"status": "active"
}
]
Campaigns
Example responce
{
"_id": "urn:authenticateit:campaign:1",
"events": [
{
"scan": {
"coins": 5000000
}
}
],
"name": "System campaign",
"owner": "urn:authenticateit:participant:1",
"type": "rewards_campaign"
}
Adjustment of budgets and event
The sample of calculating adjustments of campaigns. For precalculating values before creating the campaign. The currency may be specified by the user. In the other case, the value will be extracted from country field of the participant. The participant determines the budget in conventional units, then the server sets the required currency and recalculates the budget values and events. adjustment
.overall
field is required.
POST /rewards-service/adjustment/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
adjustment | body | Required: Adjustment object |
Example Request
{
"adjustment":
{
"event":0.01,
"coins_step" : "10000000000000000000"
}
}
Example Response
{
"coins_step": "10000000000000000000",
"currency": "usd",
"event": "30000000000000000000"
}
Example Request
{
"adjustment":
{
"day": 0.5,
"week": 0.7,
"month": 1,
"overall": 3,
"event":0.01,
"country":"036",
"coins_step" : "10000000000000000000"
}
}
Example Response
{
"coins_step": "10000000000000000000",
"currency": "aud",
"day": "770000000000000000000",
"event": "10000000000000000000",
"month": "1540000000000000000000",
"overall": "4620000000000000000000",
"week": "1080000000000000000000"
}
Example Request
{
"adjustment":
{
"day": 0.5,
"week": 0.7,
"month": 1,
"overall": 3,
"event":0.01,
"currency":"aud",
"coins_step" : "10000000000000000000"
}
}
Example Response
{
"coins_step": "10000000000000000000",
"currency": "aud",
"day": "770000000000000000000",
"event": "10000000000000000000",
"month": "1540000000000000000000",
"overall": "4620000000000000000000",
"week": "1080000000000000000000"
}
Create Rewards Campaign
Create rewards campaign. Takes JSON object containing campaign name, start date, end date (optional, campaign is continuous if there is no end date), campaign budget, products filter (all participant products are eligible for campaign, if the filter is missing), audience filter and list of user action events. Responds with created rewards campaign representation.
Campaign must have overall budget (field budget.overall
is required).
Currenct participant must be Product 360, Manufacturer, Retailer, Expert, System or Partner and must have rewards module activated.
all_products
- the option which means that the campaign will be connected to all products. If all_products
:true then products
parameter must be empty.partner_brand
- the option which means that the campaign will be connected to partner brand's products.
events.<event>.condition
- optional parameter. Possible values: once
, daily
, weekly
, monthly
, global_once
events.<event>.count
- optional parameter. The number of rewards for the period specified in the condition
field
Supported events: view_popup
, view_text
, view_image
, visit_link
, watch_video
, view_status
, view_nutrition_info
, view_certificates
, follow_fb
, scan
, visit_social_networks_link
, send_review
, upload_receipt
, social_networks_confirmed_follow_fb
upload_receipt
event is available only for system.upload_receipt
event has additional campaign restrictions (all_receipts
or recognized_receipts
) and has additional receipts_rewards_options
field.all_receipts
- reward all receiptsrecognized_receipts
- reward only recognized receiptsreceipts_rewards_options
should contains options for partner_brand_product
, non_partner_brand_product
and product_mapping
receipt_budget_restrictions
option restrict budget of receipt campaign per user. This option should contains budget_per_user_per_day
Example of upload_receipt
campaign:
{
"id": "urn:authenticateit:campaign:063071786528766",
"audience": {
},
"budget": {
"day": "1000000000000000000000000000"
},
"events": [
{
"upload_receipt": {
"coins": "11000000000000000000",
"condition": "daily"
}
}
],
"receipts_rewards_options": [
{
"id": "partner_brand_product",
"adjustment": {
"coins_step": "10000000000000000",
"event": 0.01
}
},
{
"id": "non_partner_brand_product",
"adjustment": {
"coins_step": "10000000000000000",
"event": 0.0001
}
},
{
"id": "product_mapping",
"adjustment": {
"coins_step": "1000000000000000",
"event": 0.05
}
}
],
"receipt_budget_restrictions": [
{
"id": "budget_per_user_per_day",
"coins": "100000000000000000000",
"adjustment": {
"coins_step": "10000000000000000",
"value": 5
}
}
],
"name": "System Receipt",
"owner": "urn:authenticateit:participant:1",
"receipts_restrictions": {
"all_receipts": true
},
"start_date": "2019-10-01T20:00:00Z",
"status": "active",
"type": "rewards_campaign"
}
POST /rewards-service/rewards_campaigns
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"adjustment":
{
"event":0.01,
"coins_step" : "10000000000000000000"
},
"name": "Some Campaign",
"start_date": "2016-12-15T00:00:00Z",
"end_date": "2016-12-24T00:00:00Z",
"budget": {
"day": "20000000000000000000",
"week": "40000000000000000000",
"month": "60000000000000000000"
},
"products": [],
"all_products":false,
"audience": {
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"gold"
]
},
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"status": "inactive",
"partner_brand":true,
"events": [
{
"view_text": {
"coins": "10000000000000000000",
"condition": "monthly",
"count": 1
}
}
]
}
Example Response
{
"adjustment": {
"coins_step": "10000000000000000000",
"currency": "aud",
"event": 0.01
},
"all_products": false,
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold"
]
},
"budget": {
"day": "20000000000000000000",
"month": "60000000000000000000",
"week": "40000000000000000000"
},
"end_date": "2016-12-24T00:00:00Z",
"events": [
{
"view_text": {
"coins": "30000000000000000000",
"condition": "monthly",
"count": 1
}
}
],
"id": "urn:authenticateit:campaign:300272904407763",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"distance": 1000,
"geodata": [
{
"distance": 0,
"latitude": -70.0,
"longitude": 43.0
}
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"states": [
"VIC"
]
}
],
"name": "Some Campaign",
"owner": "urn:authenticateit:participant:1",
"partner_brand": true,
"products": [],
"start_date": "2016-12-15T00:00:00Z",
"status": "inactive"
}
Example Request. Reviews campaign may contain coins for sharing link by social networks. Example with adjustment
{
"name": "Test",
"status": "active",
"events": [
{
"send_review": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"social_networks_share": [
{
"id": "fb",
"adjustment": {
"coins_step": "10000000000000000",
"event": 0.03
}
}
],
"start_date": "2021-01-19T20:00:00Z",
"products": [],
"all_products": true,
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
}
}
Example Response
{
"all_products": true,
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
},
"events": [
{
"send_review": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"id": "urn:authenticateit:campaign:061908684754917",
"name": "Test",
"owner": "urn:authenticateit:participant:735879621218609",
"products": [],
"social_networks_share": [
{
"adjustment": {
"coins_step": "10000000000000000",
"currency": "aud",
"event": 0.03
},
"coins": "853100000000000000000",
"id": "fb"
}
],
"start_date": "2021-01-19T20:00:00Z",
"status": "active"
}
Example Request. Reviews campaign may contain coins for sharing link by social networks. Example without adjustment
{
"name": "Test",
"status": "active",
"events": [
{
"send_review": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"social_networks_share": [
{
"id": "fb",
"coins": "1832000000000000000000"
}
],
"start_date": "2021-01-19T20:00:00Z",
"products": [],
"all_products": true,
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
}
}
Example Response
{
"all_products": true,
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
},
"events": [
{
"send_review": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"id": "urn:authenticateit:campaign:061908684754917",
"name": "Test",
"owner": "urn:authenticateit:participant:735879621218609",
"products": [],
"social_networks_share": [
{
"coins": "1832000000000000000000",
"id": "fb"
}
],
"start_date": "2021-01-19T20:00:00Z",
"status": "active"
}
Example Request. Upload receipt campaign may contain options for rewards per recognized products. Example with adjustment
{
"name": "Test",
"status": "active",
"receipts_restrictions": {
"recognized_receipts": true
},
"events": [
{
"upload_receipt": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"receipts_rewards_options": [
{
"id": "partner_brand_product",
"adjustment": {
"coins_step": "10000000000000000",
"event": 0.01
}
},
{
"id": "non_partner_brand_product",
"adjustment": {
"coins_step": "10000000000000000",
"event": 0.001
}
}
],
"start_date": "2021-01-19T20:00:00Z",
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
}
}
Example Response
{
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
},
"events": [
{
"upload_receipt": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"id": "urn:authenticateit:campaign:259137172292695",
"name": "Test",
"owner": "urn:authenticateit:participant:1",
"receipts_restrictions": {
"recognized_receipts": true
},
"receipts_rewards_options": [
{
"adjustment": {
"coins_step": "10000000000000000",
"currency": "aud",
"event": 0.01
},
"coins": "91880000000000000000",
"id": "partner_brand_product"
},
{
"adjustment": {
"coins_step": "10000000000000000",
"currency": "aud",
"event": 0.001
},
"coins": "9180000000000000000",
"id": "non_partner_brand_product"
}
],
"start_date": "2021-01-19T20:00:00Z",
"status": "active"
}
Example Request. Upload receipt campaign may contain options for rewards per recognized products. Example without adjustment
{
"name": "Test",
"status": "active",
"receipts_restrictions": {
"recognized_receipts": true
},
"events": [
{
"upload_receipt": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"receipts_rewards_options": [
{
"id": "partner_brand_product",
"coins": "1832000000000000000000"
},
{
"id": "non_partner_brand_product",
"coins": "1832000000000000000000"
}
],
"start_date": "2021-01-19T20:00:00Z",
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
}
}
Example Response
{
"audience": {},
"budget": {
"day": "1000000000000000000000000000"
},
"events": [
{
"upload_receipt": {
"coins": "22000000000000000000",
"condition": "once"
}
}
],
"id": "urn:authenticateit:campaign:971508184725437",
"name": "Test",
"owner": "urn:authenticateit:participant:1",
"receipts_restrictions": {
"recognized_receipts": true
},
"receipts_rewards_options": [
{
"coins": "1832000000000000000000",
"id": "partner_brand_product"
},
{
"coins": "1832000000000000000000",
"id": "non_partner_brand_product"
}
],
"start_date": "2021-01-19T20:00:00Z",
"status": "active"
}
Update Rewards Campaign
Endpoint for owner participant to update it's rewards campaign. Takes JSON object containing rewards campaign (see endpoint for rewards campaign creation). Responds with updated rewards campaign representation.
Currenct participant must have rewards module activated and must be campaign owner.
PUT /rewards-service/rewards_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Rewards campaign identifier |
Example Request
{
"name": "Renamed Campaign",
"end_date": "2016-12-31T00:00:00Z",
"budget": {
"overall": 350000
},
"status": "inactive"
}
Example Response
{
"id": "urn:authenticateit:campaign:12345678901245",
"owner": "urn:epc:sgln:0614141.12345.1",
"name": "Renamed Campaign",
"start_date": "2016-12-15T00:00:00Z",
"end_date": "2016-12-31T00:00:00Z",
"budget": {
"overall": 350000
},
"products": [
"09780996791304"
],
"audience": {
"countries": [
"036"
],
"min_age": 20,
"max_age": 35,
"gender": "female",
"languages": [
"en"
]
},
"status": "inactive",
"events": [
{
"view_text": {
"coins": 1500000,
"condition": "monthly"
}
},
{
"follow_fb": {
"coins": 3500000,
"condition": "once"
}
}
]
}
Delete Rewards campaign
Endpoint for participant to delete it's rewards campaign. Participant must have rewards module activated and must be campaign. owner.
DELETE /rewards-service/rewards_campaigns/{id}
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Rewards campaign identifier |
Change status of campaign
Endpoint for participant to change campaign status to pending
.
PUT /rewards_campaigns/status/{id}
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Required: Rewards campaign identifier |
status | string | "active" or "inactive" |
List Reward Campaigns
List participant's own reward campaigns. Responds with a list of reward campaign representations. The resulting list may be filtered by sending parameters in the request JSON body. All parameters are optional.
Campaigns can be filtered by audience (audience
parameter (empty filter by default), see example request below), number of campaigns can be skipped from output (offset
parameter (0 if unspecified)), and resulting list length can be limited (limit
parameter (100 if unspecified)).
Campaigns can be filtered by events (events
parameter (empty filter by default), see example request below), by start and end dates range (start_date
and end_date
fields).
Campaigns can be filtered by partner_brand
option.
POST /rewards-service/rewards_campaigns/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"audience": {
"min_age": 21,
"max_age": 25,
"city": "Nagpur",
"country": "356",
"gender": "male",
"language": "en",
"state": "Maharashtra",
"user_level": "bronze"
},
"events": {
"type": "view_popup",
"condition": "daily"
},
"start_date": "2016-05-05",
"end_date": "2017-12-31",
"offset": 5,
"limit": 1
}
Example Response
[
{
"audience": {
"countries": [
"643", "356"
],
"city": "Nagpur",
"state": "Maharashtra",
"gender": "male",
"languages": [
"ru",
"en"
],
"max_age": 24,
"min_age": 22,
"user_levels": [
"platinum",
"bronze"
]
},
"budget": {},
"events": [
{
"view_popup": {
"coins": 100000000,
"condition": "daily",
"unique_location": false
}
}
],
"id": "urn:authenticateit:campaign:795220009246909",
"name": "Test conditions campaign",
"owner": "urn:authenticateit:participant:841535075581481",
"products": [
"00000026037431"
],
"start_date": "2017-08-20",
"status": "active"
}
]
Example Request
{
"partner_brand": true,
"offset": 5,
"limit": 1
}
Example Response
[
{
"all_products": false,
"audience": {
"user_levels": [
"basic"
]
},
"budget": {
"day": "1000000000000000000000000000"
},
"events": [
{
"scan": {
"coins": "12000000000000000000",
"condition": "once"
}
}
],
"id": "urn:authenticateit:campaign:125266956013592",
"name": "Test postcode",
"owner": "urn:authenticateit:participant:1",
"partner_brand": true,
"start_date": "2021-01-27T20:00:00Z",
"status": "inactive"
}
]
Claim Reward Campaign Coins
API endpoint for user to claim reward campaign coins. Takes JSON object containing identifier of the corresponding scan and list of user action events. Responds with the number of pending coins. Created claim will be processed by the system in due time and either approved (user will be notified and pending coins will be transferred to the user account) or rejected.
POST /rewards-service/rewards_campaigns/:id/coin_claims
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Rewards campaign identifier |
Example Request
{
"events": ["view_text", "follow_fb"],
"scan_id": "763c0cf3-9949-4c2d-a0c8-700159f68b09"
}
Example Response
{
"pending_coins": 50
}
Rewards Budget
Set Participant Budget
Endpoint for participant to set own rewards campaigns budget. Takes JSON object containing budget. Participant must have active rewards module.
PUT /rewards-service/rewards_campaigns/budget
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"budget": {
"day": 10,
"week": 70,
"month": 300
}
}
Set Participant Budget Limit
Endpoint for System or Partner to limit participant's rewards campaigns budget. Takes JSON object containing budget. Participant must have active rewards module. If current participant is Partner, it also must have active rewards module, participant must be child of Partner.
PUT /rewards-service/participants/:id/rewards_campaigns/budget_limit
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"budget": {
"day": 20,
"week": 140,
"month": 600
}
}
Rewards points
The system logged all income from the accrual points call internal methods
Set Participant points packet
POST /rewards-service/billing/packet
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
points | number | Points |
Get available points
GET /rewards-service/billing/points
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Shoutouts
Create shoutout
POST /rewards-service/shoutouts_campaigns
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
name | string | Required: Shoutout name |
copy | string | Required: Push message |
products | list | Required: List of products |
start_date | string | Start datetime |
end_date | string | End datetime |
delay | integer | Delay in minutes when message will be send |
count | integer | Coun of mathing the campaign when message wil be send |
audience | object | Audience object |
locations | list | Rewards locations |
status | string | "active" (default) or "inactive" |
Audience object
Name | Type | Description |
---|---|---|
countries | list | List of countries |
languages | list | List of languages |
min_age | integer | Min user age |
max_age | integer | Max user age |
gender | string | User's gender |
locations | list | List of locations |
user_levels | list | User's levels list |
advanced | object | Advanced object |
Advanced object
May contain inverse flag - "inverse": true or false
Example Request
{
"name": "Test 1",
"start_date": "2016-12-15T00:00:00Z",
"end_date": "2017-12-24T00:00:00Z",
"products": [
"00000026033419"
],
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"audience": {
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"gold",
"bronze",
"basic"
],
"advanced": {
"brand_scans": {
"scans_from": 1,
"scans_to": 3,
"date_from": "2016-12-15T00:00:00Z",
"date_to": "2017-12-15T00:00:00Z"
},
"weekly_scans": {
"from": 1,
"to": 3
},
"last_scan_date": {
"date": "2017-12-15T00:00:00Z"
},
"countries": {
"list": [
"036",
"643"
],
"inverse": true
}
}
},
"copy": "Some push message",
"delay": 4,
"status": "active",
"count": 1
}
Example Response
{
"audience": {
"advanced": {
"brand_scans": {
"date_from": "2016-12-15T00:00:00Z",
"date_to": "2017-12-15T00:00:00Z",
"scans_from": 1,
"scans_to": 3
},
"countries": {
"inverse": true,
"list": [
"036",
"643"
]
},
"last_scan_date": {
"date": "2017-12-15T00:00:00Z"
},
"weekly_scans": {
"from": 1,
"to": 3
}
},
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"bronze",
"basic"
]
},
"copy": "Some push message",
"count": 1,
"delay": 4,
"end_date": "2017-12-24T00:00:00Z",
"id": "urn:authenticateit:shoutout:130970949432104",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"distance": 1000,
"geodata": [
{
"distance": 0,
"latitude": -70.0,
"longitude": 43.0
}
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"states": [
"VIC"
]
}
],
"name": "Test 1",
"owner": "urn:authenticateit:participant:1",
"products": [
"00000026033419"
],
"start_date": "2016-12-15T00:00:00Z",
"status": "active"
}
Read shoutout
GET /rewards-service/shoutouts_campaigns/{id}/
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Rewards campaign identifier |
Example Response
{
"audience": {
"advanced": {
"brand_scans": {
"date_from": "2016-12-15T00:00:00Z",
"date_to": "2017-12-15T00:00:00Z",
"scans_from": 1,
"scans_to": 3
},
"countries": {
"inverse": true,
"list": [
"036",
"643"
],
},
"last_scan_date": {
"date": "2017-12-15T00:00:00Z"
},
"weekly_scans": {
"from": 1,
"to": 3
}
},
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"locations": [
"urn:authenticateit:location:1487249964787"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"bronze",
"basic"
],
},
"copy": "Some push message",
"count": 1,
"delay": 4,
"end_date": "2017-12-24T00:00:00Z",
"id": "urn:authenticateit:shoutout:013506706920330",
"name": "Test 1",
"owner": "urn:authenticateit:participant:841535075581481",
"products": [
"00000026033419"
],
"start_date": "2016-12-15T00:00:00Z",
"status": "active"
}
Update shoutout
PUT /rewards-service/shoutouts_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Rewards campaign identifier |
Example Request
{
"name": "Test 1",
"start_date": "2016-12-15T00:00:00Z",
"end_date": "2017-12-24T00:00:00Z",
"products": [
"00000026033419"
],
"audience": {
"countries": [
"036"
],
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"locations": [
"urn:authenticateit:location:1487249964787"
],
"user_levels": [
"gold",
"bronze",
"basic"
],
"advanced": {
"brand_scans": {
"scans_from": 1,
"scans_to": 3,
"date_from": "2016-12-15T00:00:00Z",
"date_to": "2017-12-15T00:00:00Z"
},
"weekly_scans": {
"from": 1,
"to": 3
},
"last_scan_date": {
"date": "2017-12-15T00:00:00Z"
},
"countries": {
"list": [
"036",
"643"
],
"inverse": true
}
}
},
"copy": "Some push message",
"delay": 4,
"status": "inactive",
"count": 1
}
Example Response
{
"audience": {
"advanced": {
"brand_scans": {
"date_from": "2016-12-15T00:00:00Z",
"date_to": "2017-12-15T00:00:00Z",
"scans_from": 1,
"scans_to": 3
},
"countries": {
"inverse": true,
"list": [
"036",
"643"
],
},
"last_scan_date": {
"date": "2017-12-15T00:00:00Z"
},
"weekly_scans": {
"from": 1,
"to": 3
}
},
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"locations": [
"urn:authenticateit:location:1487249964787"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"bronze",
"basic"
],
},
"copy": "Some push message",
"count": 1,
"delay": 4,
"end_date": "2017-12-24T00:00:00Z",
"id": "urn:authenticateit:shoutout:013506706920330",
"name": "Test 1",
"owner": "urn:authenticateit:participant:841535075581481",
"products": [
"00000026033419"
],
"start_date": "2016-12-15T00:00:00Z",
"status": "inactive"
}
Delete shoutout
DELETE /rewards-service/shoutouts_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Rewards campaign identifier |
Read shoutouts
GET /rewards-service/shoutouts_campaigns
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
offset | number | Skip specified number of campaigns. |
limit | number | Limit the number of returned campaigns. |
Read and filter shoutouts
All parameters are optional.
POST /rewards-service/shoutouts_campaigns/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
start_date | string | Datetime "0000-01-01T00:00:00Z" |
end_date | string | Datetime "9999-12-31T00:00:00Z" |
status | string | Shoutout status "active" or "inactive" |
offset | number | Skip specified number of campaigns. |
limit | number | Limit the number of returned campaigns. |
audience | object | Audience filter |
Audience filter
Name | Type | Description |
---|---|---|
country | string or list | "036" or ["036"], ["036", "643"] |
language | string or list | "en" or ["en"], ["en", "ru"] |
status | string | Shoutout status "active" or "inactive" |
min_age | integer | Min age filter |
max_age | integer | Max age filter |
gender | string | "male" or "feamale" or "other" |
user_level | string or list | "gold" or ["gold"], ["basic", "gold"] |
locations | string or list | one or more location's id |
Example Request
{
"end_date": "9999-12-31T00:00:00Z",
"start_date": "0000-01-01T00:00:00Z",
"limit": 10,
"ofset": 0,
"audience": {
"country": [
"036"
],
"user_level": [
"basic"
],
"language": [
"en"
],
"gender":"other"
}
}
Example Response
[
{
"audience": {
"advanced": {
"brand_scans": {
"date_from": "2016-12-15T00:00:00Z",
"date_to": "2017-12-15T00:00:00Z",
"scans_from": 1,
"scans_to": 3
},
"countries": {
"inverse": true,
"list": [
"036",
"643"
]
},
"last_scan_date": {
"date": "2017-12-15T00:00:00Z"
},
"weekly_scans": {
"from": 1,
"to": 3
}
},
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"locations": [
"urn:authenticateit:location:1487249964787"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"bronze",
"basic"
]
},
"copy": "Some push message",
"count": 1,
"delay": 4,
"end_date": "2017-12-24T00:00:00Z",
"id": "urn:authenticateit:shoutout:013506706920330",
"name": "Test 1",
"owner": "urn:authenticateit:participant:841535075581481",
"products": [
"00000026033419"
],
"start_date": "2016-12-15T00:00:00Z",
"status": "inactive"
}
]
Redemptions
List Available Rewards
List groups of rewards available for redemption. Query string parameter device_type (should be either android or ios) is used to filter out inappropriate (according to mobile device vendor) rewards. E.g., it may be used to filter out Google Play gift cards from the output on iOS devices. Response will contain a list of rewards. Each list item is either a product reward or a gift card reward.
GET /rewards-service/redemptions/rewards
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
device_type | string | Device type e.g. android |
Example Response
[
{
"brand": "Sorny",
"gtin": "11111111111113",
"name": "Super Xyzzy 5000",
"points_price": 800,
"price": 400,
"currency": "USD",
"type": "product_reward"
},
{
"brand": "Cyclon",
"gtin": "33333333333339",
"name": "Coupon 300F",
"points_price": 200,
"price": 150,
"currency": "USD",
"type": "product_reward"
},
{
"card_type": "google",
"not_device_types": [
"ios"
],
"points_price": 220,
"price": 200,
"currency": "USD",
"type": "gift_card_reward"
}
]
Redeem Reward
API to request reward redemption.
Either a product reward (parameters gtin and points must be provided in the request body) or a gift card reward (parameters card_type, price, currency and points must be provided) could be requested.
When a product reward is requested, user may pay less points than the points price of the reward. Brand related to the product will be notified about the request, and should contact the user directly to provide further instructions on how to pay the remaining amount (if less points were initially paid) and how to receive the reward. Created product redemption will be recorded in user's redemption history.
When a gift card reward is requested, provided points value must be exactly the points price of the gift card. User must have verified phone number in his account. Gift card number will be sent in a SMS message to phone number from user account. Created gift card redemption will be recorded in user's redemption history.
POST /rewards-service/redemptions
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"gtin": "11111111111113",
"points": 200
}
or
{
"card_type": "google",
"price": 200,
"currency": "USD",
"points": 220
}
Example Response
{
"gtin": "11111111111113",
"points": 200
}
Read Redemption History
Read user's history of reward redemptions. Response will contain the list of history entries. Each entry contains redemption timestamp, redeemed reward type and number of spent points.
GET /rewards-service/redemptions/history
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Response
[
{
"points": 220,
"reward": {
"card_type": "google",
"not_device_types": [
"ios"
],
"points_price": 220,
"price": 200,
"currency": "USD",
"type": "gift_card_reward"
},
"ts": "2017-03-30T19:49:24Z"
},
{
"points": 200,
"reward": {
"brand": "Sorny",
"gtin": "11111111111113",
"name": "Super Xyzzy 5000",
"points_price": 800,
"price": 400,
"currency": "USD",
"type": "product_reward"
},
"ts": "2017-03-30T19:26:01Z"
}
]
Bots
Create Bot
Create rewards bot. Takes JSON object containing bot name, start time (optional), end time (optional, bot is always active if there is no end date), list of GTINs (bot will be activated for these products), audience filter and list of text and media (image or video) widgets. Responds with created bot representation.
Bot audience is a JSON object with fields countries
, min_age
, max_age
, gender
, languages
, last_scan_date
(users with the last scan activity earlier than the specified date), weekly_scans
(a JSON object with optional fields from
and to
, having integer values, the minimum and maximum number of scans during the last seven days), scan_countries
(list of countries where a product was scanned), registration_methods
(list of allowed registration methods, where method is either facebook
or email
), rewards_restrictions
(restriction for coins per_product_and_widget
or per_widget
). All fields are optional.
Currenct participant must have rewards module activated.
POST /rewards-service/bots
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
Example Request
{
"name": "Sample Bot",
"rewards_restrictions": "per_product_and_widget",
"status": "active",
"start_time": "2022-01-01T13:00:00Z",
"end_time": "2023-03-05T18:30:00Z",
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"audience": {
"languages": [
"en",
"ru"
],
"min_age": 25,
"max_age": 30,
"gender": "male",
"registration_methods": [
"email",
"facebook"
],
"last_scan_date": "2017-06-06",
"weekly_scans": {
"from": 15,
"to": 30
},
"scan_countries": [
"036",
"643"
]
},
"products": [
"00000000000000"
],
"text_widgets": [
{
"text": {
"title": "Nice Title!",
"text": "The text includes some `markdown`.",
"markdown": true
}
}
],
"media_widgets": [
{
"image": [
{
"url": "http://example.org/img1.png"
},
{
"url": "http://example.org/x.jpg"
}
]
},
{
"video": {
"title": "Our Product",
"url": "http://example.org/vid.mp4",
"preview": "http://example.org/vid-small.jpg"
}
}
]
}
Example Response
{
"audience": {
"gender": "male",
"languages": [
"en",
"ru"
],
"last_scan_date": "2017-06-06",
"max_age": 30,
"min_age": 25,
"registration_methods": [
"email",
"facebook"
],
"scan_countries": [
"036",
"643"
],
"weekly_scans": {
"from": 15,
"to": 30
}
},
"end_time": "2023-03-05T18:30:00Z",
"id": "urn:authenticateit:bot:142890657153028",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"distance": 1000,
"geodata": [
{
"distance": 0,
"latitude": -70.0,
"longitude": 43.0
}
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"states": [
"VIC"
]
}
],
"media_widgets": [
{
"image": [
{
"url": "http://example.org/img1.png"
},
{
"url": "http://example.org/x.jpg"
}
]
},
{
"video": {
"preview": "http://example.org/vid-small.jpg",
"title": "Our Product",
"url": "http://example.org/vid.mp4"
}
}
],
"name": "Sample Bot",
"owner": "urn:authenticateit:participant:613276503943013",
"products": [
"00000000000000"
],
"rewards_restrictions": "per_product_and_widget",
"start_time": "2022-01-01T13:00:00Z",
"status": "active",
"text_widgets": [
{
"text": {
"markdown": true,
"text": "The text includes some `markdown`.",
"title": "Nice Title!"
}
}
]
}
Update Bot
Endpoint for owner participant to update it's rewards bot. Takes JSON object containing bot (see endpoint for bot creation). Responds with updated bot representation.
Currenct participant must have rewards module activated and must be bot owner.
PUT /rewards-service/bots/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Bot id |
status | string | Bot status e.g. "inactive" |
Example Response
{
"audience": {
"countries": [
"036",
"643"
],
"gender": "male",
"languages": [
"en",
"ru"
],
"max_age": 30,
"min_age": 25,
"registration_methods": [
"email",
"facebook"
]
},
"rewards_restrictions": "per_widget",
"end_time": "2017-03-05T18:30:00Z",
"id": "urn:authenticateit:bot:808678240218235",
"name": "Sample Bot",
"owner": "urn:authenticateit:participant:1491563346054",
"products": [],
"start_time": "2017-01-01T13:00:00Z",
"status": "inactive",
"text_widgets": [
{
"text": {
"markdown": true,
"text": "The text includes some `markdown`.",
"title": "Nice Title!"
}
}
],
"media_widgets": [
{
"image": [
{
"url": "http://example.org/img1.png"
},
{
"url": "http://example.org/x.jpg"
}
]
},
{
"video": {
"preview": "http://example.org/vid-small.jpg",
"title": "Our Product",
"url": "http://example.org/vid.mp4"
}
}
]
}
Delete Bot
DELETE /rewards-service/bots/{id}
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Bot id |
List Bots
List participant's own reward bots. Accepts offset (skip specified number of bots; 0 by default) and limit (limit the number of returned bots; 100 by default) query parameters. Responds with a list of bot representations.
GET /rewards-service/bots
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
offset | number | skip specified number of bots |
limit | number | Limit the number of returned bots |
Example Response
[
{
"id": "urn:authenticateit:bot:427622626238419",
"name": "Sample Bot 2",
"owner": "urn:authenticateit:participant:1491563346054",
"text_widgets": [
{
"text": {
"text": "B"
}
}
]
},
{
"id": "urn:authenticateit:bot:749469863100815",
"name": "Sample Bot 1",
"owner": "urn:authenticateit:participant:1491563346054",
"text_widgets": [
{
"text": {
"text": "A"
}
}
]
}
]
Report Bot Widgets as Viewed
API for user to explicitly report bot video widgets as viewed. Widgets
from bots received on a product scan will include bot_id
field. If
client receives a video widget with bot_id
, it should report widget
view with this API. Bot wouldn't suggest the next video from it's list
until previous one is viewed.
Request must include media_widgets
array of video widgets,
which were viewed by the user. Each widget must have url
and that
URL must match URL in one of the bot's widgets. Response will be
empty.
POST /rewards-service/bots/{id}/widgets/viewed
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Bot id |
Example Request
{
"media_widgets": [
{
"video": {
"url": "http://example.org/vid.mp4"
}
}
]
}
Featured Products Campaigns
Create Featured Products Campaign
Campaign has options
object with two boolean parameters: options
.single_blast
and options
.even_distribution
.
Only one option should be switched in true
.single_blast
means that campaign will send product (products) to all matched users once. It is the default option.even_distribution
means that campaign will send product (products) to parts of users by each day between start_date
and end_date
.
Campaign has optional parameter hero_image_url
. The value should be a link or null
.
POST /rewards-service/featured_products_campaigns
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
name | body | Required: Campaign name |
status | body | Required: Campaign status (active or inactive ) |
run_time | body | Required: Time when the campaign will be run |
start_date | body | Required: Start datetime |
end_date | body | Required: End datetime |
products | body | Required: List of gtins |
audience | body | Rewards audience |
locations | body | Rewards locations |
options | body | Featured Products Campaign options |
hero_image_url | body | Hero image for Featured Product. |
Example Request
{
"name": "Test Featured Products Campaign",
"products": [
"00000000000369"
],
"options": {
"even_distribution": true
},
"start_date": "2019-08-01T01:01:01Z",
"end_date": "2019-09-01T01:01:01Z",
"run_time": "01:01:01",
"status": "inactive",
"hero_image_url": "https://dev-cdn.shping.com/2021/5/20/90218531-e697-4aac-a4ce-f1edfbbaaafc.jpeg",
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"distance": 1000,
"geodata": [
{
"latitude": -70.0000,
"longitude": 43.000,
"distance": 0
}
]
}
],
"audience": {
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"gold"
]
}
}
Example Response
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold"
]
},
"end_date": "2019-09-01T01:01:01Z",
"hero_image_url": "https://dev-cdn.shping.com/2021/5/20/90218531-e697-4aac-a4ce-f1edfbbaaafc.jpeg",
"id": "urn:authenticateit:featured_products_campaigns:013625830806932",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"distance": 1000,
"geodata": [
{
"distance": 0,
"latitude": -70.0,
"longitude": 43.0
}
],
"postcodes": [
"3030",
"3011"
],
"retailers": [
"coles"
],
"states": [
"VIC"
]
}
],
"name": "Test Featured Products Campaign",
"options": {
"even_distribution": true
},
"owner": "urn:authenticateit:participant:1",
"products": [
"00000000000369"
],
"run_time": "01:01:01",
"start_date": "2019-08-01T01:01:01Z",
"status": "inactive"
}
Update Featured Products Campaign
PUT /rewards-service/featured_products_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Required: Campaign identifier |
name | body | Required: Campaign name |
status | body | Required: Campaign status (active or inactive ) |
run_time | body | Required: Time when the campaign will be run |
start_date | body | Required: Start datetime |
end_date | body | Required: End datetime |
products | body | Required: List of gtins |
audience | body | Rewards audience |
locations | body | Rewards locations |
options | body | Featured Products Campaign options |
hero_image_url | body | Hero image for Featured Product. |
Example Request
{
"name": "New Test Featured Products Campaign",
"products": [
"00000000000086"
],
"start_date": "2019-08-01T01:01:01Z",
"end_date": "2019-09-01T01:01:01Z",
"run_time": "01:01:01",
"status": "active",
"hero_image_url": null,
"audience": {
"countries": [
"036",
"643"
],
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"gold",
"basic"
]
}
}
Example Response
{
"audience": {
"countries": [
"036",
"643"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"basic"
]
},
"id": "urn:authenticateit:featured_products_campaigns:057191917446840",
"name": "New Test Featured Products Campaign",
"owner": "urn:authenticateit:participant:735879621218609",
"hero_image_url": null,
"products": [
"00000000000086"
],
"options": {
"single_blast": true
},
"start_date": "2019-08-01T01:01:01Z",
"end_date": "2019-09-01T01:01:01Z",
"run_time": "01:01:01",
"status": "active"
}
Delete Featured Products Campaign
DELETE /rewards-service/featured_products_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Campaign identifier |
Change status of Featured Products Campaign
PUT /rewards-service/featured_products_campaigns/status/:id/:status
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Required: Campaign identifier |
status | string | active or inactive |
Example Response
{
"audience": {
"countries": [
"036",
"643"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"basic"
]
},
"options": {
"single_blast": true
},
"id": "urn:authenticateit:featured_products_campaigns:057191917446840",
"name": "New Test Featured Products Campaign",
"hero_image_url": null,
"owner": "urn:authenticateit:participant:735879621218609",
"products": [
"00000000000086"
],
"start_date": "2019-08-01T01:01:01Z",
"end_date": "2019-09-01T01:01:01Z",
"run_time": "01:01:01",
"status": "inactive"
}
List Featured Products Campaigns
POST /rewards-service/featured_products_campaigns/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
audience | string | Audience filter |
products | list | Products filter |
offset | non_neg_integer | Offset |
limit | pos_integer | Limit |
Example Request
{
"products": [
"86"
]
}
Example Response
[
{
"audience": {
"countries": [
"036",
"643"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"basic"
]
},
"id": "urn:authenticateit:featured_products_campaigns:057191917446840",
"name": "New Test Featured Products Campaign",
"hero_image_url": null,
"owner": "urn:authenticateit:participant:735879621218609",
"products": [
"00000000000086"
],
"start_date": "2019-08-01T01:01:01Z",
"end_date": "2019-09-01T01:01:01Z",
"run_time": "01:01:01",
"status": "active"
}
]
Read Featured Products Campaign
GET /rewards-service/featured_products_campaigns/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
id | string | Required: Campaign identifier |
Example Response
{
"audience": {
"countries": [
"036",
"643"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"gold",
"basic"
]
},
"id": "urn:authenticateit:featured_products_campaigns:057191917446840",
"name": "New Test Featured Products Campaign",
"hero_image_url": null,
"owner": "urn:authenticateit:participant:735879621218609",
"products": [
"00000000000086"
],
"start_date": "2019-08-01T01:01:01Z",
"end_date": "2019-09-01T01:01:01Z",
"run_time": "01:01:01",
"status": "active"
}
Competitions
Competition's coins adjustment
POST /rewards-service/competitions/adjustment/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
adjustment | body | Required: Adjustment object |
Example Request
{
"adjustment":
{
"result": 0.5,
"coins_step" : "10000000000000000000"
}
}
Example Response
{
"coins_step": "10000000000000000000",
"currency": "usd",
"result": "1700000000000000000000"
}
Example Request
{
"adjustment":
{
"result": 0.5,
"country":"036",
"coins_step" : "10000000000000000000"
}
}
Example Response
{
"coins_step": "10000000000000000000",
"currency": "aud",
"result": "770000000000000000000"
}
Example Request
{
"adjustment":
{
"result": 0.5,
"currency":"aud",
"coins_step" : "10000000000000000000"
}
}
Example Response
{
"coins_step": "10000000000000000000",
"currency": "aud",
"result": "770000000000000000000"
}
Create Competition
POST /rewards-service/competitions
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
start_date |
string | Required: Start datetime |
end_date |
string | Required: End datetime |
name |
string | Required: Competition name |
description |
string | Required: Competition description |
status |
string | Required: active or inactive |
card |
object | Required: ToDo card object |
t&c_link |
string | Valid link to T&C of competition |
all_products |
boolean | All products options |
purchased_products |
list | Purchased products. List of gtins |
products |
list | List of selected products |
coins |
string | Reward for Competition card completion |
audience |
object | Audience filter |
adjustment |
object | Adjustment settings |
Competition may contain coins
field (reward in Shping Coins
for the user for card completion).
card
field takes JSON object containing card name
, icon
(predefined icon identifier or URL), description
, non-empty
list of steps
.
Predefined icon identifiers are action
, brand
, contact
, fb
,
support
, verify
and warning
.
Each step is a JSON object containing step type
, title
(optional
step title) and bunch of other fields depending on the type
.
Step type
may be text
. In that case step must also include text
field (textual description of the step).
Step type
may be textbox
. No other fields are defined for such
step. User will be asked to provide some text to complete the step.
Step type
may be rating
. No other fields are defined for such
step. User will be asked to provide a rating (integer number from 1 to
5) to complete the step.
Step type
may be question
. Fields question
(question textual
description) and answers
(non-empty list of possible answers) must
be present for such step. Each answer is a JSON object with fields
answer
(answer textual description) and optional correct
(true
if the answer must be accepted as correct).
Step type
may be image
. No other fields are defined for such
step. User will be asked to upload an image to complete the step.
Example Request
{
"start_date": "2019-08-20T22:42:25Z",
"end_date": "2019-09-20T22:42:25Z",
"name": "Competition example",
"description": "Simple Competition",
"status": "active",
"all_products": true,
"t&c_link" : "https://www.shping.com",
"purchased_products": [
"00000000000000"
],
"coins": "1000000000000000000",
"audience": {
"countries": [
"036"
],
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"basic"
]
},
"card": {
"name": "Sample Competition Card",
"icon": "warning",
"description": "Complete this survey to earn some coins.",
"steps": [
{
"type": "text",
"title": "Step 1 title",
"text": "Review our Product"
},
{
"type": "rating",
"title": "Please rate this"
},
{
"type": "question",
"question": "A or B?",
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
]
},
{
"type": "image",
"title": "Upload a photo, please"
},
{
"type": "textbox",
"title": "What's on your mind?"
}
]
}
}
Example Response
{
"start_date": "2019-08-20T22:42:25Z",
"end_date": "2019-09-20T22:42:25Z",
"name": "Competition example",
"description": "Simple Competition",
"status": "active",
"all_products": true,
"purchased_products": [
"00000000000000"
],
"t&c_link" : "https://www.shping.com",
"coins": "1000000000000000000",
"audience": {
"countries": [
"036"
],
"min_age": 20,
"max_age": 35,
"gender": "other",
"languages": [
"en"
],
"user_levels": [
"basic"
]
},
"card": {
"name": "Sample Competition Card",
"icon": "warning",
"description": "Complete this survey to earn some coins.",
"steps": [
{
"type": "text",
"title": "Step 1 title",
"text": "Review our Product"
},
{
"type": "rating",
"title": "Please rate this"
},
{
"type": "question",
"question": "A or B?",
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
]
},
{
"type": "image",
"title": "Upload a photo, please"
},
{
"type": "textbox",
"title": "What's on your mind?"
}
]
},
"id": "urn:authenticateit:competition:192822414174123",
"owner": "urn:authenticateit:participant:1"
}
Example Request (adjustment
)
{
"start_date": "2019-08-20T22:42:25Z",
"end_date": "2019-09-20T22:42:25Z",
"name": "Competition example renamed",
"description": "Simple Competition",
"card": {
"name": "Sample Competition Card",
"icon": "warning",
"description": "Complete this survey to earn some coins.",
"steps": [
{
"type": "text",
"title": "Step 1 title",
"text": "Review our Product"
}
]
},
"all_products": true,
"status": "active",
"adjustment": {
"result": 0.1,
"coins_step": "10000000000000000000"
}
}
Example Response (adjustment
)
{
"adjustment": {
"coins_step": "10000000000000000000",
"currency": "aud",
"result": 0.1
},
"all_products": true,
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"name": "Sample Competition Card",
"steps": [
{
"text": "Review our Product",
"title": "Step 1 title",
"type": "text"
}
]
},
"coins": "480000000000000000000",
"description": "Simple Competition",
"end_date": "2019-09-20T22:42:25Z",
"id": "urn:authenticateit:competition:396083627591984",
"name": "Competition example renamed",
"owner": "urn:authenticateit:participant:735879621218609",
"start_date": "2019-08-20T22:42:25Z",
"status": "active"
}
Update Competition
Endpoint for owner participant to update a Competition.
Current participant must be Competition's owner.
PUT /rewards-service/competitions/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Competition id |
Example Request
{
"start_date": "2019-08-20T22:42:25Z",
"end_date": "2019-09-20T22:42:25Z",
"name": "Competition example renamed",
"description": "Simple Competition",
"status": "active",
"all_products": true,
"coins": "1000000000000000000",
"card": {
"name": "Sample Competition Card",
"icon": "warning",
"description": "Complete this survey to earn some coins.",
"steps": [
{
"type": "text",
"title": "Step 1 title",
"text": "Review our Product"
},
{
"type": "rating",
"title": "Please rate this"
},
{
"type": "question",
"question": "A or B?",
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
]
},
{
"type": "image",
"title": "Upload a photo, please"
},
{
"type": "textbox",
"title": "What's on your mind?"
}
]
}
}
Example Response
{
"start_date": "2019-08-20T22:42:25Z",
"end_date": "2019-09-20T22:42:25Z",
"name": "Competition example renamed",
"description": "Simple Competition",
"status": "active",
"all_products": true,
"coins": "1000000000000000000",
"card": {
"name": "Sample Competition Card",
"icon": "warning",
"description": "Complete this survey to earn some coins.",
"steps": [
{
"type": "text",
"title": "Step 1 title",
"text": "Review our Product"
},
{
"type": "rating",
"title": "Please rate this"
},
{
"type": "question",
"question": "A or B?",
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
]
},
{
"type": "image",
"title": "Upload a photo, please"
},
{
"type": "textbox",
"title": "What's on your mind?"
}
]
},
"id": "urn:authenticateit:competition:192822414174123",
"owner": "urn:authenticateit:participant:1"
}
Delete Competition
Endpoint to delete existing Competition by id. Current participant must be Competition's owner.
DELETE /rewards-service/competitions/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Competition id |
List Competitions
List participant's Competitions. Accepts offset
(skip specified number
of Competitions; 0 by default) and limit
(limit the number of returned
Competitions; 100 by default) query parameters. Responds with a list of Competition
representations.
GET /rewards-service/competitions/
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
type |
string | Required: data or names |
offset |
number | Skip specified number of Competitions |
limit |
number | Limit the number of returned Competitions |
Example Response with data
type request
[
{
"all_products": true,
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"name": "Sample Competition Card",
"steps": [
{
"title": "What's on your mind?",
"type": "textbox"
}
]
},
"coins": "1000000000000000000",
"description": "Simple Competition",
"end_date": "2019-09-20T22:42:25Z",
"id": "urn:authenticateit:competition:888582780739927",
"name": "Competition example",
"owner": "urn:authenticateit:participant:1",
"start_date": "2019-08-20T22:42:25Z",
"status": "active"
}
]
Example Response with names
type request
[
{
"id": "urn:authenticateit:competition:167656099616488",
"name": "Competition example name 1"
},
{
"id": "urn:authenticateit:competition:394608992051372",
"name": "Competition example name 2"
}
]
List of filled Competitions cards
GET /rewards-service/competitions/considered/:status_filter
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
status_filter |
string | Required: rejected or completed |
competition_id |
string | Filter by competition ID |
offset |
number | Skip specified number of Cards |
limit |
number | Limit the number of returned Cards |
Example Response
{
"count": 1,
"documents": [
{
"campaign_type": "competition",
"created": "2019-09-02T11:38:00Z",
"delivery_id": "urn:authenticateit:competition:062633987276228",
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"id": "51a70232c1d535988527b1bcadf3a893ea8797943ff2b913b5a836397a6b27e531eaa66e11bd8802b712cb07a78d02a5",
"name": "Sample Competition Cardv25",
"owner": "urn:authenticateit:participant:735879621218609",
"reason": "some_reason",
"result": {
"coins": "1000000000000000000"
},
"scan_id": "3d9bee37-e95e-43d6-b4a7-c3068a36c466",
"status": "rejected",
"steps": [
{
"text": "Review our Product",
"title": "Step 1 title",
"type": "text"
},
{
"rating": 3,
"title": "Please rate this",
"type": "rating"
},
{
"answer_index": 0,
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Upload a photo, please",
"type": "image",
"url": "https://dev-cdn.shping.com/2019/9/2/58fce775-dcec-4b58-9224-ae6e13f987be"
},
{
"text": "5555",
"title": "What's on your mind?",
"type": "textbox"
}
],
"user": {
"first_name": "user1",
"last_name": "pwd1",
"level": "basic",
"photo": "https://dev-cdn.shping.com/2019/3/6/c5809b6f-3b0d-4d7c-8b43-14ff20edbffa",
"reviews_karma": 1
},
"user_id": "urn:authenticateit:user:email:email@gmail.com"
}
]
}
Ban user/ Mark Competition card as rejected
PUT /rewards-service/competitions/considered/:id/:status
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Competition card Id |
status |
string | Required: rejected or ban |
reason |
string | Required: Reason of the reject (length > 4) |
Example Request
{
"reason": "Some text reason"
}
Create export task by competition id
POST /rewards-service/competitions/export
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Competition Id |
Example Request
{
"id" :"urn:authenticateit:competition:749078307488258"
}
Example Response
{
"competition_id": "urn:authenticateit:competition:749078307488258",
"competition_name": "Competition example",
"id": "urn:authenticateit:competition:749078307488258@competition_export@b12661fd-806c-43f4-8d05-46d2293a9563",
"started": "2019-09-03T18:13:14Z",
"status": "in_progress"
}
Delete export task by id
DELETE /rewards-service/competitions/export/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Export task id |
Get tasks
GET /rewards-service/competitions/export
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
Example Response
[
{
"competition_id": "urn:authenticateit:competition:749078307488258",
"competition_name": "Competition example",
"id": "urn:authenticateit:competition:749078307488258@competition_export@b12661fd-806c-43f4-8d05-46d2293a9563",
"started": "2019-09-03T18:13:14Z",
"status": "in_progress"
},
{
"competition_id": "urn:authenticateit:competition:749078307488258",
"competition_name": "Competition example",
"finished": "2019-09-03T17:38:01Z",
"id": "urn:authenticateit:competition:749078307488258@competition_export@5a990276-0cf0-45de-87d2-2ee426bb84e2",
"started": "2019-09-03T17:37:03Z",
"status": "success",
"link": "https://dev-cdn.shping.com/2019/9/2/csv_file.csv"
}
{
"competition_id": "urn:authenticateit:competition:749078307488258",
"competition_name": "Competition example",
"finished": "2019-09-03T17:38:01Z",
"id": "urn:authenticateit:competition:749078307488258@competition_export@5a990276-0cf0-45de-87d2-2ee426bb84e2",
"started": "2019-09-03T17:37:03Z",
"status": "failure"
}
]
WebSocket endpoint
WebSocket endpoint for real time collecting scans and rewards coins.
WebSocket endpoint also supports JSON messages for getting total scans count and approved reviews count.
- WebSocket endpoint supports only
wss
schemawss://
. - WebSocket endpoint also works as echo. If you will send some data, if connection is established, you will receive back all data. Except predefined JSON messages.
- Default timeout for connection without activity is 10 min. After that connection will be closed
coins
parameter always in coins format (string or integer)26000000000000000000
= 26 COINS,"26100000000000000000"
= 26.1 COINSlatitude
andlongitude
parameters is always in string integer format. For converting to correct values you need to divide value on1000000
.56852863 / 1000000 = 56.852863
GET /rewards-service/websocket
Get total_scans
count
Example Request
{
"action": "total_scans"
}
Example Response
{
"action": "total_scans",
"count": 20016
}
Get total_reviews
count
Example Request
{
"action": "total_reviews"
}
Example Response
{
"action": "total_reviews",
"count": 531
}
Example message with type scan
{
"accuracy": "50,3030014038086",
"code": "00498765432233",
"country": "643",
"language": "ru",
"latitude": "56853796",
"longitude": "53298341",
"product_image": "https://dev-cdn.shping.com/2018/12/12/13142d6f-20e8-491c-84d1-36f224fa5596.jpg",
"product_name": "Test",
"product_reviews_rate": 3.375,
"ts": "2019-10-22T07:34:39Z",
"type": "scan",
"user": {
"level": "platinum",
"reviews_karma": 2
}
}
Example message with type scan
{
"accuracy": "57,6180000305176",
"code": "09312828059513",
"country": "643",
"language": "ru",
"latitude": "56853688",
"longitude": "53298960",
"product_image": "https://cdn.shping.com/2018/1/28/a759926f-0826-4d90-9d62-61aa4d202d56.png",
"product_name": "Spirax A4 240 Pages 7mm No 595a",
"product_reviews_rate": 0,
"ts": "2019-10-29T07:07:54Z",
"type": "scan",
"user": {
"level": "platinum",
"reviews_karma": 2
}
}
Example message with type coins_earned
{
"accuracy": "57,6180000305176",
"coins": 130000000000000000000,
"country": "643",
"language": "ru",
"latitude": "56853688",
"longitude": "53298960",
"product_image": "https://cdn.shping.com/2018/1/28/a759926f-0826-4d90-9d62-61aa4d202d56.png",
"product_name": "Spirax A4 240 Pages 7mm No 595a",
"product_reviews_rate": 0,
"ts": "2019-10-29T07:06:29Z",
"type": "coins_earned",
"user": {
"level": "platinum",
"reviews_karma": 2
}
}
Coins for upload receipt
GET /rewards-service/upload_receipt/coins
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
latitude | string | Required: Latitude |
longitude | string | Required: Longitude |
accuracy | string | Required: Accuracy |
country | string | Country code |
Example Request
GET /rewards-service/upload_receipt/coins?latitude=0&longitude=0&accuracy=0
Example Response
{
"coins": "50000000000000000000",
"id": "urn:authenticateit:campaign:537116810067866",
"non_partner_brand_product_coins": "66890000000000000000",
"partner_brand_product_coins": "668900000000000000000"
}
Read FP analytic
POST /rewards-service/featured_products_campaigns/analytic
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket | header | Required: Session's ticket |
offset | integer | Required: Timezone offset (in min) |
group_fields | list | Can be list of owner ,campaign ,offset ,date |
campaigns | list | Filter. List of campaigns |
owner | string | Filter. Owner id |
date_from | string | Filter. Date from value |
date_to | string | Filter. Date to value |
Example Request
{
"offset": 600,
"group_fields":["owner", "campaign", "offset", "date"],
"campaigns": ["urn:authenticateit:featured_products_campaigns:888180645516460"],
"owner": "urn:authenticateit:participant:1",
"date_from": "2020-10-01",
"date_to": "2020-12-14"
}
Example Response
[
{
"campaign": "urn:authenticateit:featured_products_campaigns:888180645516460",
"count": 299,
"date": "2020-10-01",
"offset": 600,
"owner": "urn:authenticateit:participant:1"
},
{
"campaign": "urn:authenticateit:featured_products_campaigns:888180645516460",
"count": 30,
"date": "2020-10-02",
"offset": 600,
"owner": "urn:authenticateit:participant:1"
},
{
"campaign": "urn:authenticateit:featured_products_campaigns:888180645516460",
"count": 9,
"date": "2020-10-04",
"offset": 600,
"owner": "urn:authenticateit:participant:1"
},
{
"campaign": "urn:authenticateit:featured_products_campaigns:888180645516460",
"count": 2,
"date": "2020-10-10",
"offset": 600,
"owner": "urn:authenticateit:participant:1"
}
]
Cashbacks
Create Cashback
POST /rewards-service/cashbacks
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
start_date |
string | Required: Start datetime |
end_date |
string | Required: End datetime |
name |
string | Required: Name |
options |
object | Required: Options |
status |
string | Required: active or inactive |
card |
object | Required: ToDo card object |
all_products |
boolean | All products options |
purchased_products |
list | Purchased products. List of gtins |
products |
list | List of selected products |
audience |
object | Audience filter |
locations |
list | Rewards locations |
budget |
object | Cashback budget in coins/currency |
messages |
list | Cashback messages |
validation |
list | Cashback validation rules |
t&c |
string | Text (URL) with T&C |
cashback_per_x_product_receipt_level |
boolean | cashback_per_x_product flag (described below) |
cashback_per_x_product_receipt_level
flag shows which cashback_per_x_product
option should be used.cashback_per_x_product_receipt_level
.true
- will be used options
.cashback_per_x_product
if value exsist. In other case (options
.cashback_per_x_product
not exsist) the behaviour same as cashback_per_x_product_receipt_level
.false
.cashback_per_x_product_receipt_level
.false
- by default. Will be used purchased_products
.cashback_per_x_product
if value exsist.
card
field takes JSON object containing card name
, icon
(predefined icon identifier or URL), description
, non-empty
list of steps
.
Also card
may include the promo_image
(URL) and promo_image_mission
(URL).
Predefined icon identifiers are action
, brand
, contact
, fb
,
support
, verify
and warning
.
Each step is a JSON object containing step type
, title
(optional
step title) and bunch of other fields depending on the type
.
Step type
may be phone_verification
. In that case step must also may include title
field.
Step type
may be text
. In that case step must also include text
field (textual description of the step).
Step type
may be textbox
. No other fields are defined for such
step. User will be asked to provide some text to complete the step.
Step type
may be rating
. No other fields are defined for such
step. User will be asked to provide a rating (integer number from 1 to
5) to complete the step.
Step type
may be question
. Fields question
(question textual
description) and answers
(non-empty list of possible answers) must
be present for such step. Each answer is a JSON object with fields
answer
(answer textual description) and optional correct
(true
if the answer must be accepted as correct).
Step type
may be image
. No other fields are defined for such
step. User will be asked to upload an image to complete the step.
Steps should contains elements with type
receipt
and cashout_account
.
Cashback should contain options
field with followed params:options
.auto_approve
- boolean flag shows that card will accepted automaticallyoptions
.retailers
- list of acceptable retailersoptions
.currency
- currency
options
.cashback
- could be as percents/value/coinsoptions
.currency
- cashback result currencyoptions
.claims_per_gtin
- cashback claims per gtinoptions
.claims_per_user
- cashback claims per useroptions
.receipt_postcode
- list of valid postcodes for receiptoptions
.max_claims
- allowed claims per cashbackoptions
.receipt_date_from
- receipt datetime validation ruleoptions
.receipt_date_to
- receipt datetime validation ruleoptions
.receipt_date_to
- receipt datetime validation ruleoptions
.cashback_per_x_product
- cashbacks per X products. Global settings (pos_integer)options
.cap_in_receipt
- total cap per receipt (pos_integer)
messages
list contains notifications for user.messages
.type
- is type of message REJECT\ACCPET\MANUAL_REJECT\PENDINGmessages
.message
- timeline notificationmessages
.push
- optional push notification
purchased_products
.gtin
- valid gtinpurchased_products
.max_price
- max price per productpurchased_products
.min_qty
- min quantity per productpurchased_products
.max_qty
- max quantity per productpurchased_products
.required
- gtin should be presented in listpurchased_products
.cashback_per_x_product
- cashbacks per X product
Example Request
{
"all_products": true,
"locations": [
{
"active": true,
"country": "036",
"states": [
"VIC"
],
"cities": [
"Seddon"
],
"postcodes": [
"3030",
"3011"
]
}
],
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"budget": {
"value": 100
},
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "https://dev-cdn.shping.com/2021/11/23/a8c1f969-aaed-444a-bd4f-d47a6cf16eee.png",
"promo_image": "https://dev-cdn.shping.com/2021/12/2/9aff4203-3e89-4af2-b014-26d9a734d5fe.png",
"promo_image_mission": "https://dev-cdn.shping.com/2021/12/2/9aff4203-3e89-4af2-b014-26d9a734d5fe.png",
"name": "Sample Cashback Card",
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Verify phone if req",
"type": "phone_verification"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
]
},
"end_date": "2021-12-29T22:42:25Z",
"messages": [
{
"message": "Test message",
"push": "Test message",
"type": "REJECT"
},
{
"message": "Test message",
"type": "ACCPET"
},
{
"message": "Test message",
"push": "Test message",
"type": "MANUAL_REJECT"
},
{
"message": "Test message",
"push": "Test message",
"type": "PENDING"
}
],
"name": "Cashback example 1",
"options": {
"cashback_per_x_product": 2,
"cap_in_receipt": 3,
"receipt_date_from": "2021-01-29T00:00:00Z",
"receipt_date_to": "2021-09-29T00:00:00Z",
"auto_approve": true,
"cashback": {
"percents": 20
},
"claims_per_gtin": 1,
"claims_per_user": 5,
"max_claims": 1000,
"currency": "aud",
"receipt_postcode": [
"3003"
],
"retailers": [
"coles"
]
},
"purchased_products": [
{
"gtin": "00000000000000",
"cashback_per_x_product": 2,
"max_price": 4.5,
"min_qty": 2,
"max_qty": 3,
"required": true
}
],
"start_date": "2020-01-20T22:42:25Z",
"status": "active",
"type": "cashback_campaign",
"validation": [
"profile:phone"
],
"t&c": "Please follow https://en.wikipedia.org/wiki/Main_Page"
}
Example Response
{
"all_products": true,
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"branch_io_link": "https://shping-click.app.link/v4sPM8SeYrb",
"budget": {
"value": 100
},
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "https://dev-cdn.shping.com/2021/11/23/a8c1f969-aaed-444a-bd4f-d47a6cf16eee.png",
"name": "Sample Cashback Card",
"promo_image": "https://dev-cdn.shping.com/2021/12/2/9aff4203-3e89-4af2-b014-26d9a734d5fe.png",
"promo_image_mission": "https://dev-cdn.shping.com/2021/12/2/9aff4203-3e89-4af2-b014-26d9a734d5fe.png",
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Verify phone if req",
"type": "phone_verification"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
]
},
"end_date": "2021-12-29T22:42:25Z",
"id": "urn:authenticateit:cashback:237821382641810",
"locations": [
{
"active": true,
"cities": [
"Seddon"
],
"country": "036",
"postcodes": [
"3030",
"3011"
],
"states": [
"VIC"
]
}
],
"messages": [
{
"message": "Test message",
"push": "Test message",
"type": "REJECT"
},
{
"message": "Test message",
"type": "ACCPET"
},
{
"message": "Test message",
"push": "Test message",
"type": "MANUAL_REJECT"
},
{
"message": "Test message",
"push": "Test message",
"type": "PENDING"
}
],
"name": "Cashback example 1",
"options": {
"auto_approve": true,
"cap_in_receipt": 3,
"cashback": {
"percents": 20
},
"cashback_per_x_product": 2,
"claims_per_gtin": 1,
"claims_per_user": 5,
"currency": "aud",
"max_claims": 1000,
"receipt_date_from": "2021-01-29T00:00:00Z",
"receipt_date_to": "2021-09-29T00:00:00Z",
"receipt_postcode": [
"3003"
],
"retailers": [
"coles"
]
},
"purchased_products": [
{
"cashback_per_x_product": 2,
"gtin": "00000000000000",
"gtin_name": "Champion Fresh Seal Smooth Blue Duo Pouch 40g X 5 X 30",
"max_price": 4.5,
"max_qty": 3,
"min_qty": 2,
"required": true
}
],
"spendings": {
"budget_value": 100,
"cashback_total": 0,
"remaining_balance": 100
},
"start_date": "2020-01-20T22:42:25Z",
"status": "active",
"t&c": "Please follow https://en.wikipedia.org/wiki/Main_Page",
"validation": [
"profile:phone"
]
}
Mark cashback as published
After publication owner will no access to update all cashback fields and delete cashback
PUT /rewards-service/cashbacks/published/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Cashback id |
Example Request
Example Response
{
"all_products": true,
"spendings": {
"budget_value": 100,
"cashback_total": 0,
"remaining_balance": 100
},
"audience": {
"countries": [
"036",
"643"
],
"languages": [
"en"
],
"postcode": [
"00000"
],
"user_levels": [
"basic"
]
},
"branch_io_link": "https://shping-click.app.link/M8Xo0pLrolb",
"budget": {
"value": 100
},
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"name": "Cashback example v1",
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"type": "phone_verification"
},
{
"title": "Add account id",
"type": "cashout_account"
}
]
},
"end_date": "2021-12-29T22:42:25Z",
"id": "urn:authenticateit:cashback:603210973107806",
"messages": [
{
"message": "Test message1111111",
"push": "Test message",
"type": "REJECT"
},
{
"message": "Test message",
"type": "ACCPET"
},
{
"message": "Test message",
"push": "Test message",
"type": "MANUAL_REJECT"
},
{
"message": "Test message",
"push": "Test message",
"type": "PENDING"
}
],
"name": "Cashback example v1",
"options": {
"auto_approve": true,
"cashback": {
"percents": 20
},
"claims_per_gtin": 1,
"claims_per_user": 5,
"currency": "aud",
"max_claims": 1000,
"receipt_postcode": [
"3003"
],
"retailers": [
"coles"
]
},
"published_at": "2021-10-19T22:42:25Z",
"purchased_products": [
{
"gtin": "00000000000000",
"gtin_name": "Champion Fresh Seal Smooth Blue Duo Pouch 40g X 5 X 30",
"max_price": 4.5,
"max_qty": 3,
"min_qty": 2,
"required": true
}
],
"start_date": "2021-10-20T22:42:25Z",
"status": "active",
"validation": [
"profile:phone"
]
}
Update cashback
Endpoint for owner participant to update a cashback.
Current participant must be cashback's owner. Only name
,status
and messages
fields can be updated if the cashback has been already published.
PUT /rewards-service/cashbacks/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Cashback id |
Example Request
{
"status": "inactive",
"name": "New name",
"messages": [
{
"type": "REJECT",
"message": "Test message",
"push": "Test message"
},
{
"type": "ACCPET",
"message": "Test message"
},
{
"type": "MANUAL_REJECT",
"message": "Test message",
"push": "Test message"
},
{
"type": "PENDING",
"message": "Test message",
"push": "Test message"
}
]
}
Example Response
{
"all_products": true,
"spendings": {
"budget_value": 100,
"cashback_total": 0,
"remaining_balance": 100
},
"audience": {
"city": [
"c1",
"c2"
],
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"postcode": [
"01",
"02"
],
"user_levels": [
"basic"
]
},
"branch_io_link": "https://test-shping.app.link/g4mmzEKISkb",
"budget": {
"value": 100
},
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"name": "Sample Competition Card",
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
]
},
"end_date": "2021-12-20T22:42:25Z",
"id": "urn:authenticateit:cashback:702640393170547",
"messages": [
{
"message": "Test message",
"push": "Test message",
"type": "REJECT"
},
{
"message": "Test message",
"type": "ACCPET"
},
{
"message": "Test message",
"push": "Test message",
"type": "MANUAL_REJECT"
},
{
"message": "Test message",
"push": "Test message",
"type": "PENDING"
}
],
"name": "New name",
"options": {
"auto_approve": true,
"cashback": {
"percents": 20
},
"claims_per_gtin": 1,
"claims_per_user": 2,
"currency": "aud",
"receipt_postcode": [
"3003"
],
"retailers": [
"coles"
]
},
"purchased_products": [
{
"gtin": "00000000000000",
"gtin_name": "Champion Fresh Seal Smooth Blue Duo Pouch 40g X 5 X 30",
"max_price": 4.5,
"max_qty": 3,
"min_qty": 2,
"required": true
}
],
"start_date": "2021-10-20T22:42:25Z",
"status": "inactive",
"validation": [
"profile:phone"
]
}
Delete cashback
Endpoint to delete existing cashback by id. Current participant must be cashback's owner. Cashback should not be published
DELETE /rewards-service/cashbacks/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Cashback id |
List cashbacks
List participant's cashbacks. Accepts offset
(skip specified number
of cashbacks; 0 by default) and limit
(limit the number of returned
cashbacks; 100 by default) query parameters.
GET /rewards-service/cashbacks/
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
offset |
number | Skip specified number of cashbacks |
limit |
number | Limit the number of returned cashbacks |
sort_by |
string | One of start_date , end_date , status , published_at |
sort_type |
string | asc or desc |
status |
string | One of active , completed , draft , all |
status
.all
- do not filter.status
.active
- published_at IS NOT NULL end_date > NOW().status
.completed
- published_at IS NOT NULL end_data < NOW().status
.draft
- published_at IS NULL.
Example Response
{
"count": 11,
"data": [
{
"spendings": {
"budget_value": 15,
"cashback_total": 0,
"remaining_balance": 15
},
"all_products": true,
"audience": {
"city": [
"c1",
"c2"
],
"countries": [
"036"
],
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"postcode": [
"01",
"02"
],
"user_levels": [
"basic"
]
},
"branch_io_link": "https://test-shping.app.link/j8ba8LUA1kb",
"budget": {
"value": 15
},
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"name": "Sample Competition Card",
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
]
},
"end_date": "2021-10-29T22:42:25Z",
"id": "urn:authenticateit:cashback:059131414534263",
"messages": [
{
"message": "Test message",
"push": "Test message",
"type": "REJECT"
},
{
"message": "Test message",
"type": "ACCPET"
},
{
"message": "Test message",
"push": "Test message",
"type": "MANUAL_REJECT"
},
{
"message": "Test message",
"push": "Test message",
"type": "PENDING"
}
],
"name": "Cashback example 1",
"options": {
"auto_approve": true,
"cashback": {
"percents": 20
},
"claims_per_gtin": 1,
"claims_per_user": 5,
"currency": "aud",
"max_claims": 1000,
"receipt_postcode": [
"3003"
],
"retailers": [
"coles"
]
},
"purchased_products": [
{
"gtin": "00000000000000",
"gtin_name": "Champion Fresh Seal Smooth Blue Duo Pouch 40g X 5 X 30",
"max_price": 4.5,
"max_qty": 3,
"min_qty": 2,
"required": true
}
],
"start_date": "2020-01-20T22:42:25Z",
"status": "active",
"validation": [
"profile:phone"
]
}
]
}
Read cashback
GET /rewards-service/cashbacks/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Cashback id |
Example Response
{
"spendings": {
"budget_value": 1000,
"cashback_total": 105.01,
"remaining_balance": 894.99
},
"all_products": true,
"audience": {},
"branch_io_link": "https://shping-click.app.link/LX3lyGhlhlb",
"budget": {
"value": 1000
},
"card": {
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"name": "Sample Competition Card",
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
]
},
"end_date": "2021-10-29T22:42:25Z",
"id": "urn:authenticateit:cashback:627147240157780",
"messages": [
{
"message": "Test message1111111",
"push": "Test message",
"type": "REJECT"
},
{
"message": "Test message",
"type": "ACCPET"
},
{
"message": "Test message",
"push": "Test message",
"type": "MANUAL_REJECT"
},
{
"message": "Test message",
"push": "Test message",
"type": "PENDING"
}
],
"name": "Cashback example 1",
"options": {
"auto_approve": true,
"cashback": {
"percents": 20
},
"claims_per_gtin": 1,
"claims_per_user": 5,
"currency": "aud",
"max_claims": 1000,
"receipt_postcode": [
"3003"
],
"retailers": [
"coles"
]
},
"purchased_products": [
{
"gtin": "00000000000000",
"gtin_name": "Champion Fresh Seal Smooth Blue Duo Pouch 40g X 5 X 30",
"max_price": 4.5,
"max_qty": 3,
"min_qty": 2,
"required": true
}
],
"start_date": "2020-01-20T22:42:25Z",
"status": "inactive",
"validation": [
"profile:phone"
]
}
Sync build considered card
GET /rewards-service/cashbacks/considered/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
url | Required: Cahsback id. |
Example Response
{
"campaign_type": "cashback",
"created": "2021-11-03T10:55:54Z",
"delivery_id": "urn:authenticateit:cashback:710565617279618",
"description": "Complete this survey to earn some coins.",
"icon": "warning",
"id": "dae798f9f9d8accb3b130515b6c66c52be3b0b81b83340fccd282b3d23c531e74bc10b1669bbbd1a00a58d6bbdb94d2d",
"name": "Sample Competition Card",
"owner": "urn:authenticateit:participant:735879621218609",
"result": null,
"scan_id": null,
"status": null,
"validation": [
"profile:phone"
],
"steps": [
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Verify phone if req",
"type": "phone_verification"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
],
"type": "considered_todo_card",
"user_id": "urn:authenticateit:user:email:test@gmail.com"
}
List of cashback submissions
POST /rewards-service/cashbacks/submissions/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
status |
list | Status filter |
delivery_id |
list | Cashbacks filter |
order_by |
string | Order rule |
order_type |
string | Order type rule |
offset |
non_neg_integer | Offset (default 0) |
limit |
pos_integer | Limit (default 0) |
status
should be a list of folowed values ["filled", "under_review", "completed", "failure"]delivery_id
should be a list of cashback idsorder_by
should be one of values ["id", "considered_id", "submission_id", "user_id", "user_phone", "delivery_id", "created_ts", "status", "error_id", "cashback_value"]order_type
should be one of values ["asc", "desc"]
Example Request
{
"status": [
"under_review"
],
"delivery_id": [
"urn:authenticateit:cashback:398109165616647"
],
"limit": 1,
"offset": 0,
"order_by": "created_ts",
"order_type": "asc"
}
Example Response
{
"count": 3,
"data": [
{
"analyzed_receipt": {
"accuracy_rate": 0.7300000190734863,
"data": {
"expanded_prices": [
{
"hash": "f3444c5b185759fb036522a2b810d7e599bd463d",
"id": "d712e62c-69b0-4c96-b0c6-bd317977bfee",
"name": "COLES LITE MILK 2LITRE",
"value": "2.39"
},
{
"hash": "1eb33ebaac98b12dc60e9f5f82c74f6ebad5d297",
"id": "23c6b761-76ec-4f29-8da0-36e228b4d164",
"name": "* FREEDOM MUESLI 500 G 500GRAM 2 @ $3.10 EACH",
"value": "6.20"
},
{
"hash": "f1b0b19779050deada97fcc8a8502d3746a4e20c",
"id": "9bd2d6d3-82f2-4a03-9bca-c46315b2bad8",
"name": "* VEGEMITÉ CHEESYBITE 270GRAM",
"value": "3.50"
},
{
"hash": "a8de6907f48304ac73585f00bc8d0b34f82d61a5",
"id": "5482d906-a94c-4662-9584-b36d9e0ecf5c",
"name": "PREPACK CARROTS 1EACH",
"value": "1.00"
}
],
"links": [
[
"https://cdn.shping.com/2019/10/25/0770b942-9c81-45ed-8909-6ebb52ca935e"
]
],
"prices": [
{
"name": "COLES LITE MILK 2LITRE",
"value": "2.39"
},
{
"name": "* FREEDOM MUESLI 500 G 500GRAM 2 @ $3.10 EACH",
"value": "6.20"
},
{
"name": "* VEGEMITÉ CHEESYBITE 270GRAM",
"value": "3.50"
},
{
"name": "PREPACK CARROTS 1EACH",
"value": "1.00"
}
],
"store": "coles",
"total": "13.09",
"ts": "2021-11-24T08:32:03.037Z"
},
"id": "urn:authenticateit:user:email:email@gmail.com@analyzed_receipts@28a8403a-a0c3-4ceb-9829-1a23a953693a",
"ocr_hash": "792bfd379c26d1ad01ebe04a92142d7f6c93a29d",
"receipt_date": "25/10/2019",
"receipt_id": "28a8403a-a0c3-4ceb-9829-1a23a953693a",
"receipt_time": "Date:",
"retailer": "coles",
"retailer_store_id": "697",
"source": "cashback",
"status": "completed",
"ts": "2021-11-24T08:34:15Z",
"type": "analyzed_receipts",
"user_id": "urn:authenticateit:user:email:email@gmail.com",
"words_count": 146
},
"cashback_value": null,
"considered_id": "a6b7bfe5d6c9796a99fe0120bd7247ee8cd34fd18b56cdb8020402399b770ee313687b3e607340b099b0a07233da2788",
"created_ts": "2021-11-24T08:29:37Z",
"delivery_id": "urn:authenticateit:cashback:398109165616647",
"error_id": null,
"error_reason": null,
"id": "a6b7bfe5d6c9796a99fe0120bd7247ee8cd34fd18b56cdb8020402399b770ee313687b3e607340b099b0a07233da2788@5e3af683-60ae-48e6-9c2c-66135ad72e91",
"status": "under_review",
"submission_id": "5e3af683-60ae-48e6-9c2c-66135ad72e91",
"transaction_request": null,
"user_first_name": "user1",
"user_id": "urn:authenticateit:user:email:email@gmail.com",
"user_last_name": "pwd1",
"user_livel": "basic",
"user_phone": "+7111111111",
"user_photo": "https://dev-cdn.shping.com/2019/3/6/c5809b6f-3b0d-4d7c-8b43-14ff20edbffa"
}
]
}
Fields description:
"analyzed_receipt" - data from receipt after OCR (could be a empty object if receipt OCR is not available).
"cashback_value" - cashback value if status is "completed".
"considered_id" - considered card id.
"created_ts" - submission timestamp.
"delivery_id" - cashback campaign id.
"id" - submission complex id.
"error_id" - error id if status is "failure".
"error_reason" - error text if status is "failure".
"status" - current submission status ("completed"/"failure"/"filled"/"under_review").
"submission_id" - submission id.
"transaction_request" - transaction request id if status is "completed".
"user_first_name" - User's first name.
"user_id" - User's id.
"user_last_name" - User's last name.
"user_livel" - User's level.
"user_phone" - User's phone.
"user_photo" - User's profile photo.
Get submission data by id
POST /rewards-service/cashbacks/submissions/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Submission complex id |
Example Request
{
"id": "a6b7bfe5d6c9796a99fe0120bd7247ee8cd34fd18b56cdb8020402399b770ee313687b3e607340b099b0a07233da2788@5e3af683-60ae-48e6-9c2c-66135ad72e91"
}
Example Response
{
"analyzed_receipt": {
"accuracy_rate": 0.7300000190734863,
"data": {
"expanded_prices": [
{
"hash": "f3444c5b185759fb036522a2b810d7e599bd463d",
"id": "d712e62c-69b0-4c96-b0c6-bd317977bfee",
"name": "COLES LITE MILK 2LITRE",
"value": "2.39"
},
{
"hash": "1eb33ebaac98b12dc60e9f5f82c74f6ebad5d297",
"id": "23c6b761-76ec-4f29-8da0-36e228b4d164",
"name": "* FREEDOM MUESLI 500 G 500GRAM 2 @ $3.10 EACH",
"value": "6.20"
},
{
"hash": "f1b0b19779050deada97fcc8a8502d3746a4e20c",
"id": "9bd2d6d3-82f2-4a03-9bca-c46315b2bad8",
"name": "* VEGEMITÉ CHEESYBITE 270GRAM",
"value": "3.50"
},
{
"hash": "a8de6907f48304ac73585f00bc8d0b34f82d61a5",
"id": "5482d906-a94c-4662-9584-b36d9e0ecf5c",
"name": "PREPACK CARROTS 1EACH",
"value": "1.00"
}
],
"links": [
[
"https://cdn.shping.com/2019/10/25/0770b942-9c81-45ed-8909-6ebb52ca935e"
]
],
"prices": [
{
"name": "COLES LITE MILK 2LITRE",
"value": "2.39"
},
{
"name": "* FREEDOM MUESLI 500 G 500GRAM 2 @ $3.10 EACH",
"value": "6.20"
},
{
"name": "* VEGEMITÉ CHEESYBITE 270GRAM",
"value": "3.50"
},
{
"name": "PREPACK CARROTS 1EACH",
"value": "1.00"
}
],
"store": "coles",
"total": "13.09",
"ts": "2021-11-24T08:32:03.037Z"
},
"id": "urn:authenticateit:user:email:email@gmail.com@analyzed_receipts@28a8403a-a0c3-4ceb-9829-1a23a953693a",
"ocr_hash": "792bfd379c26d1ad01ebe04a92142d7f6c93a29d",
"receipt_date": "25/10/2019",
"receipt_id": "28a8403a-a0c3-4ceb-9829-1a23a953693a",
"receipt_time": "Date:",
"retailer": "coles",
"retailer_store_id": "697",
"source": "cashback",
"status": "completed",
"ts": "2021-11-24T08:34:15Z",
"type": "analyzed_receipts",
"user_id": "urn:authenticateit:user:email:email@gmail.com",
"words_count": 146
},
"considered_card": {
"campaign_type": "cashback",
"created": "2021-11-24T07:14:30Z",
"delivery_id": "urn:authenticateit:cashback:398109165616647",
"description": "Complete this survey to earn some coins.",
"icon": "https://dev-cdn.shping.com/2021/11/23/a8c1f969-aaed-444a-bd4f-d47a6cf16eee.png",
"id": "a6b7bfe5d6c9796a99fe0120bd7247ee8cd34fd18b56cdb8020402399b770ee313687b3e607340b099b0a07233da2788",
"name": "Sample Cashback Card review",
"owner": "urn:authenticateit:participant:735879621218609",
"result": null,
"scan_id": null,
"status": null,
"steps": [
{
"is_default": true,
"text": "Please follow https://en.wikipedia.org/wiki/Main_Page",
"title": "Terms and Conditions",
"type": "text"
},
{
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"title": "Verify phone if req",
"type": "phone_verification"
},
{
"title": "Please rate this",
"type": "rating"
},
{
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"type": "question"
},
{
"title": "Add receipt",
"type": "receipt"
},
{
"title": "Add account id",
"type": "cashout_account"
}
],
"type": "considered_todo_card",
"user_id": "urn:authenticateit:user:email:email@gmail.com",
"validation": [
"profile:phone"
]
},
"submission": {
"id": "5e3af683-60ae-48e6-9c2c-66135ad72e91",
"phone": "+79199101840",
"status": "under_review",
"steps": [
{
"is_default": true,
"step_id": "be47f381-543f-424d-97f1-f704bcc5c432",
"text": "Please follow https://en.wikipedia.org/wiki/Main_Page",
"title": "Terms and Conditions",
"type": "text"
},
{
"step_id": "fd60173b-dbaa-47df-bb5d-3df4bf2d6dc4",
"text": "Please follow TC URL",
"title": "Step 1 title",
"type": "text"
},
{
"step_id": "e7e98d98-8f1b-4abf-a243-fa37b7574b41",
"title": "Verify phone if req",
"type": "phone_verification"
},
{
"rating": 4,
"step_id": "3ba453c4-26e7-42a3-acb3-6ee63c9135f7",
"title": "Please rate this",
"type": "rating"
},
{
"answer_index": 1,
"answers": [
{
"answer": "Definitely A!"
},
{
"answer": "B for sure!",
"correct": true
}
],
"question": "A or B?",
"step_id": "7831f61a-1037-4c30-8699-2bb9211404b5",
"type": "question"
},
{
"image": [
{
"url": "https://cdn.shping.com/2019/10/25/0770b942-9c81-45ed-8909-6ebb52ca935e"
}
],
"step_id": "28a8403a-a0c3-4ceb-9829-1a23a953693a",
"title": "Add receipt",
"type": "receipt"
},
{
"account": {
"account": "67774555",
"bank": "gjkkklllo",
"bsb": "355896",
"country": "036",
"description": "gjkkklllo",
"id": "ab97eff9-1ef5-4612-95ea-b557d9b106fe",
"name": "754fffhu",
"postcode": "6646"
},
"id": "ab97eff9-1ef5-4612-95ea-b557d9b106fe",
"step_id": "652248d3-3519-46c5-8438-a97fc3634e99",
"title": "Add account id",
"type": "cashout_account"
}
],
"ts": "2021-11-24T08:29:37Z"
},
"user": {
"first_name": "user1",
"id": "urn:authenticateit:user:email:email@gmail.com",
"last_name": "pwd1",
"level": "basic",
"photo": "https://dev-cdn.shping.com/2019/3/6/c5809b6f-3b0d-4d7c-8b43-14ff20edbffa"
}
}
Fields description:
"considered_card" - cashback card, that user received.
"submission" - user's submission by this considered card (completed card by user).
"user" - data about user.
"analyzed_receipt" - data from receipt after OCR (could be a empty object if receipt OCR is not available).
Reject submission data
Applicable only for submissions with under_review
status.
POST /rewards-service/cashbacks/submissions/status
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Submission complex id |
status |
string | Required: failure |
reason |
string | Required: Text error reason |
Example Request
{
"id": "a6b7bfe5d6c9796a99fe0120bd7247ee8cd34fd18b56cdb8020402399b770ee313687b3e607340b099b0a07233da2788@5e3af683-60ae-48e6-9c2c-66135ad72e91",
"status": "failure",
"reason": "Some text reason"
}
Accept submission data
Applicable only for submissions with under_review
status.
POST /rewards-service/cashbacks/submissions/status
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Submission complex id |
status |
string | Required: completed |
cashback_value |
number | Required: Cashback value |
cashback_value
the value must be greater than 0.01 and lower or equal than total value of receipt if exist (analyzed_receipt
.data
.total
).
Example Request
{
"id": "d1276d659f666853a9ece436ce8077a5fcfc0de09b2c355e3e656f79c851b5a983324f5dd2d836dede4eba09c8c42c32@a86081b3-9acd-44c4-97e2-8a2b784bfc93",
"status": "completed",
"cashback_value": 0.1
}
Edit submission data
Applicable only for submissions with under_review
status.
PUT /rewards-service/cashbacks/submissions
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Submission complex id |
cashback_value |
number | Number value greater than 0.01 |
total |
number/string | Receipt total value (number/number string) |
retailer |
string | Receipt retailer |
expanded_prices |
list | List of objects with prices |
expanded_prices.name - is required (string).
expanded_prices.quantity - is required (integer greater than 0).
expanded_prices.value - is required (number/string).
expanded_prices.gtin - valid gtin. Optional.
Example Request
{
"id": "d1276d659f666853a9ece436ce8077a5fcfc0de09b2c355e3e656f79c851b5a983324f5dd2d836dede4eba09c8c42c32@7bb4554d-06b5-45fb-afe8-d1a69657fbb2",
"cashback_value": 0.01,
"total": "999.01",
"retailer": "iga",
"expanded_prices": [
{
"name": "N1",
"quantity": 2,
"gtin": "00000000000000",
"value": 9.01
},
{
"name": "P2",
"quantity": 1,
"value": 0.01
}
]
}
Edit submission receipt items by id
Applicable only for submissions with under_review
status.
PUT /rewards-service/cashbacks/submissions/receipt/items
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Submission complex id |
expanded_prices |
list | Required: List of objects |
expanded_prices.id - is required (string).
expanded_prices.name - is not required (string).
expanded_prices.quantity - is not required (integer greater than 0).
expanded_prices.value - is not required (number/string).
expanded_prices.gtin - valid gtin. Optional.
Example Request
{
"id": "a6b7bfe5d6c9796a99fe0120bd7247ee8cd34fd18b56cdb8020402399b770ee313687b3e607340b099b0a07233da2788@a0045133-12e7-48f6-a5ef-a88c0e9165ad",
"expanded_prices": [
{
"id": "26f266a6-3dd3-4dcb-a6fa-c4accc7bdea4",
"name": "COLES CHANGED",
"value": 2.22,
"gtin": "00000000000000",
"quantity": 3
},
{
"id": "8fbebd56-125d-4a7e-aab1-2e416ab8d302",
"value": 3.5
}
]
}
Example Response
{
"analyzed_receipt": {
"accuracy_rate": 0.7300000190734863,
"data": {
"expanded_prices": [
{
"gtin": "00000000000000",
"hash": "a72d55ea869f3c4c3ad41299723176eab0856d67",
"id": "26f266a6-3dd3-4dcb-a6fa-c4accc7bdea4",
"name": "COLES CHANGED",
"quantity": 3,
"value": 2.22
},
{
"hash": "1eb33ebaac98b12dc60e9f5f82c74f6ebad5d297",
"id": "4d6fd754-70c2-407d-b36e-5ac32d20afca",
"name": "* FREEDOM MUESLI 500 G 500GRAM 2 @ $3.10 EACH",
"value": "6.20"
},
{
"hash": "f1b0b19779050deada97fcc8a8502d3746a4e20c",
"id": "8fbebd56-125d-4a7e-aab1-2e416ab8d302",
"name": "* VEGEMITÉ CHEESYBITE 270GRAM",
"value": 3.5
},
{
"hash": "a8de6907f48304ac73585f00bc8d0b34f82d61a5",
"id": "5af6c516-fa41-49ef-9e89-189b51e30598",
"name": "PREPACK CARROTS 1EACH",
"value": "1.00"
}
],
"links": [
[
"https://cdn.shping.com/2019/10/25/0770b942-9c81-45ed-8909-6ebb52ca935e"
]
],
"prices": [
{
"name": "COLES LITE MILK 2LITRE",
"value": "2.39"
},
{
"name": "* FREEDOM MUESLI 500 G 500GRAM 2 @ $3.10 EACH",
"value": "6.20"
},
{
"name": "* VEGEMITÉ CHEESYBITE 270GRAM",
"value": "3.50"
},
{
"name": "PREPACK CARROTS 1EACH",
"value": "1.00"
}
],
"store": "coles",
"total": "13.09",
"ts": "2021-11-24T08:52:03.258Z"
},
"id": "urn:authenticateit:user:email:email@gmail.com@analyzed_receipts@61037aae-2efc-45e7-b10b-7eaded72eafc",
"ocr_hash": "792bfd379c26d1ad01ebe04a92142d7f6c93a29d",
"receipt_date": "25/10/2019",
"receipt_id": "61037aae-2efc-45e7-b10b-7eaded72eafc",
"receipt_time": "Date:",
"retailer": "coles",
"retailer_store_id": "697",
"source": "cashback",
"status": "completed",
"ts": "2021-11-24T08:54:15Z",
"type": "analyzed_receipts",
"user_id": "urn:authenticateit:user:email:email@gmail.com",
"words_count": 146
}
}
Booster campaigns
Activate booster campaign
Each campaign needs to be activated by the user. After booster activation, the user will be able to get boosters rewards
POST /rewards-service/boosters/activate/:booster_id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
booster_id |
string | Required: Booster campaign id |
Example Request
{
}
Example Response
{
"activated": true,
"activated_ts": "2023-06-28T02:34:38Z"
}
Generate booster event. System API
Endpoint generates only cashout booster event
POST /rewards-service/boosters/system/generate
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
user_id |
string | Required: User id |
booster_id |
string | Booster campaign id |
product |
string | Gtin |
rrp |
number | Price RRP (from 0.01 to 1000000) |
item_quantity |
pos_integer | Item quantity |
percents |
pos_integer | Percents value |
coin_booster_value |
number | Coin booster value |
receipt_date |
date | Receipt date (history attribute) |
receipt_ts |
datetime | Receipt ts (history attribute) |
receipt_upload_ts |
datetime | Receipt upload ts |
approve_ts |
datetime | Approve ts (history attribute) |
receipt_id |
string | Receipt id (history attribute) |
item_id |
string | Receipt's item id (history attribute) |
receipt_retailer |
string | Receipt retailer |
receipt_number |
string | Receipt number |
store_id |
string | Store id |
publish_to_timeline |
boolean | Publish message to timeline |
generate_engagement_event |
boolean | Generate engagement |
booster_id
or (percents
/coin_booster_value
, product
, rrp
) are requiredcampaign_type
by default is cashout_booster
Result booster value: rrp * (percents/100) * item_quantity
All aditional fields are optional and affects on engagement and history values
Example Request. campaign_type
=cashout_booster
{
"user_id": "urn:authenticateit:user:facebook:shping:2c971dff-67aa-47c3-8c2b-ee8e052e3278",
"product": "00001000000000",
"rrp": 22.20,
"percents": 50,
"item_quantity": 12,
"receipt_date": "2022-01-02",
"receipt_ts": "2022-01-02T00:00:00Z",
"receipt_upload_ts": "2022-01-02T00:00:00Z",
"receipt_retailer": "coles",
"receipt_number": "000000000000",
"store_id": "123-abc-123",
"approve_ts": "2022-01-02T00:00:00Z",
"item_id": "10000000-0000-0000-0000-000000000000",
"receipt_id": "20000000-0000-0000-0000-000000000000",
"publish_to_timeline": true,
"generate_engagement_event": true,
"campaign_type": "cashout_booster"
}
Example Request. campaign_type
=coin_booster
{
"user_id": "urn:authenticateit:user:facebook:shping:2c971dff-67aa-47c3-8c2b-ee8e052e3278",
"product": "00001000000000",
"rrp": 22.20,
"coin_booster_value": 5,
"item_quantity": 12,
"receipt_date": "2022-01-02",
"receipt_ts": "2022-01-02T00:00:00Z",
"receipt_upload_ts": "2022-01-02T00:00:00Z",
"receipt_retailer": "coles",
"receipt_number": "000000000000",
"store_id": "123-abc-123",
"approve_ts": "2022-01-02T00:00:00Z",
"item_id": "10000000-0000-0000-0000-000000000000",
"receipt_id": "20000000-0000-0000-0000-000000000000",
"publish_to_timeline": true,
"generate_engagement_event": true,
"campaign_type": "coin_booster"
}
Read users's feed. System API
POST /boosters/system/history/get
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
user_id |
string | User id |
chunk_id |
string | Chunk id |
type |
string | cashout_booster or coin_booster (cashout_booster by default) |
user_id
or chunk_id
are required
Example Request. type
=cashout_booster
{
"user_id": "urn:authenticateit:user:email:ikleeen@gmail.com",
"type": "cashout_booster"
}
Example Response. type
=cashout_booster
{
"history": [
{
"approve_ts": "2023-06-27T12:42:10Z",
"booster_id": "urn:authenticateit:booster:927492438513687",
"booster_percents": 35,
"campaign_type": "cashout_booster",
"claim_id": "urn:authenticateit:receipt_product_approved_claim:test22",
"currency_value": 7.0,
"gtin": "00000093061759",
"item_id": "1f17e5f0-9c96-4a14-98d3-0a0c471e0492",
"item_price": 10.0,
"item_quantity": 100,
"precision": 18,
"quantity": 2,
"receipt_date": "2023-06-27",
"receipt_id": "1dba8c12-bf87-4b28-98b7-0fef3d79c212",
"receipt_ts": "2023-06-27T11:44:00Z",
"ts": "2023-06-30T02:34:00Z",
"value": 7000000000000000000
},
{
"approve_ts": "2023-06-27T12:42:10Z",
"booster_id": "urn:authenticateit:booster:927492438513687",
"booster_percents": 35,
"campaign_type": "cashout_booster",
"claim_id": "urn:authenticateit:receipt_product_approved_claim:test20",
"currency_value": 3.5,
"gtin": "00000093061759",
"item_id": "1f17e5f0-9c96-4a14-98d3-0a0c471e0492",
"item_price": 10.0,
"item_quantity": 100,
"precision": 18,
"quantity": 1,
"receipt_date": "2023-06-27",
"receipt_id": "1dba8c12-bf87-4b28-98b7-0fef3d79c212",
"receipt_ts": "2023-06-27T11:44:00Z",
"ts": "2023-06-29T05:18:00Z",
"value": 3500000000000000000
}
],
"next": "urn:authenticateit:transactions_history_chunk:d5cbd58c-8185-43bc-9965-bc9c541d6c55"
}
Example Response. type
=coin_booster
{
"history": [
{
"approve_ts": "2023-06-27T12:42:10Z",
"booster_id": "urn:authenticateit:booster:233250563946525",
"campaign_type": "coin_booster",
"claim_id": "urn:authenticateit:receipt_product_approved_claim:test22",
"coins": "2508120000000000000000",
"currency_value": 10.8,
"gtin": "00000093061759",
"item_id": "1f17e5f0-9c96-4a14-98d3-0a0c471e0492",
"item_price": 23.0,
"item_quantity": 100,
"partner_brand": false,
"quantity": 4,
"receipt_date": "2023-06-27",
"receipt_id": "1dba8c12-bf87-4b28-98b7-0fef3d79c212",
"receipt_ts": "2023-06-27T11:44:00Z",
"ts": "2023-06-30T02:34:00Z",
"value": 10.8
},
{
"approve_ts": "2023-06-27T12:42:10Z",
"booster_id": "urn:authenticateit:booster:233250563946525",
"campaign_type": "coin_booster",
"claim_id": "urn:authenticateit:receipt_product_approved_claim:test21",
"coins": "615880000000000000000",
"currency_value": 2.7,
"gtin": "00000093061759",
"item_id": "1f17e5f0-9c96-4a14-98d3-0a0c471e0492",
"item_price": 23,
"item_quantity": 100,
"partner_brand": false,
"quantity": 1,
"receipt_date": "2023-06-27",
"receipt_id": "1dba8c12-bf87-4b28-98b7-0fef3d79c212",
"receipt_ts": "2023-06-27T11:44:00Z",
"ts": "2023-06-29T05:40:00Z",
"value": 2.7
}
],
"next": "urn:authenticateit:coin_boosters_history:87658a66-98df-470d-af2d-f3a3e4a68cc9"
}
Create booster campaign
POST /rewards-service/boosters
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
start_date |
string | Required: Start date |
end_date |
string | Required: End date |
name |
string | Required: Name |
product |
string | Required: Gtin |
status |
string | Required: active or inactive |
rrp |
number | Required: RRP AUD price (from 0.01 to 1000000) |
campaign_type |
string | cashout_booster or coin_booster (cashout_booster by default) |
percents |
integer | Required for cashout_booster: Booster percents |
coin_booster_value |
number | Required for coin_booster: AUD rewards (from 0.01 to 1000000) |
retailers |
nonempty_list | List of valid OCR retailers (from settings_service ) |
campaign_booster_purchases_limit_per_user |
integer | Limit of purchases per user (based on qty) |
campaign_booster_limit |
number | Limit per campaign |
audience |
object | Rewards audience |
locations |
list | Rewards locations |
Example Request. campaign_type
=cashout_booster
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster name",
"product": "00000000943338",
"percents": 50,
"rrp": 1.11,
"start_date": "2023-04-08",
"end_date": "2023-08-30",
"status": "active",
"campaign_type": "cashout_booster",
"campaign_booster_purchases_limit_per_user": 100,
"campaign_booster_limit": 90.5,
"retailers": [
"iga"
]
}
Example Response. campaign_type
=cashout_booster
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"campaign_booster_limit": 90.5,
"campaign_booster_purchases_limit_per_user": 100,
"campaign_type": "cashout_booster",
"created": "2023-06-20T01:48:48Z",
"end_date": "2023-08-30",
"id": "urn:authenticateit:booster:310196088049820",
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster name",
"percents": 50,
"product": "00000000943338",
"retailers": [
"iga"
],
"rrp": 1.11,
"start_date": "2023-04-08",
"status": "active"
}
Example Request. campaign_type
=coin_booster
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster coin name",
"product": "00000000943338",
"coin_booster_value": 2.5,
"rrp": 1.11,
"start_date": "2023-04-08",
"end_date": "2023-08-30",
"status": "active",
"campaign_type": "coin_booster",
"campaign_booster_purchases_limit_per_user": 100,
"campaign_booster_limit": 90.5,
"retailers": [
"iga"
]
}
Example Response. campaign_type
=coin_booster
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"campaign_booster_limit": 90.5,
"campaign_booster_purchases_limit_per_user": 100,
"campaign_type": "coin_booster",
"coin_booster_value": 2.5,
"created": "2023-06-20T01:50:59Z",
"end_date": "2023-08-30",
"id": "urn:authenticateit:booster:190585538417556",
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster coin name",
"product": "00000000943338",
"retailers": [
"iga"
],
"rrp": 1.11,
"start_date": "2023-04-08",
"status": "active"
}
Mark booster campaign as published
After publication owner will no access to update some booster fields and delete booster
PUT /rewards-service/boosters/published/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Booster id |
Example Request
Example Response
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"campaign_booster_limit": 90.5,
"campaign_booster_purchases_limit_per_user": 100,
"campaign_type": "coin_booster",
"coin_booster_value": 2.5,
"created": "2023-06-20T01:50:59Z",
"end_date": "2023-08-30",
"id": "urn:authenticateit:booster:190585538417556",
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster coin name",
"product": "00000000943338",
"published_at": "2023-06-20T02:05:03Z",
"retailers": [
"iga"
],
"rrp": 1.11,
"start_date": "2023-04-08",
"status": "active"
}
Update booster campaign
Endpoint for owner participant to update a cashout booster.
Current participant must be booster's owner.
Only name
, rrp
, status
, retailers
,campaign_booster_purchases_limit_per_user
, campaign_booster_limit
fields can be updated if the booster has been already published.
PUT /rewards-service/boosters/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Booster id |
rrp |
number | RRP AUD price (from 0.01 to 1000000) |
name |
string | Name |
retailers |
nonempty_list | List of valid OCR retailers |
campaign_booster_purchases_limit_per_user |
integer | Limit of purchases per user (based on qty) |
campaign_booster_limit |
number | Limit per campaign |
Example Request
{
"name": "Booster coin renamed",
"status": "inactive",
"retailers": ["coles"],
"campaign_booster_purchases_limit_per_user": 99,
"campaign_booster_limit": 999.9
}
Example Response
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"campaign_booster_limit": 999.9,
"campaign_booster_purchases_limit_per_user": 99,
"campaign_type": "coin_booster",
"coin_booster_value": 2.5,
"created": "2023-06-20T01:50:59Z",
"end_date": "2023-08-30",
"id": "urn:authenticateit:booster:190585538417556",
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster coin renamed",
"product": "00000000943338",
"published_at": "2023-06-20T02:05:03Z",
"retailers": [
"coles"
],
"rrp": 1.11,
"start_date": "2023-04-08",
"status": "inactive"
}
Delete booster campaign
Endpoint to delete existing booster by id. Current participant must be booster's owner. Booster should not be published
DELETE /rewards-service/boosters/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Booster id |
List booster campaigns
List participant's boosters. Accepts offset
(skip specified number
of boosters; 0 by default) and limit
(limit the number of returned
boosters; 100 by default) query parameters.
GET /rewards-service/boosters/
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
offset |
number | Skip specified number of boosters |
limit |
number | Limit the number of returned boosters |
sort_by |
string | One of start_date , end_date , status , published_at , rrp |
sort_type |
string | asc or desc |
status |
string | One of active , completed , draft , all |
product |
string | Gtin filter |
campaign_type |
string | Type filter (cashout_booster or coin_booster ) |
name |
string | Name filter (at least 1 symbol) |
status
.all
- do not filter.status
.active
- published_at IS NOT NULL end_date >= CUR_DATE().status
.completed
- published_at IS NOT NULL end_date < CUR_DATE().status
.draft
- published_at IS NULL.
Example Response
{
"count": 3,
"data": [
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"campaign_booster_limit": 999.9,
"campaign_booster_purchases_limit_per_user": 99,
"campaign_type": "coin_booster",
"coin_booster_value": 2.5,
"created": "2023-06-20T01:50:59Z",
"end_date": "2023-08-30",
"id": "urn:authenticateit:booster:190585538417556",
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster coin renamed",
"product": "00000000943338",
"published_at": "2023-06-20T02:05:03Z",
"retailers": [
"coles"
],
"rrp": 1.11,
"start_date": "2023-04-08",
"status": "inactive"
},
{
"audience": {},
"campaign_booster_limit": 999.9,
"campaign_booster_limit_spent": 24.3,
"campaign_booster_purchases_limit_per_user": 99,
"campaign_type": "coin_booster",
"coin_booster_value": 2.7,
"created": "2023-06-25T07:46:32Z",
"end_date": "2023-07-31",
"id": "urn:authenticateit:booster:233250563946525",
"name": "Booster CB",
"product": "00000093061759",
"published_at": "2023-06-26T07:46:32Z",
"retailers": [
"coles"
],
"rrp": 23.0,
"start_date": "2023-06-26",
"status": "active"
},
{
"audience": {},
"campaign_booster_limit": 18,
"campaign_booster_limit_spent": 17,
"campaign_booster_purchases_limit_per_user": 20,
"campaign_type": "cashout_booster",
"created": "2023-06-29T01:49:03Z",
"end_date": "2023-07-31",
"id": "urn:authenticateit:booster:927492438513687",
"name": "Test WB",
"percents": 35,
"product": "00000093061759",
"published_at": "2023-06-29T01:56:51Z",
"rrp": 10.0,
"start_date": "2023-06-21",
"status": "active"
}
]
}
Read booster campaign
GET /rewards-service/boosters/:id
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
id |
string | Required: Booster id |
Example Response
{
"audience": {
"gender": "other",
"languages": [
"en"
],
"max_age": 35,
"min_age": 20,
"user_levels": [
"basic"
]
},
"campaign_booster_limit": 999.9,
"campaign_booster_purchases_limit_per_user": 99,
"campaign_type": "coin_booster",
"coin_booster_value": 2.5,
"created": "2023-06-20T01:50:59Z",
"end_date": "2023-08-30",
"id": "urn:authenticateit:booster:190585538417556",
"locations": [
{
"active": true,
"country": "036"
}
],
"name": "Booster coin renamed",
"product": "00000000943338",
"published_at": "2023-06-20T02:05:03Z",
"retailers": [
"coles"
],
"rrp": 1.11,
"start_date": "2023-04-08",
"status": "inactive"
}
Read active booster products
GET /rewards-service/boosters/products/preview
Parameters
Name | Type | Description |
---|---|---|
authenticateit_identity_ticket |
header | Required: Session's ticket |
Example Response
{
"list": [
{
"booster_id": "urn:authenticateit:booster:694502125143220",
"event_ts": "2022-05-20T03:19:46Z",
"image": "https://dev-cdn.shping.com/2021/10/28/0cef3746-6c06-4204-8b4f-66a914342b52",
"partner_brand": false,
"percents": 50,
"product_id": "00000000000918",
"product_name": "Crystallised Ginger Loose",
"product_type": "gtin",
"scan_id": "b5db7f18-0eaf-46b1-a90d-592958646b19",
"end_date": "2029-01-30",
"start_date": "2018-08-08"
}
]
}