Appointment, bookable appointment and slots operations
PerfectGym Next API (1.8.3)
- Appointment, bookable appointment and slots operations
- Redeem checkin vouchers
- Class and slots operations
- Cross studio operations
- Get customers and contracts
- Retrieve customer accounting details
- Retrieve customer communication details
- Get device information
- Employee operations
- Debt collection operations
- Manage membership contracts
- Membership operations
- Payment operations
- Get studio information
- Get trial offers information
https://open-api-demo.open-api.perfectgym.com/
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes?offset=0&sliceSize=50' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'{ "result": [ { … } ], "hasNext": true, "offset": "1234567890" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/{classId}
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/{classId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/{classId}' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'{ "id": 1001, "title": "Mission Beach body", "type": "STUDIO", "duration": 45, "category": "Fitness", "description": "Get your body ready for beaches", "imgUrl": "string", "bookable": true }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/slots
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/slots
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/slots?daysAhead=1&slotWindowStartDate=2019-08-24&offset=0&sliceSize=50' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
List of class slots
Class slot start date and time with zone
Class slot end date and time with zone
Class slot earliest booking date and time with zone
Class slot latest booking date and time with zone
Maximum number of waiting list participants allowed for a class slot
Current number of booked participants of a class slot
Additional participants added by the operator
{ "result": [ { … } ], "hasNext": true, "offset": "1234567890" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/{classId}/slots
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/{classId}/slots
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/{classId}/slots?offset=0&sliceSize=50' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
List of class slots
Class slot start date and time with zone
Class slot end date and time with zone
Class slot earliest booking date and time with zone
Class slot latest booking date and time with zone
Maximum number of waiting list participants allowed for a class slot
Current number of booked participants of a class slot
Additional participants added by the operator
{ "result": [ { … } ], "hasNext": true, "offset": "1234567890" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/{classId}/slots/{classSlotId}
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/{classId}/slots/{classSlotId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/{classId}/slots/{classSlotId}' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
Class slot start date and time with zone
Class slot end date and time with zone
Class slot earliest booking date and time with zone
Class slot latest booking date and time with zone
Maximum number of waiting list participants allowed for a class slot
Additional participants added by the operator
{ "id": 1001, "startDateTime": "2022-06-22T08:00:00.000+02:00[Europe/Berlin]", "endDateTime": "2022-06-22T09:00:00.000+02:00[Europe/Berlin]", "classInformation": { "id": 1001, "title": "Mission Beach body" }, "instructors": [ { … } ], "location": { "id": 203, "name": "Room 1", "description": "Room located behind reception" }, "earliestBookingDateTime": "2022-06-15T00:00:00.000+02:00[Europe/Berlin]", "latestBookingDateTime": "2022-06-15T23:59:59.999+02:00[Europe/Berlin]", "maxParticipants": 25, "maxWaitingListParticipants": 5, "bookedParticipants": 25, "additionalParticipants": 5, "waitingListParticipants": 2 }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/book
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/booking/book
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/book \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"customerId": 203,
"classSlotId": 20334
}'OK
Status of the class slot booking
| Enum Value | Description |
|---|---|
| BOOKED | Customer is successfully booked |
| CANCELED | Customer booking is canceled |
| BOOKED_WITH_CONFIRMATION_REQUIRED | Customer is booked, but booking confirmation is required |
| WAITING_LIST | Customer is assigned to waiting list |
The status of a class slot
| Enum Value | Description |
|---|---|
| COMPLETED | The class slot is completed. |
| CANCELED | The class slot is canceled. |
| PLANNED | The class slot is planned. |
{ "bookingId": 2033, "bookingStatus": "BOOKED", "classSlotId": 14928, "classId": 14928, "customerId": 14925548, "classSlotStatus": "COMPLETED", "participantStatus": "PARTICIPATING" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/validate
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/booking/validate
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X POST \
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/validate \
-H 'Content-Type: application/json' \
-H 'X-API-KEY: YOUR_API_KEY_HERE' \
-d '{
"customerId": 203,
"classSlotId": 20334
}'OK
Status of the booking validation
| Enum Value | Description |
|---|---|
| AVAILABLE | Booking is possible |
| NO_CONTINGENT | Customer doesn't have required contingent |
| BOOKING_LIMIT_REACHED | Waiting List/Max participant list exceeded |
| CUSTOMER_ALREADY_BOOKED | Customer already added to class slot |
| CUSTOMER_IDLE | Customer has an idle period during the time of the class slot |
| STUDIO_CLOSED | Studio is closed during period |
| CUSTOMER_IN_OTHER_BOOKING | Customer has other bookings in this period |
| DATE_TIME_BEFORE_EARLIEST_BOOKING_DATE_TIME | Date and time are before earliest possible booking date |
| NOT_AVAILABLE | Booking is not possible for other reasons |
| DISPLAY_ONLY | Class is display only |
{ "validationStatus": "AVAILABLE" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/{bookingId}
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/booking/{bookingId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/{bookingId}' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
Status of the class slot booking
| Enum Value | Description |
|---|---|
| BOOKED | Customer is successfully booked |
| CANCELED | Customer booking is canceled |
| BOOKED_WITH_CONFIRMATION_REQUIRED | Customer is booked, but booking confirmation is required |
| WAITING_LIST | Customer is assigned to waiting list |
The status of a class slot
| Enum Value | Description |
|---|---|
| COMPLETED | The class slot is completed. |
| CANCELED | The class slot is canceled. |
| PLANNED | The class slot is planned. |
{ "bookingId": 2033, "bookingStatus": "BOOKED", "classSlotId": 14928, "classId": 14928, "customerId": 14925548, "classSlotStatus": "COMPLETED", "participantStatus": "PARTICIPATING" }
- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/{bookingId}
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/booking/{bookingId}
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X DELETE \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/booking/{bookingId}' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'- Demo tenant
https://open-api-demo.open-api.perfectgym.com/v1/classes/booking
- Mock server
https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/v1/classes/booking
- curl
- JavaScript
- Node.js
- Python
- Java
- C#
- PHP
- Go
- Ruby
- R
- Payload
curl -i -X GET \
'https://open-api-demo.open-api.perfectgym.com/v1/classes/booking?customerId=0' \
-H 'X-API-KEY: YOUR_API_KEY_HERE'OK
Status of the class slot booking
| Enum Value | Description |
|---|---|
| BOOKED | Customer is successfully booked |
| CANCELED | Customer booking is canceled |
| BOOKED_WITH_CONFIRMATION_REQUIRED | Customer is booked, but booking confirmation is required |
| WAITING_LIST | Customer is assigned to waiting list |
The status of a class slot
| Enum Value | Description |
|---|---|
| COMPLETED | The class slot is completed. |
| CANCELED | The class slot is canceled. |
| PLANNED | The class slot is planned. |
The status of a participant
| Enum Value | Description |
|---|---|
| PARTICIPATING | The customer is participating. |
| UNSET | The participation status is not set. |
| NOT_PARTICIPATING | The customer is not participating. |
[ { "bookingId": 2033, "bookingStatus": "BOOKED", "classSlotId": 14928, "classId": 14928, "customerId": 14925548, "classSlotStatus": "COMPLETED", "participantStatus": "PARTICIPATING" } ]