Skip to main content
Version: Current

API

This documentation is aimed at developers to define the requirements of technical implementation of the Pion Student Beans code tracking API. More information on the definition of each field and what those fields should be populated with can be found in the knowledge base section.

[POST] /code-tracking/transaction

POST https://sb-api.studentbeans.com/code-tracking/transaction

This endpoint allows you to record the use of a Student Beans voucher code from a transaction.

Body Params

FieldTypeDescription
brandUid [required] stringA unique ID attached to your brand issued by Pion. The brandUid is unique per country.
code [required] stringThe code supplied by your brand and issued from a Student Beans platform that is then applied at checkout.
transactionValue [required] floatThe value of the transaction up to two decimal places as a float. For example, if the transaction value is £10.00, you would enter 10.0 or 10.00 and not "£10", 10 or "10.0".
qualifyingAmount [required] floatThe value of the transactionValue that is eligible to be discounted, up to two decimal places as a float. For example, if the qualifying amount is £1.50, you would enter 1.5 or 1.50 and not "£1.50", or "1.5".
currency [required] stringThe ISO 4217 currency code for the locale of the transaction.
timestamp [required] integerThe timestamp of the transaction between the customer and your brand, in UTC, as Unix Epoch time in seconds.
newUserbooleanBoolean value that determines whether the transaction is a new user.
productsOrderedSkuarray of stringsAn array of string SKU's for the products purchased as part of the transaction.
productsOrderedNamearray of stringsAn array of string product names purchased as part of the transaction.
userAgentstringThe user agent the transaction has been completed from.

Example Request Body:

{
"brandUid": "20406f16-7f0f-11ee-b962-0242ac120002",
"code": "AFSB20UK-fcf43t",
"transactionValue": 20.25,
"qualifyingAmount": 5.25,
"currency": "GDP",
"timestamp": 1577836800,
"newUser": true,
"productsOrderedSku": ["sk1", "sk2"],
"productsOrderedName": ["Product Name 1", "Product Name 2"],
"userAgent": "iOS Safari"
}

Headers

Content-Typeapplication-json
User-Agent<product>/<product_version> <comment>
api-key<generated-by-student-beans>
brand-uid<generated-by-student-beans>

Example Responses

200 OK
{
"data": {
"type": "transaction",
"id": "20406f16-7f0f-11ee-b962-0242ac120002",
"attributes": {
"brandUid": "20406f16-7f0f-11ee-b962-0242ac120002",
"code": "AFSB20UK-fcf43t",
"transactionValue": 20.25,
"qualifyingAmount": 5.25,
"currency": "GBP",
"timestamp": 1577836800,
"newUser": true,
"productsOrderedSku": ["sk1", "sk2"],
"productsOrderedName": ["Product Name 1", "Product Name 2"],
"userAgent": "iOS Safari"
}
}
}
400 Bad Request
{
"errors": [
{
"status": 400,
"title": "Bad Request",
"detail": "Reason for failed request will be displayed here"
}
]
}

Implementation Examples

Curl Example

curl -X POST \
https://sb-api.studentbeans.com/code-tracking/transaction \
-H 'Content-Type: application/json' \
-H 'api-key: <YOUR_API_KEY>' \
-H 'User-Agent: <YOUR_USER_AGENT>' \
-d '{
"brandUid": "20406f16-7f0f-11ee-b962-0242ac120002",
"code": "AFSB20UK-fcf43t",
"transactionValue": 20.25,
"qualifyingAmount": 5.25,
"currency": "GBP",
"timestamp": 1577836800
}'

Ruby Example

require 'net/http'
require 'uri'
require 'json'

url = 'https://sb-api.studentbeans.com/code-tracking/transaction'
api_key= 'YOUR_API_KEY'
user_agent = 'YOUR_USER_AGENT'

request_body = {
"brandUid": "20406f16-7f0f-11ee-b962-0242ac120002",
"code": "AFSB20UK-fcf43t",
"transactionValue": 20.25,
"qualifyingAmount": 5.25,
"currency": "GBP",
"timestamp": 1577836800
}.to_json

uri = URI(url)
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Post.new(uri.request_uri)
request["api-key"] = api_key
request["User-Agent"] = user_agent
request['Content-Type'] = 'application/json'
request.body = request_body

response = http.request(request) puts response.body

Node Example

const axios = require('axios')

const sbTrackingUrl = 'https://sb-api.studentbeans.com/code-tracking/transaction'
const apiKey = 'YOUR_API_KEY'
const userAgent = 'YOUR_USER_AGENT'

const requestBody = {
brandUid: '20406f16-7f0f-11ee-b962-0242ac120002',
code: 'AFSB20UK-fcf43t',
transactionValue: 20.25,
qualifyingAmount: 5.25,
currency: 'GBP',
timestamp: 1577836800
}

const headers = {
'api-key': apiKey,
'Content-Type': 'application/json',
'User-Agent': userAgent
}

axios
.post(sbTrackingUrl, requestBody, { headers })
.then((response) => {
console.log(response.data)
})
.catch((error) => {
console.error(error)
})