List Products
const url = 'https://api.exolink.cloud/product';const options = { method: 'GET', headers: { 'x-exo-fields': '["id","displayName"]', 'x-exo-filter': '["eq","profileId",3]', 'x-exo-sort': '["asc","displayName"]', Authorization: 'Bearer <token>' }};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.exolink.cloud/product \ --header 'Authorization: Bearer <token>' \ --header 'x-exo-fields: ["id","displayName"]' \ --header 'x-exo-filter: ["eq","profileId",3]' \ --header 'x-exo-sort: ["asc","displayName"]'Get list of available products and pricing
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Header Parameters
Section titled “Header Parameters”JSON array of the fields to return
Example
["id","displayName"]JSON filter expression [operator, field, value]. Operators: eq, ne, gt, gte, lt, lte, in, nin,
like, ilike, nlike, nilike, null, nnull, and eqc, nec, gtc, gtec, ltc, ltec to compare two fields.
Combine expressions with ["and", ...] or ["or", ...].
Example
["eq","profileId",3]Page number, starting at 1. Applies together with x-exo-size.
Page size. Every returned row then carries __total, the number of matching rows.
JSON sort [direction, field] with direction asc or desc, or a list of them
Example
["asc","displayName"]Responses
Section titled “Responses”List of products
object
Unique identifier for the product
Internal product name
Display name for the product
Product description
Product type
Whether the product is currently active and available for purchase
Price in cents
Product metadata including type, limits, and features
object
Product type (addon or connect subscription)
Icon identifier for UI
Translation key for product name
Usage limit for the product
Maximum number of chargers allowed (empty = unlimited)
Whether promotion codes can be applied
Whether product can be used without booking (trial period)
Show special offer ribbon in UI
Example
[ { "id": 1, "name": "connect_basic", "displayName": "Connect Basic", "type": "connect", "price": 2900, "metadata": { "type": "addon", "active": "true", "allowPromotion": "true", "freePeriod": "true", "ribbon": "true" } }]Missing, invalid or expired credentials
Error response. Some rejections carry only message.
object
Error message
Error code
Failed validations, for requests checked against a schema
object
Path of the invalid field
Example
{ "message": "Not authorized", "errorCode": "ERR_API_NOT_AUTHORIZED"}The caller may not perform this action
Error response. Some rejections carry only message.
object
Error message
Error code
Failed validations, for requests checked against a schema
object
Path of the invalid field
Example
{ "message": "Forbidden", "errorCode": "ERR_API_FORBIDDEN"}