The Orbit4 API is a public-facing API intended to be used by Orbit4 partners to enable their customers to use the Orbit4 platform while ensuring seamless data synchronization with their respective systems.
This API is structured according to key RESTful principles, selectively incorporating guidelines from the JSON API Specification. We accept request data for POST
and PUT
methods in two formats: application/x-www-form-urlencoded
and application/json
. Every response from the API, including error notifications, is formatted in JSON.
When errors occur, they are signaled through a specific HTTP status code accompanied by an error object in the response. This object contains a distinctive error code as a string and a user-friendly message, designed to be easily understood by end users.
To authenticate requests, include an Authorization
header with the value "Bearer {YOUR_AUTH_KEY}"
.
All authenticated endpoints are marked with a requires authentication
badge in the documentation below.
You can retrieve your token by navigating to the API Tokens section within your profile menu and then clicking on Generate API Token.
The following set of endpoints are engineered for efficient management of your clubs' asset registers on the Orbit4 platform. They simplify the process of creating, updating, and even deleting assets that are no longer needed within your gym operator accounts. The main purpose of these operations is facilitating the synchronization of your system's assets with Orbit4.
This endpoint allows you to search for assets within the specified gym operator account. You can filter the results by club specifying the user_id and other optional parameters.
The ID of the gym operator the assets belong to.
Search for assets by qr_code, brand, range, or product name.
Filter assets by qr code.
Results can be sorted by the following fields:
The default sorting order is ascending, but the direction can be reversed by prefixing a dash (-) like so: ?sort=-id
Filter results by metadata. Replace metadata_key with the key of the metadata you want to filter by.
The page number of results to be returned.
The number of results to be returned for each page of results.
curl --request GET \
--get "https://api.orbit4.org/v1/assets?user_id=2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 53
{
"data": [
{
"id": 1,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-513",
"serial_number": "MSN-603",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,964.15",
"fitness_product": 0,
"has_odometer": 1,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 2,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-927",
"serial_number": "MSN-321",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,753.35",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 3,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-247",
"serial_number": "MSN-238",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,828.42",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 4,
"brand": "Precor",
"range": "C-Line Strength",
"product": "Chest Press",
"product_id": 3,
"qr_code": "O4-043",
"serial_number": "MSN-124",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,104.03",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£913.95",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 5,
"brand": "Life Fitness",
"range": "IC7 Spin Bike",
"product": "Studio Bike",
"product_id": 1,
"qr_code": "O4-427",
"serial_number": "MSN-719",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,609.74",
"fitness_product": 0,
"has_odometer": 1,
"residual_price": "£575.32",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 6,
"brand": "Technogym",
"range": "Excite JOG 700 LED",
"product": "Treadmill",
"product_id": 4,
"qr_code": "O4-923",
"serial_number": "MSN-717",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,368.87",
"fitness_product": 1,
"has_odometer": 1,
"residual_price": "£334.10",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 7,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-748",
"serial_number": "MSN-015",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£3,570.45",
"fitness_product": 1,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 8,
"brand": "Technogym",
"range": "Excite JOG 700 LED",
"product": "Treadmill",
"product_id": 4,
"qr_code": "O4-081",
"serial_number": "MSN-585",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£6,773.51",
"fitness_product": 1,
"has_odometer": 0,
"residual_price": "£334.10",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 9,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-429",
"serial_number": "MSN-628",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,982.36",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 10,
"brand": "Precor",
"range": "C-Line Strength",
"product": "Chest Press",
"product_id": 3,
"qr_code": "O4-538",
"serial_number": "MSN-174",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£2,267.24",
"fitness_product": 1,
"has_odometer": 1,
"residual_price": "£913.95",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"links": {
"first": "https://api.orbit4.org/v1/assets?page=1",
"last": "https://api.orbit4.org/v1/assets?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api.orbit4.org/v1/assets?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://api.orbit4.org/v1/assets",
"per_page": 25,
"to": 10,
"total": 10
}
}
This endpoint allows you to retrieve details of a specific asset by their ID.
The ID of the asset.
curl --request GET \
--get "https://api.orbit4.org/v1/assets/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 52
{
"data": {
"id": 2,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-927",
"serial_number": "MSN-321",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,753.35",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
}
}
This endpoint allows you to add a new asset to the gym operator account. The user_id must be specified when adding a new asset.
curl --request POST \
"https://api.orbit4.org/v1/assets" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"user_id\": 2,
\"qr_code\": \"O4-123456\",
\"serial_number\": \"123456\",
\"installation_date\": \"2025-01-20\",
\"manufacturing_date\": \"2025-01-20\",
\"warranty_end_date\": \"2025-01-20\",
\"brand\": \"Life Fitness\",
\"range\": \"Signature Series\",
\"product\": \"Chest Press\",
\"product_id\": 1,
\"metadata\": \"{\\\"integration_id\\\":\\\"ABC123\\\"}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 51
{
"data": {
"id": 16,
"brand": "Life Fitness",
"range": "IC7 Spin Bike",
"product": "Studio Bike",
"product_id": 1,
"qr_code": "O4-123456",
"serial_number": "123456",
"installation_date": "20/01/2025",
"manufacturing_date": "20/01/2025",
"warranty_end_date": "20/01/2025",
"current_spend": "£0",
"max_spend": "£0",
"fitness_product": null,
"has_odometer": null,
"residual_price": "£412.16",
"image": null,
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:19+00:00"
}
}
This endpoint allows you to update details of a specific asset by their ID. Only the fields that need to be updated should be provided.
The ID of the asset.
curl --request PUT \
"https://api.orbit4.org/v1/assets/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"qr_code\": \"O4-123456\",
\"serial_number\": \"123456\",
\"installation_date\": \"2025-01-20\",
\"manufacturing_date\": \"2025-01-20\",
\"warranty_end_date\": \"2025-01-20\",
\"brand\": \"Life Fitness\",
\"range\": \"Signature Series\",
\"product\": \"Chest Press\",
\"product_id\": 1,
\"metadata\": \"{\\\"integration_id\\\":\\\"ABC123\\\"}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 50
{
"data": {
"id": 2,
"brand": "Life Fitness",
"range": "IC7 Spin Bike",
"product": "Studio Bike",
"product_id": 1,
"qr_code": "O4-123456",
"serial_number": "123456",
"installation_date": "20/01/2025",
"manufacturing_date": "20/01/2025",
"warranty_end_date": "20/01/2025",
"current_spend": "£0",
"max_spend": "£4,753.35",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£412.16",
"image": null,
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:18+00:00"
}
}
This endpoint allows you to delete a specific asset from your account by their ID.
The ID of the asset.
curl --request DELETE \
"https://api.orbit4.org/v1/assets/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 49
[Empty response]
The following set of endpoints are designed to facilitate the management of your service contracts between your gym operators and service providers on the Orbit4 platform. They simplify the process of searching and creating contracts.
This endpoint allows you to search for contracts within the specified user account. You can filter the results by gym operator, service provider or a specific asset.
The ID of the gym operator the service contract belong to.
The ID of the service provider the service contract belong to.
The ID of asset to filter contracts by.
Filter results by active/expired contracts.
Results can be sorted by the following fields:
The default sorting order is ascending, but the direction can be reversed by prefixing a dash (-) like so: ?sort=-id
Filter results by metadata. Replace metadata_key with the key of the metadata you want to filter by.
The page number of results to be returned.
The number of results to be returned for each page of results.
curl --request GET \
--get "https://api.orbit4.org/v1/contracts?gym_operator_id=2&service_provider_id=4&asset_id=1&active=1" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 48
{
"data": [
{
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"links": {
"first": "https://api.orbit4.org/v1/contracts?page=1",
"last": "https://api.orbit4.org/v1/contracts?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api.orbit4.org/v1/contracts?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://api.orbit4.org/v1/contracts",
"per_page": 25,
"to": 1,
"total": 1
}
}
This endpoint allows you to create a new contract between a gym operator and a service provider.
curl --request POST \
"https://api.orbit4.org/v1/contracts" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"gym_operator_id\": 2,
\"service_provider_id\": 3,
\"start_date\": \"2025-01-20\",
\"type\": \"Full Annual\",
\"assets\": [
1
],
\"metadata\": \"{\\\"integration_id\\\":\\\"ABC123\\\"}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 47
{
"data": {
"id": 2,
"number": "WSGE1",
"type": "Full Annual",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 3,
"first_name": "Mason",
"last_name": "Terry",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "Notthing Hill Gate",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-20",
"end_date": "2026-01-20",
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:19+00:00"
}
}
This endpoint allows you to retrieve details of a specific contract by their ID.
The ID of the contract.
curl --request GET \
--get "https://api.orbit4.org/v1/contracts/1" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 46
{
"data": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"assets": [
{
"id": 1,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-513",
"serial_number": "MSN-603",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,964.15",
"fitness_product": 0,
"has_odometer": 1,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 2,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-927",
"serial_number": "MSN-321",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,753.35",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 3,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-247",
"serial_number": "MSN-238",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,828.42",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 4,
"brand": "Precor",
"range": "C-Line Strength",
"product": "Chest Press",
"product_id": 3,
"qr_code": "O4-043",
"serial_number": "MSN-124",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,104.03",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£913.95",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 5,
"brand": "Life Fitness",
"range": "IC7 Spin Bike",
"product": "Studio Bike",
"product_id": 1,
"qr_code": "O4-427",
"serial_number": "MSN-719",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,609.74",
"fitness_product": 0,
"has_odometer": 1,
"residual_price": "£575.32",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 6,
"brand": "Technogym",
"range": "Excite JOG 700 LED",
"product": "Treadmill",
"product_id": 4,
"qr_code": "O4-923",
"serial_number": "MSN-717",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£4,368.87",
"fitness_product": 1,
"has_odometer": 1,
"residual_price": "£334.10",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 7,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-748",
"serial_number": "MSN-015",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£3,570.45",
"fitness_product": 1,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 8,
"brand": "Technogym",
"range": "Excite JOG 700 LED",
"product": "Treadmill",
"product_id": 4,
"qr_code": "O4-081",
"serial_number": "MSN-585",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£6,773.51",
"fitness_product": 1,
"has_odometer": 0,
"residual_price": "£334.10",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 9,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-429",
"serial_number": "MSN-628",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,982.36",
"fitness_product": 0,
"has_odometer": 0,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 10,
"brand": "Precor",
"range": "C-Line Strength",
"product": "Chest Press",
"product_id": 3,
"qr_code": "O4-538",
"serial_number": "MSN-174",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£2,267.24",
"fitness_product": 1,
"has_odometer": 1,
"residual_price": "£913.95",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
}
}
The following set of endpoints are designed to facilitate the management of media files within the different resources.
This endpoint allows you to upload media files to the specified resource. Some media types are single-use, meaning that only one media file can be uploaded for that type on that resource. If a media file already exists for the specified type, it will be replaced with the new one.
curl --request POST \
"https://api.orbit4.org/v1/media" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: multipart/form-data" \
--form "type=image"\
--form "resource_id=1"\
--form "resource_type=ticket"\
--form "file=@/tmp/phpoMlo2n"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 40
{
"data": {
"id": 3,
"url": "https://cdn.orbit4.org/uploads/32990678eaadc7df784.95312653.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:20+00:00"
}
}
This endpoint allows you to upload media metadata to the specified resource.
The ID of the media file.
curl --request PUT \
"https://api.orbit4.org/v1/media/2" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"extra_properties\": \"{\\\"approved\\\":true}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 39
{
"data": {
"id": 2,
"url": "https://cdn.orbit4.org/uploads/quote.pdf",
"type": "quote",
"extra_properties": {
"approved": true
},
"created_at": "2025-01-20T19:58:19+00:00"
}
}
The following set of endpoints are designed to facilitate the management of ticket notes. accounts.
This endpoint allows you to create a new note for the specified ticket.
curl --request POST \
"https://api.orbit4.org/v1/notes" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"user_id\": 2,
\"ticket_id\": 1,
\"note\": \"Can you please provide more details about the issue?\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 41
{
"data": {
"id": 10,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Can you please provide more details about the issue?",
"is_system": false,
"created_at": "2025-01-20T19:58:20+00:00"
}
}
The following set of endpoints are designed to facilitate the management of tickets within your different user accounts. They allow you to search for tickets, fetch specific ticket details, create new tickets, update ticket details, and even change tickets' status. The main purpose of these operations is facilitating the synchronization of your system's tickets with Orbit4.
This endpoint allows you to search for tickets based on specified criteria. The search results will include all tickets that match the criteria.
The ID of the user for whom the tickets are being fetched.
Search for tickets by ticket_number or description.
Filter tickets by their type.
Must be one of:standard
ad-hoc
internal
service
Filter tickets by their status.
Must be one of:open
parts_required
engineer_deployed
closed
Results can be sorted by the following fields:
The default sorting order is ascending, but the direction can be reversed by prefixing a dash (-) like so: ?sort=-id
Filter results by metadata. Replace metadata_key with the key of the metadata you want to filter by.
The page number of results to be returned.
The number of results to be returned for each page of results.
curl --request GET \
--get "https://api.orbit4.org/v1/tickets?user_id=2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 45
{
"data": [
{
"id": 1,
"number": "WSGE123-001",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 1,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 2,
"number": "WSGE123-002",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [
{
"id": 1,
"url": "https://cdn.orbit4.org/uploads/image.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"images": [
{
"id": 1,
"url": "https://cdn.orbit4.org/uploads/image.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"notes": [
{
"id": 2,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 8,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Hey, this machine is now totally out of use. Can you come today?",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 9,
"user": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Sure, no problem, I'll deploy one of my technicians out to you now.",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 3,
"number": "WSGE123-003",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 3,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 4,
"number": "WSGE123-004",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "engineer_deployed",
"engineer_arrived_at": null,
"engineer_deployed_at": "2025-01-20T19:58:18+00:00",
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 4,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 5,
"number": "WSGE123-005",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "parts_required",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 5,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 6,
"number": "WSGE123-006",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "closed",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": "2025-01-20T19:58:18+00:00",
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 6,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 7,
"number": "WSGE123-007",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "closed",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": "2025-01-20T19:58:19+00:00",
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 7,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"links": {
"first": "https://api.orbit4.org/v1/tickets?page=1",
"last": "https://api.orbit4.org/v1/tickets?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api.orbit4.org/v1/tickets?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://api.orbit4.org/v1/tickets",
"per_page": 25,
"to": 7,
"total": 7
}
}
This endpoint allows you to raise a new ticket from the specified sender to the specified recipient account. The ticket will be created with the provided details and assigned to the specified user.
curl --request POST \
"https://api.orbit4.org/v1/tickets" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: multipart/form-data" \
--form "sender_id=2"\
--form "recipient_id=4"\
--form "asset_id=1"\
--form "type=standard"\
--form "description=The treadmill is broken. Please fix it."\
--form "priority=Faulty"\
--form "metadata={"integration_id":"ABC123"}"\
--form "images[]=@/tmp/phpELMcOQ"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 44
{
"data": {
"id": 8,
"number": "WSGE123-008",
"type": "standard",
"description": "The treadmill is broken. Please fix it.",
"priority": "Faulty",
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": {
"id": 1,
"brand": "Hammer Strength",
"range": "Plateloaded Iso-Lateral",
"product": "Seated Leg Press",
"product_id": 5,
"qr_code": "O4-513",
"serial_number": "MSN-603",
"installation_date": "20/01/2022",
"manufacturing_date": "20/01/2021",
"warranty_end_date": "20/01/2027",
"current_spend": "£0",
"max_spend": "£5,964.15",
"fitness_product": 0,
"has_odometer": 1,
"residual_price": "£247.91",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [
{
"id": 3,
"url": "https://cdn.orbit4.org/uploads/29710678eaadbe0e787.47384013.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"images": [
{
"id": 3,
"url": "https://cdn.orbit4.org/uploads/29710678eaadbe0e787.47384013.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"notes": [
{
"id": 10,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 11,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "The treadmill is broken. Please fix it.",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 12,
"user": {
"id": 1,
"first_name": "Finn",
"last_name": "Zieme",
"email": "[email protected]",
"role": "club_admin",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:15+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:15+00:00"
},
"note": "Image Uploaded",
"is_system": true,
"created_at": "2025-01-20T19:58:20+00:00"
}
],
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:19+00:00"
}
}
This endpoint allows you to retrieve details of a specific ticket by their ID. The returned details include the ticket's status, assigned user, and other relevant information.
The ID of the ticket.
curl --request GET \
--get "https://api.orbit4.org/v1/tickets/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 43
{
"data": {
"id": 2,
"number": "WSGE123-002",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [
{
"id": 1,
"url": "https://cdn.orbit4.org/uploads/image.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"images": [
{
"id": 1,
"url": "https://cdn.orbit4.org/uploads/image.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"notes": [
{
"id": 2,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 8,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Hey, this machine is now totally out of use. Can you come today?",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 9,
"user": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Sure, no problem, I'll deploy one of my technicians out to you now.",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
}
}
This endpoint allows you to update details of a specific ticket by their ID. Only the fields that need to be updated should be provided.
The ID of the ticket.
curl --request PUT \
"https://api.orbit4.org/v1/tickets/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"status\": \"closed\",
\"priority\": \"Faulty\",
\"metadata\": \"{\\\"integration_id\\\":\\\"ABC123\\\"}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 42
{
"data": {
"id": 2,
"number": "WSGE123-002",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "closed",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": "2025-01-20T19:58:20+00:00",
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [
{
"id": 1,
"url": "https://cdn.orbit4.org/uploads/image.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"images": [
{
"id": 1,
"url": "https://cdn.orbit4.org/uploads/image.jpg",
"type": "image",
"extra_properties": null,
"created_at": "2025-01-20T19:58:19+00:00"
}
],
"notes": [
{
"id": 2,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
},
{
"id": 8,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Hey, this machine is now totally out of use. Can you come today?",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 9,
"user": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Sure, no problem, I'll deploy one of my technicians out to you now.",
"is_system": false,
"created_at": "2025-01-20T19:58:19+00:00"
},
{
"id": 10,
"user": {
"id": 1,
"first_name": "Finn",
"last_name": "Zieme",
"email": "[email protected]",
"role": "club_admin",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:15+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:15+00:00"
},
"note": "Ticket Closed",
"is_system": true,
"created_at": "2025-01-20T19:58:20+00:00"
}
],
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:18+00:00"
}
}
The following set of endpoints provide a comprehensive suite of tools for managing your users within your account. They are designed to handle a variety of operations, from searching for users based on specific roles, fetching detailed information about individual users, creating new users, updating existing user details, and even removing users from your account when no longer needed. The main purpose of these operations is facilitating the synchronization of your system's users with Orbit4.
This endpoint retrieves users associated with your account. The user role must be specified to fetch users of a specific role in the system. For users that are part of a parent account (like engineers and ticket admins), the parent_id parameter must be provided.
Search for users by first name, last name, company name, site name or email address.
Filter users by their parent account. This field is required when querying engineers or ticket admins.
Filter users by role.
Must be one of:gym_operator
service_provider
engineer
ticket_admin
Results can be sorted by the following fields:
The default sorting order is ascending, but the direction can be reversed by prefixing a dash (-) like so: ?sort=-id
Filter results by metadata. Replace metadata_key with the key of the metadata you want to filter by.
The page number of results to be returned.
The number of results to be returned for each page of results.
curl --request GET \
--get "https://api.orbit4.org/v1/users?role=gym_operator" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 59
{
"data": [
{
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
{
"id": 3,
"first_name": "Mason",
"last_name": "Terry",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "Notthing Hill Gate",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
}
],
"links": {
"first": "https://api.orbit4.org/v1/users?page=1",
"last": "https://api.orbit4.org/v1/users?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "« Previous",
"active": false
},
{
"url": "https://api.orbit4.org/v1/users?page=1",
"label": "1",
"active": true
},
{
"url": null,
"label": "Next »",
"active": false
}
],
"path": "https://api.orbit4.org/v1/users",
"per_page": 25,
"to": 2,
"total": 2
}
}
This endpoint allows you to retrieve details of a specific user by their ID.
The ID of the user.
curl --request GET \
--get "https://api.orbit4.org/v1/users/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 59
{
"data": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
}
}
This endpoint allows you to add a new user to your account. The user role must be specified when creating a new user.
And the parent_id parameter must be provided for users that are part of a parent account (like engineers and ticket admins).
curl --request POST \
"https://api.orbit4.org/v1/users" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"first_name\": \"nbmjw\",
\"last_name\": \"uhxdyvxqwckvrhqyk\",
\"email\": \"[email protected]\",
\"site_name\": \"bgoncihrceevhvtj\",
\"language\": \"de\",
\"role\": \"gym_operator\",
\"metadata\": \"{\\\"integration_id\\\":\\\"ABC123\\\"}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 58
{
"data": {
"id": 17,
"first_name": "nbmjw",
"last_name": "uhxdyvxqwckvrhqyk",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "bgoncihrceevhvtj",
"language": "de",
"email_verified_at": null,
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:19+00:00"
}
}
This endpoint allows you to update details of a specific user by their ID. Only the fields that need to be updated should be provided.
The ID of the user.
curl --request PUT \
"https://api.orbit4.org/v1/users/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json" \
--data "{
\"first_name\": \"qqzjgjhoziz\",
\"last_name\": \"kbxxhfbionue\",
\"site_name\": \"cynlywfcwgcwsxykvheip\",
\"language\": \"de\",
\"metadata\": \"{\\\"integration_id\\\":\\\"ABC123\\\"}\"
}"
cache-control
: no-cache, private
content-type
: application/json
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 57
{
"data": {
"id": 2,
"first_name": "qqzjgjhoziz",
"last_name": "kbxxhfbionue",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "cynlywfcwgcwsxykvheip",
"language": "de",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": {
"integration_id": "ABC123"
},
"created_at": "2025-01-20T19:58:16+00:00"
}
}
This endpoint allows you to delete a specific user from your account by their ID.
The ID of the user.
curl --request DELETE \
"https://api.orbit4.org/v1/users/2" \
--header "Authorization: Bearer client-admin-test-token" \
--header "Content-Type: application/json"
cache-control
: no-cache, private
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 56
[Empty response]
This endpoint allows you to link a user to a parent user account. i.e. link an engineer to a service provider account.
The ID of the parent user.
curl --request POST \
"https://api.orbit4.org/v1/users/3/link" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"child_id\": 5
}"
cache-control
: no-cache, private
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 55
[Empty response]
This endpoint allows you to unlink a user from a parent user account. i.e. unlink a ticket admin from a gym operator account.
The ID of the parent user.
curl --request POST \
"https://api.orbit4.org/v1/users/3/unlink" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}" \
--header "Content-Type: application/json" \
--data "{
\"child_id\": 7
}"
cache-control
: no-cache, private
x-ratelimit-limit
: 60
x-ratelimit-remaining
: 54
[Empty response]
To configure webhooks you need to navigate to the Webhooks section within your profile menu and then clicking on Create Webhook.
In this section, you can specify the URL to which the webhook will send the event payload. You also have the option to subscribe to specific events. When these events take place, the webhook will automatically dispatch an event payload to the designated URL. Upon creation, a unique secret key is generated. This key serves as a tool for verifying the webhook signature when it is processed on your end, ensuring that the request was genuinely initiated by Orbit4.
These are the list of events you can subscribe to:
This event is fired when a new asset is created. The payload contains the asset that was created.
Payload example:{
"event": "asset.created",
"data": {
"asset": {
"id": 1,
"brand": "Technogym",
"range": "Excite JOG 700 LED",
"product": "Treadmill",
"product_id": 4,
"qr_code": "O4-12345",
"serial_number": "1234567890",
"installation_date": null,
"manufacturing_date": null,
"warranty_end_date": null,
"current_spend": "£0",
"max_spend": "£0",
"fitness_product": null,
"has_odometer": null,
"residual_price": "£0",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when an asset is updated. The payload contains the asset that was updated.
Payload example:{
"event": "asset.updated",
"data": {
"asset": {
"id": 1,
"brand": "Technogym",
"range": "Excite JOG 700 LED",
"product": "Treadmill",
"product_id": 4,
"qr_code": "O4-12345",
"serial_number": "1234567890",
"installation_date": null,
"manufacturing_date": null,
"warranty_end_date": null,
"current_spend": "£0",
"max_spend": "£0",
"fitness_product": null,
"has_odometer": null,
"residual_price": "£0",
"image": null,
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when a new note is created. The payload contains the ticket that the note was created on and the note itself.
Payload example:{
"event": "note.created",
"data": {
"ticket": {
"id": 1,
"number": "WSGE123-001",
"type": "standard",
"description": null,
"priority": "Faulty",
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": {
"id": 1,
"number": "WSGE123",
"type": "",
"gym_operator": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"service_provider": {
"id": 4,
"first_name": "Roslyn",
"last_name": "Conn",
"email": "[email protected]",
"role": "service_provider",
"company": {
"id": 2,
"name": "The Gym Fixers",
"address": "2072 Lemke Ports Apt. 534",
"address_2": null,
"address_3": null,
"city": "Port Herta",
"country": "UK",
"postcode": "04103-3783",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": null,
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"active": true,
"start_date": "2025-01-19",
"end_date": "2026-01-19",
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"media": [],
"images": [],
"notes": [
{
"id": 1,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:18+00:00"
},
"note": {
"id": 1,
"user": {
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"role": "gym_operator",
"company": null,
"site_name": null,
"language": "en",
"email_verified_at": null,
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
},
"note": "The treadmill is broken. Please fix it.",
"is_system": false,
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when a ticket is closed. The payload contains the ticket that was closed.
Payload example:{
"event": "ticket.closed",
"data": {
"ticket": {
"id": 1,
"number": "WSGE123-001",
"type": "standard",
"description": "The treadmill is broken. Please fix it.",
"priority": null,
"status": "closed",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": "2025-01-20T19:58:21+00:00",
"service_provider": null,
"gym_operator": null,
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": null,
"media": [],
"images": [],
"notes": [
{
"id": 1,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when a ticket is created. The payload contains the ticket that was created.
Payload example:{
"event": "ticket.created",
"data": {
"ticket": {
"id": 1,
"number": "WSGE123-001",
"type": "standard",
"description": "The treadmill is broken. Please fix it.",
"priority": null,
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": null,
"gym_operator": null,
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": null,
"media": [],
"images": [],
"notes": [
{
"id": 1,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when a ticket is updated. The payload contains the ticket that was updated.
Payload example:{
"event": "ticket.updated",
"data": {
"ticket": {
"id": 1,
"number": "WSGE123-001",
"type": "standard",
"description": "The treadmill is broken. Please fix it.",
"priority": null,
"status": "open",
"engineer_arrived_at": null,
"engineer_deployed_at": null,
"closed_at": null,
"service_provider": null,
"gym_operator": null,
"ticket_admin": null,
"engineer": null,
"caretaker": null,
"asset": null,
"contract": null,
"media": [],
"images": [],
"notes": [
{
"id": 1,
"user": {
"id": 2,
"first_name": "Jett",
"last_name": "Ziemann",
"email": "[email protected]",
"role": "gym_operator",
"company": {
"id": 1,
"name": "PulseForge Fitness",
"address": "9409 Katelynn Circle",
"address_2": null,
"address_3": null,
"city": "North Wilburnland",
"country": "UK",
"postcode": "40117-2392",
"created_at": "2025-01-20T19:58:15+00:00"
},
"site_name": "London Bridge",
"language": "en",
"email_verified_at": "2025-01-20T19:58:16+00:00",
"metadata": [],
"created_at": "2025-01-20T19:58:16+00:00"
},
"note": "Ticket Raised",
"is_system": true,
"created_at": "2025-01-20T19:58:18+00:00"
}
],
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when a new user is created. The payload contains the user that was created.
Payload example:{
"event": "user.created",
"data": {
"user": {
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"role": "gym_operator",
"company": null,
"site_name": null,
"language": "en",
"email_verified_at": null,
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
This event is fired when a user is updated. The payload contains the user that was updated.
Payload example:{
"event": "user.updated",
"data": {
"user": {
"id": 1,
"first_name": "John",
"last_name": "Doe",
"email": "[email protected]",
"role": "gym_operator",
"company": null,
"site_name": null,
"language": "en",
"email_verified_at": null,
"metadata": [],
"created_at": "2025-01-20T19:58:21+00:00"
}
}
}
To ensure the integrity of the request, each webhook call is signed using the secret key provided when the webhook was configured. You should validate the secret to make sure the request is from Orbit4.
To verify the signature, you need to implement a verification process on the receiving end of the webhook call. This process should take the payload and the signature from the headers, and use the SHA256 algorithm to calculate the signature from the payload. If the calculated signature matches the signature from the headers, the request is verified.
Here's an example of how to do this:
def handle_webhook():
payload = request.get_data()
signature_from_headers = request.headers.get('X-Signature')
secret = 'my-webhook-secret'
calculated_signature = hmac.new(secret.encode(), payload, hashlib.sha256).hexdigest()
if not hmac.compare_digest(signature_from_headers, calculated_signature):
# 403, Invalid signature.
return;
if payload.event == 'ticket.created':
# Handle ticket created event...
# 200, Webhook received.
return;
Your server should respond to the webhook's POST request with a 2XX status code immediately after receiving the request. If the webhook request isn't acknowledged with a 2XX status code, Orbit4 will consider the webhook delivery a failure. In such cases, Orbit4 will try to send the webhook again.
As a best practice, we recommend storing the event payload upon receipt and processing it asynchronously. This approach prevents Orbit4 from repeatedly attempting to deliver the webhook due to immediate processing failures. By decoupling the receipt and processing of the webhook, you can enhance the reliability and efficiency of your webhook handling system.
If a webhook delivery fails, Orbit4 will retry sending the webhook. The retries begin with a 5-minute delay and subsequently double the waiting time after each failed attempt.
This pattern of increasing delays continues until the interval between retries reaches a maximum of 2 hours. Once this maximum delay is reached, any further retries that day occur at 2-hour intervals.
Orbit4 will make up to 13 attempts to deliver the webhook within a single day. If all attempts fail, the delivery is considered permanently unsuccessful for that day, and no further attempts will be made until the next scheduled event.