Get Customer Benefits
Returns all plan benefits currently available to the active customer profile. Benefits are granted through active plan (tariff) subscriptions and include booking credits, extra services (such as printing), and time passes. The portal uses this to display the benefits panel on the My Plans page and to gate access to credit-based features.
Authentication
Requires a valid customer bearer token.
Query Parameters
Comma-separated list of field paths to include in the response. When provided, only the
specified fields are returned — useful for reducing payload size. Supports nested paths
using dot notation.
Response
The response is split into Personal benefits (belonging to the individual profile) and Team benefits (shared across the customer’s team).
Benefits belonging to the individual customer profile.
Booking credit allowances granted by active plans.
Personal.BookingCredits[].Id
Unique identifier for the booking credit record.
Personal.BookingCredits[].Name
Display name of the booking credit allowance.
Personal.BookingCredits[].TotalCredit
Total credit amount granted (in the location’s currency).
Personal.BookingCredits[].RemainingCredit
Remaining credit balance available to spend.
Personal.BookingCredits[].CaneBeUsedForBookings
true when this credit can be applied to room and desk bookings.
Personal.BookingCredits[].CaneBeUsedForEvents
true when this credit can be applied to event ticket purchases.
Personal.BookingCredits[].IsUniversalCredit
true when this credit applies to all resource types.
Personal.BookingCredits[].IsFromTariff
true when this credit was granted by an active plan subscription rather than manually assigned.
Personal.BookingCredits[].ExpireDate
ISO 8601 datetime when this credit expires. null if it does not expire.
Extra service allowances (e.g. printing credits) granted by active plans.
Unique identifier for the extra service record.
Identifier of the extra service type.
Display name of the extra service.
true when this service is a printing credit (e.g. PaperCut integration).
Total number of uses granted.
Personal.ExtraServices[].RemainingUses
Remaining uses available.
How uses are measured: "Minutes", "Days", "Weeks", "Months", "Uses", or "FourWeekMonths".
true when granted by an active plan subscription.
ISO 8601 expiry datetime. null if it does not expire.
Time pass allowances granted by active plans.
Unique identifier for the time pass record.
Personal.TimePasses[].TimePass.Id
Identifier of the time pass type.
Personal.TimePasses[].TimePass.Name
Display name of the time pass.
Personal.TimePasses[].TotalUses
Total number of uses granted. null for unlimited passes.
Personal.TimePasses[].RemainingUses
Remaining uses. null for unlimited passes.
Personal.TimePasses[].Used
true when this specific time pass instance has been used.
Personal.TimePasses[].IsFromTariff
true when granted by an active plan subscription.
Personal.TimePasses[].ExpireDate
ISO 8601 expiry datetime. null if it does not expire.
Benefits shared with the customer’s team. Contains the same structure as Personal (BookingCredits, ExtraServices, TimePasses).
Example Response
{
"Personal": {
"BookingCredits": [
{
"Id": 5,
"Name": "Monthly Booking Allowance",
"TotalCredit": 200.0,
"RemainingCredit": 145.5,
"CaneBeUsedForBookings": true,
"CaneBeUsedForEvents": false,
"IsUniversalCredit": false,
"IsFromTariff": true,
"ExpireDate": "2026-04-30T23:59:59Z"
}
],
"ExtraServices": [],
"TimePasses": [
{
"Id": 12,
"TimePass": { "Id": 3, "Name": "Day Pass" },
"TotalUses": 5,
"RemainingUses": 3,
"Used": false,
"IsFromTariff": true,
"ExpireDate": null
}
]
},
"Team": {
"BookingCredits": [],
"ExtraServices": [],
"TimePasses": []
}
}
TypeScript Integration
import endpoints from '@/api/endpoints'
import { MyBenefits } from '@/types/public/billing/MyBenefits'
import { useData } from '@/api/fetchData'
import { createShape } from '@/helpers/shape-helper'
const shape = createShape<MyBenefits>()([
'Personal.BookingCredits.Id',
'Personal.BookingCredits.Name',
'Personal.BookingCredits.RemainingCredit',
'Personal.TimePasses.Id',
'Personal.TimePasses.TimePass.Name',
'Personal.TimePasses.RemainingUses',
])
const { resource: benefits } = useData<MyBenefits>(httpClient, endpoints.coworkers.benefits, {
shape: shape.fields,
})
Usage in Portal
| Context | Source file |
|---|
| My Plans page — benefits panel | src/views/user/plans/useMyBenefitsData.ts |
| Benefits display component | src/views/user/plans/components/MyBenefitsSection.tsx |
Error Responses
The bearer token is missing, expired, or invalid.
| Method | Endpoint | Description |
|---|
GET | /api/public/coworkers/profiles | List all profiles for the current session |
GET | /api/public/plans/my | List active plans for the current customer |
PUT | /api/public/coworkers/profiles/current | Switch the active profile |