Booking
This API allow users to sign up (book) and sign out (cancel) for fitness classes.
- Execute class booking
- List of available seat numbers to book
- Execute class cancel
- Execute private training booking
Execute class booking
POST Classes/BookClass
Signs up user for fitness class.
Employee mode parameters
Name | Type | Description |
---|---|---|
classId |
long |
Required. Class identifier. Request signs up user for fitness class identified with classId . |
userId |
long |
Required. User identifier. Request signs up user identified with userId for fitness class. |
seatNumber |
int |
When class allow book a seat number, you can pass specific seat number to book. Book given seat or first available. |
User mode parameters
Name | Type | Description |
---|---|---|
classId |
long |
Required. Class identifier. Request signs up authenticated user for fitness class identified by classId . |
seatNumber |
int |
When class allow book a seat number, you can pass specific seat number to book. Book given seat or first available. |
Response
Class details if booking is successful, or collection of errors with class booking error codes otherwise.
Employee mode example request
In this example we sign up user with id
= 40
for classes with id
= 1677
curl -i -X POST -H "Authorization: Bearer $ACCESS_TOKEN" http://yoursubdomain.perfectgym.com/Api/Classes/BookClass/ ?classId=1677 &userId=40
Example response
Status: 200 OK
{
"elements": [
{
"booked": true,
"attended": false,
"standby": false,
"userClassRating": "",
"userInstructorRating": "",
"classType": {
"id": 1,
"timestamp": 263952,
"name": "Box",
"photoUrl": "",
"iconUrl": "",
"description": "Box perfectly combines cardio and strength training under the guise of groove!",
"rating": {
"rating": 4.1,
"votesCount": 1234,
"rankingSort": 2.3
},
"category": {
"id": 2,
"category": "MIX",
"imageUrl": "https://yourdomain.perfectgym.pl/Api/Files/Photo?xxxxxxxxx",
"isDeleted": false,
"isProductRequiredForBooking": false,
"name": "Mix",
"timestamp": 1223165441
}
},
"instructor": {
"id": 52,
"timestamp": 376826,
"firstName": "Agatha",
"lastName": "Strickland",
"displayName": "Agatha Strickland",
"email": "a.strickland@cyberbotics.com",
"photoUrl": "",
"sex": "Female",
"rating": {
"rating": 4.7,
"votesCount": 1234,
"rankingSort": 3.3
},
"isActive": true,
"isDeleted": false
},
"club": {
"id": 2,
"timestamp": 271990,
"name": "Fibo Cyberbotics",
"shortName": "Cyberbotics",
"symbol": "FCBR",
"type": "Normal",
"openDate": "2015-01-01",
"latitude": 52.51038,
"longitude": 13.39763,
"email": "club@cyberbotics.com",
"phoneNumber": "+49 12 123 456 789",
"timezone": "Central European Standard Time",
"address": {
"line1": "Leipziger Str. 46/47",
"line2": "",
"city": "Berlin",
"postalCode": "10-117",
"country": "Germany"
},
"isDeleted": false,
"isHidden": false
},
"id": 1677,
"timestamp": 254718,
"isDeleted": false,
"startDate": "2015-12-03T06:15:00",
"endDate": "2015-12-03T07:15:00",
"attendeesCount": 7,
"attendeesLimit": 20,
"clubZone": "Fitness"
}
]
}
Example error response
Subsequent booking for class with id
=1677
and for user with id
= 40
generates following error:
Status: 400 Bad Request
{
"errors": [
{
"code": "ClassAlreadyBooked",
"property": "",
"message": ""
}
]
}
List of available seat numbers to book
GET Classes/AvailableSeatNumbers
Gets the list of available seat number to book.
Request parameters
Name | Type | Description |
---|---|---|
classId |
long |
Required. Class identifier. Request cancels user booking for fitness class identified by classId . |
Response
Example request
In this example we request about booking available seat numbers for class with id
= 1677
curl -i -X GET -H "Authorization: Bearer $ACCESS_TOKEN" http://yoursubdomain.perfectgym.com/Api/Classes/AvailableSeatNumbers ?classId=1677
Example response
Status: 200 OK
{
"elements": [
2,
3,
4,
7,
8
]
}
Execute class cancel
POST Classes/CancelBooking
Cancels user booking.
Employee mode parameters
Name | Type | Description |
---|---|---|
classId |
long |
Required. Class identifier. Request cancels user booking for fitness class identified by classId . |
userId |
long |
Required. User identifier. Request cancels user identified by userId booking for fitness class. |
User mode parameters
Name | Type | Description |
---|---|---|
classId |
long |
Required. Class identifier. Request cancels authenticated user booking for fitness class identified by classId . |
Response
Class details if class cancel is successful, or collection of errors with class cancel error codes otherwise.
Employee mode example request
In this example we cancel booking of user with id
= 40
for classes with id
= 1677
curl -i -X GET -H "Authorization: Bearer $ACCESS_TOKEN" http://yoursubdomain.perfectgym.com/Api/Classes/CancelBooking ?classId=1677 &userId=40
Example response
Status: 200 OK
{
"elements": [
{
"booked": false,
"attended": false,
"standby": false,
"userClassRating": "",
"userInstructorRating": "",
"classType": {
"id": 1,
"timestamp": 263952,
"name": "Box",
"photoUrl": "",
"iconUrl": "",
"description": "Box perfectly combines cardio and strength training under the guise of groove!",
"rating": {
"rating": 4.1,
"votesCount": 1234,
"rankingSort": 2.3
},
"category": {
"id": 2,
"category": "MIX",
"imageUrl": "https://yourdomain.perfectgym.pl/Api/Files/Photo?xxxxxxxxx",
"isDeleted": false,
"isProductRequiredForBooking": false,
"name": "Mix",
"timestamp": 1223165441
}
},
"instructor": {
"id": 52,
"timestamp": 376826,
"firstName": "Agatha",
"lastName": "Strickland",
"displayName": "Agatha Strickland",
"email": "a.strickland@cyberbotics.com",
"photoUrl": "",
"sex": "Female",
"rating": {
"rating": 4.7,
"votesCount": 1234,
"rankingSort": 3.3
},
"isActive": true,
"isDeleted": false
},
"club": {
"id": 2,
"timestamp": 271990,
"name": "Fibo Cyberbotics",
"shortName": "Cyberbotics",
"symbol": "FCBR",
"type": "Normal",
"openDate": "2015-01-01",
"latitude": 52.51038,
"longitude": 13.39763,
"email": "club@cyberbotics.com",
"phoneNumber": "+49 12 123 456 789",
"timezone": "Central European Standard Time",
"address": {
"line1": "Leipziger Str. 46/47",
"line2": "",
"city": "Berlin",
"postalCode": "10-117",
"country": "Germany"
},
"isDeleted": false,
"isHidden": false
},
"id": 1677,
"timestamp": 254718,
"isDeleted": false,
"startDate": "2015-12-03T06:15:00",
"endDate": "2015-12-03T07:15:00",
"attendeesCount": 6,
"attendeesLimit": 20,
"clubZone": "Fitness"
}
]
}
Example error response
Subsequent cancel for class with id
=1677
and for user with id
= 40
generates following error:
Status: 400 Bad Request
{
"errors": [
{
"code": "ClassNotBooked",
"property": "",
"message": ""
}
]
}
Execute private training booking
POST Classes/BookClass/PersonalTraining
Signs up user for fitness personal training.
User mode parameters
Name | Type | Description |
---|---|---|
title |
string |
Required. Reservation title. |
startDate |
datetime |
Required. Reservation starting time. |
endDate |
datetime |
Required. Reservation for a specific time . |
clubId |
long |
Required. Club identifier. |
employeeId |
long |
Required. Employee identifier. Employee leading personal training |
description |
string |
Reservation comment |
clubZoneId |
long |
Club zone identifier. |
productId |
long |
Product identifier. Product bought by user, related to personal training |
User mode example request
In this example we sign up user for personal training with specific employee id
= 1677
curl -X POST -H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" -d '{ "title": "Reservation", "startDate": "2015-12-03T06:15:00", "endDate": "2015-12-03T08:15:00", "clubId": 1, "employeeId": "1677", "clubZoneId": 12 }' http://yoursubdomain.perfectgym.com/Api/Classes/BookClass/PersonalTraining
Example response
Status: 200 OK
{
"elements": [
{
"id": "1324465",
"name": "Reservation",
"startDate": "2015-12-03T06:15:00",
"endDate": "2015-12-03T08:15:00",
"comments": "null",
"clubId": "12",
"employeeId": "1677",
"clubZoneId": "null",
"productId": "null",
"userId": "1",
"isCompleted": "false",
"isCancelled": "false",
"deliveries": "[]"
}
]
}