List shop items
curl --request GET \
--url https://api.teambuilder.ge/v1/shop/items \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.teambuilder.ge/v1/shop/items', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.teambuilder.ge/v1/shop/items"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "e7a4c2d9-1f3b-4a6e-8c5d-9b0f2e4a6c81",
"name": "Extra day off",
"description": "One additional day of paid leave, to use within 12 months.",
"category": "perk",
"image_url": "https://files.example.com/shop/extra-day-off.png",
"coin_price": 1500,
"stock_remaining": 12,
"is_new": true
}
],
"pagination": {
"next_cursor": "djEuQ2hhY2hhMjAuZXhhbXBsZS1jdXJzb3I"
}
}{
"error": {
"code": "validation_failed",
"message": "limit must not be greater than 100",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid API key",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "forbidden",
"message": "This API key lacks the required scope: shop:read",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Retry after 30 seconds.",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}List shop items
The rewards your employees can redeem, with your coin prices and stock.
GET
/
v1
/
shop
/
items
List shop items
curl --request GET \
--url https://api.teambuilder.ge/v1/shop/items \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.teambuilder.ge/v1/shop/items', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.teambuilder.ge/v1/shop/items"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text){
"data": [
{
"id": "e7a4c2d9-1f3b-4a6e-8c5d-9b0f2e4a6c81",
"name": "Extra day off",
"description": "One additional day of paid leave, to use within 12 months.",
"category": "perk",
"image_url": "https://files.example.com/shop/extra-day-off.png",
"coin_price": 1500,
"stock_remaining": 12,
"is_new": true
}
],
"pagination": {
"next_cursor": "djEuQ2hhY2hhMjAuZXhhbXBsZS1jdXJzb3I"
}
}{
"error": {
"code": "validation_failed",
"message": "limit must not be greater than 100",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "unauthorized",
"message": "Invalid API key",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "forbidden",
"message": "This API key lacks the required scope: shop:read",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}{
"error": {
"code": "rate_limit_exceeded",
"message": "Too many requests. Retry after 30 seconds.",
"request_id": "req_7Hq2LmX9vT4kPz1RbN8sWc"
}
}See the shop catalogue guide for how prices and stock behave.
Authorizations
API key — tb_live_… for production data, tb_test_… for the sandbox.
Query Parameters
The pagination.next_cursor of the previous page. Omit it, or send it empty, for the first page. A cursor is opaque and works only on the endpoint that returned it, for the same company.
Maximum string length:
512Example:
"djEuQ2hhY2hhMjAuZXhhbXBsZS1jdXJzb3I"
How many items to return per page, from 1 to 100.
Required range:
1 <= x <= 100Example:
25
Only items of this category.
Available options:
gift_card, merch, perk, donation, experience Example:
"perk"
