Endpoints

Classes

A class represents one of the gym’s classes, like "weightlifting" or "yoga". To show the class on the Gympass app and website, you need to create a slot that combines the class with a specific date and time it will occur. See slots session to see how to register a slot.


POST - Create

Creates a list of classes on a given gym.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes

Example Request
1curl --location --request POST '{{booking-api-url}}/booking/v1/gyms/1/classes' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}' \
4--data-raw '{
5 "classes": [
6 {
7 "name": "Cycle",
8 "description": "Our standard cycle classes",
9 "notes": "Notes of our standard cycle classes",
10 "bookable": true,
11 "visible": true,
12 "reference": "111",
13 "product_id": 1,
14 "categories": [1, 2]
15 }
16 ]
17}'

Request Params

FieldDescriptionTypeRequired
nameIt's the human-readable name of the class. Max of 255 characters.StringTrue
descriptionIt's the human-readable description of the class.StringTrue
notesThese are the human-readable notes that you can add to the class details.StringFalse
bookableIt indicates if the class can be reserved. Values: True or False.BooleanTrue
visibleIt indicates if the class is visible at Gympass app and website. Set this field to False if you want to hide the class for a while. If this is set to False, all related slots won’t be shown. Values: True or False.BooleanTrue
product_idIt's the product identifier at Gympass (yoga, swimming). If you don’t know this, please ask about it to your Gympass contact.IntTrue
referenceIt's a field used by the partner to link a class between Gympass Booking API and its integrated system.StringFalse
system_idId of partner's integrated system at Gympass.IntFalse
categoriesArray of IDs chosen from a list of categories provided by Gympass that specifies what kind of activity that class is about. (e.g. Yoga, Functional, Pilates...).List - IntFalse

Headers

FieldDescription
Content-Typeapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idIt's the identifier of the gym at Gympass. Provided by Gympass.

Response

Example Response
1{
2 "classes": [
3 {
4 "id": 1,
5 "name": "Cycle",
6 "reference": "111",
7 "links": [
8 {
9 "rel": "self",
10 "href": "gyms/1/classes/1"
11 }
12 ]
13 }
14 ]
15}

GET - List

GET a list of classes on a given gym.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes

Request Example
1curl --location --request GET '{{booking-api-url}}/booking/v1/gyms/1/classes' \
2--header 'Accept: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}'

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
Response Example
1{
2 "classes": [
3 {
4 "id": 1,
5 "name": "Cycle",
6 "slug": "cycle",
7 "description": "Our standard cycle classes",
8 "notes": "Notes",
9 "bookable": true,
10 "visible": true,
11 "product_id": 1,
12 "gym_id": 123,
13 "reference": "111",
14 "created_at": "2019-07-03T17:44:22Z[UTC]"
15 },
16 {
17 "id": 2,
18 "name": "Super Cycle",
19 "slug": "super-cycle",
20 "description": "Our super advanced cycle class",
21 "notes": "Notes",
22 "bookable": true,
23 "visible": true,
24 "product_id": 1,
25 "gym_id": 123,
26 "reference": "111",
27 "created_at": "2019-07-03T17:44:22Z[UTC]",
28 "categories": [
29 {
30 "id": 1,
31 "name": "Meditation",
32 "locale": "de"
33 }
34 ]
35 }
36 ]
37}

GET - Get

GET a specific class resource.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id?show-deleted=false

Request example
1curl --location --request GET '{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id?show-deleted=false' \
2--header 'Accept: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}'

Headers

FieldDescription
Content-Typeapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when creating a Class.

Query String Parameters

FieldDescription
show-deleted (Optional)true Shows the deleted class. false {default} Does not show the deleted class

show-deleted=true Will show the results for both Class_ids that have been deleted and that are non-deleted. show-deleted=false will only show non-deleted Class_ids

Response

Response Example
1{
2 "id": 1,
3 "name": "Judo",
4 "slug": "judo-class-with-lasers",
5 "description": "Description for judo classes.",
6 "notes": "Some pretty notes here.",
7 "bookable": true,
8 "visible": true,
9 "product_id": 1,
10 "gym_id": 1,
11 "reference": "111",
12 "created_at": "2019-07-03T17:44:22Z[UTC]",
13 "categories": [
14 {
15 "id": 1,
16 "name": "Meditation",
17 "locale": "de"
18 }
19 ],
20}

PUT - Update

Updates the class.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id

Request Example
1curl --location --request PUT '{{booking-api-url}}/booking/v1/gyms/1/classes/1' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}' \
4--data-raw '{
5 "name": "Super Cycle",
6 "description": "Our standard cycle classes",
7 "notes": "Notes of our standard cycle classes",
8 "bookable": true,
9 "visible": true,
10 "reference": "111",
11 "product_id": 1,
12 "categories": [1,2]
13}'

Request Params

FieldDescriptionTypeRequired
nameIt's the human-readable name of the class. Max of 255 characters.StringTrue
descriptionIt's the human-readable description of the class.StringTrue
notesThese are the human-readable notes that you can add to the class details.StringFalse
bookableIt indicates if the class can be reserved. Values: True or False.BooleanTrue
visibleIt indicates if the class is visible at Gympass app and website. Set this field to False if you want to hide the class for a while. If this is set to False, all related slots won’t be shown. Values: True or False.BooleanTrue
product_idIt's the product identifier at Gympass (yoga, swimming). If you don’t know this, please ask about it to your Gympass contact.IntTrue
referenceIt's a field used by the partner to link a class between Gympass Booking API and its integrated system.StringFalse
categoriesArray of IDs chosen from a list of categories provided by Gympass that specifies what kind of activity that class is about. (e.g. Yoga, Functional, Pilates...)List - IntFalse

Headers

FieldDescription
Content-Typeapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when create a Class.

Response

204 - No Content

Slots

A slot represents a class with specific date and time. For example, you can have a class called Yoga with a slot on Sunday at 9 AM and another slot on Monday at 8 AM.

A slot is always related to a class that was previously registered. See class session to find out how to register a class.

POST - Create

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots

Creates a slot on a given class.

Request Example
1curl --location --request POST '{{booking-api-url}}/booking/v1/gyms/1/classes/1/slots' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}' \
4--data-raw '{
5 "occur_date": "2019-07-30T10:00:00-05:00",
6 "room": "Room 1",
7 "status": 1,
8 "length_in_minutes": 60,
9 "total_capacity": 15,
10 "total_booked": 5,
11 "product_id": 1,
12 "booking_window": {
13 "opens_at": "2019-07-01T01:00:00-05:00",
14 "closes_at": "2019-07-30T09:00:00-05:00"
15 },
16 "instructors": [
17 {
18 "name": "Axel",
19 "substitute": false
20 },
21 {
22 "name": "Blaze",
23 "substitute": true
24 }
25 ],
26 "cancellable_until": "2019-07-29T20:00:00-05:00",
27 "rate": 4.5,
28 "virtual": true,
29 "virtual_class_url": "http://your_url.com"
30}'

Request Params

FieldDescriptionTypeRequired
occur_dateThe class slot time should be entered based on the location of the gym. Ex: 2019-07-30T10:00:00-05:00 will create a class on July 30th 10AM for a gym located in the East Coast timezone, UTC -5.DateTrue
roomIt's the human-readable room name at the gym. Max of 200 characters.StringFalse
statusIt’s the slot status. The default value is 1. Values: inactive = 0 or active = 1.IntFalse
length_in_minutesIt's the class duration in minutes. Max length duration is 180.IntTrue
total_capacityIt's the total capacity of users on a given class slot. For example, if you just have 10 bikes, you can set it to 10. Max total capacity is 32000.IntTrue
total_bookedIt's the total amount of bookings on a given class slot. Note that every time a class slot is booked through Gympass app and website or not, the best practice is that you update this information using this endpoint. This way we can always show properly the slots that you already have available, providing the best experience to the users.IntTrue
product_idIt's the product identifier at Gympass (yoga, swimming). If you don’t know this, please ask about it to your Gympass contact.IntTrue
cancellable_untilThe deadline used to control the early cancellation for the booking (without penalty). It should be entered based on the location of the gym. After that, it will be considered a late cancel. Ex: 2019-07-30T15:00:00-05:00.DateFalse
rateThe max rate is 5.0.DecimalFalse
booking_windowBooking window represents the date and time that a user can book a slot. If the user is outside of this range of dates and times they can’t book this slot. The booking window is composed of the "opens_at" and "closes_at" attributes explained below.DecimalFalse
      opens_atThe opening time to book a class slot. It should be entered based on the location of the gym. Ex: 2019-07-20T13:00:00-05:00. If none is informed, the slot will be available just after creation.DateFalse
      closes_atThe limit time to book a class slot. It should be entered based on the location of the gym. Ex: 2019-07-29T21:00:00-05:00. If none is informed the slot will be considered closed to be booked at occur_dateDateFalse
instructorsYou can set none or multiple instructors for a class slot. This represents a list of the instructors, and for each one you can send the instructor's "name" and whether they are a "substitute" or not, as explained below.ListFalse
      nameThe name of the instructor. Max of 100 characters.StringTrue
      substituteIndicates if it’s a substitute instructor. Values: True or False.BooleanTrue
virtualIndicates if the class slots is virtual or presential.BooleanFalse
virtual_class_urlIf this is a virtual class, you can put here the url that the user will need to use to access the class virtually.StringFalse

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when create a Class.

Response

201 - Created
1
2Public
3{
4 "metadata": {
5 "total": 1,
6 "errors": 0
7 },
8 "results": [
9 {
10 "id": 1,
11 "class_id": 1,
12 "occur_date": "2019-07-30T10:00:00-05:00",
13 "status": 1,
14 "room": "Room 1",
15 "length_in_minutes": 60,
16 "total_capacity": 15,
17 "total_booked": 5,
18 "product_id": 1,
19 "booking_window": {
20 "opens_at": "2019-07-01T01:00:00-05:00",
21 "closes_at": "2019-07-30T09:00:00-05:00"
22 },
23 "cancellable_until": "2019-07-29T20:00:00-05:00",
24 "instructors": [
25 {
26 "name": "Axel",
27 "substitute": false
28 },
29 {
30 "name": "Blaze",
31 "substitute": true
32 }
33 ],
34 "rate": 4.5,
35 "virtual": true,
36 "virtual_class_url": "http://your_url.com"
37 }
38 ]
39}

GET - Get

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots/:slot_id

Request example
1curl --location --request GET '{{booking-api-url}}/booking/gyms/1/classes/1/slots/1' \
2--header 'Accept: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}'

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when create a Class.
slot_idThe identifier of the slot at Gympass. Returned when create a Slot.

Response

200 - OK
1{
2 "id": 1,
3 "class_id": 1,
4 "occur_date": "2019-07-09T10:00:00-03:00",
5 "status": 1,
6 "room": "Room 1",
7 "length_in_minutes": 60,
8 "total_capacity": 15,
9 "total_booked": 5,
10 "product_id": 1,
11 "booking_window": {
12 "opens_at": "2019-07-08T00:00:00-03:00",
13 "closes_at": "2019-07-09T09:00:00-03:00"
14 },
15 "cancellable_until": "2019-07-09T09:08:00-03:00",
16 "instructors": [
17 {
18 "name": "Axel",
19 "substitute": false
20 },
21 {
22 "name": "Blaze",
23 "substitute": true
24 }
25 ],
26 "rate": 4.5,
27 "virtual": true,
28 "virtual_class_url": "http://your_url.com"
29}

GET - List

Return a list with slots of a given class in a given range of timezoned dates. If no form/to is informed, we will return all slots on that day.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots?from=2019-09-09T00:00:00%2B03:00&to=2019-09-09T23:59:59%2B03:00

Request example
1curl --location --request GET '{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots?from=2019-09-09T00:00:00%2B03:00&to=2019-09-09T23:59:59%2B03:00' \
2--header 'Accept: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}'

Params

FieldDescription
From2019-09-09T00:00:00+03:00
A timezoned date/time to start find slots. It should be entered based on the location of the gym.
to2019-09-09T00:00:00+03:00
A timezoned date/time to start find slots. It should be entered based on the location of the gym.

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when create a Class.
Response Example
1{
2 "metadata": {
3 "page": 1,
4 "page_size": 1000,
5 "total_elements": 1,
6 "total": 1,
7 "errors": 0
8 },
9 "results": [
10 {
11 "id": 10849748,
12 "class_id": 627457,
13 "occur_date": "2021-03-09T07:00:00Z[UTC]",
14 "status": 1,
15 "room": "Room 1",
16 "length_in_minutes": 60,
17 "total_capacity": 15,
18 "total_booked": 5,
19 "product_id": 478142,
20 "booking_window": {
21 "opens_at": "2021-03-09T06:30:00Z[UTC]",
22 "closes_at": "2021-03-09T07:00:00Z[UTC]"
23 },
24 "cancellable_until": "2021-03-09T07:00:00Z[UTC]",
25 "instructors": [
26 {
27 "name": "GYMPASS TEST",
28 "substitute": false
29 }
30 ],
31 "rating": 4.5,
32 "virtual": false
33 }
34 ]
35}

DEL - Delete

Use to delete a slot forever. All bookings already done in this slot will be canceled automatically.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots/:slot_id

Request example
1curl --location --request DELETE '{{booking-api-url}}/booking/v1/gyms/1/classes/1/slots/1' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}' \
4--data-raw ''

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldValue
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when create a Class.
slot_idThe identifier of the Slot at Gympass. Returned when create a Slot.

Response

204 - No Content

PATCH - Update

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots/:slot_id

It updates partial info of the slot. For now, it is just possible to update total_booked and/or total_capacity. We recommend as good practice inform at least one of these fields. If you need to update other slot's information, please use PUT - Update.

Request Example
1curl --location --request PATCH '{{booking-api-url}}/booking/v1/gyms/1/classes/1/slots/1' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}' \
4--data-raw '{
5 "total_capacity": 15,
6 "total_booked": 5,
7 "virtual_class_url": "http://your_url.com"
8}'

Request Params

FieldDescriptionTypeRequired
total_capacityIt's the total capacity of users on a given class slot. For example, if you just have 10 bikes, you can set it to 10. Max total capacity is 32000.IntTrue, if total_booked not sent
total_bookedIt's the total amount of bookings on a given class slot. Note that every time a class slot is booked, through Gympass app and website or not, the best practice is that you update this information using this endpoint. This way we can properly always show the slots that you already have available, providing the best experience to the users.IntTrue, if total_capacity not sent
virtual_class_urlIf this is a virtual class, you can put here the url that the user will need to use to access the class virtually.StringFalse

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldValue
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when creating a Class.
slot_idThe identifier of the Slot at Gympass. Returned when creating a Slot.

Response

204 - No Content

PUT - Update

It updates all info of the slot.

{{booking-api-url}}/booking/v1/gyms/:gym_id/classes/:class_id/slots/:slot_id

Request example
1curl --location --request PUT '{{booking-api-url}}/booking/v1/gyms/1/classes/1/slots/1' \
2--header 'Content-Type: application/json' \
3--header 'Authorization: Bearer {{Gympass Auth Token}}' \
4--data-raw '{
5 "occur_date": "2019-07-09T10:00:00-03:00",
6 "room": "Room 1",
7 "status": 1,
8 "length_in_minutes": 60,
9 "total_capacity": 15,
10 "total_booked": 7,
11 "product_id": 1,
12 "booking_window": {
13 "opens_at": "2019-07-08T00:00:00-03:00",
14 "closes_at": "2019-07-09T09:00:00-03:00"
15 },
16 "instructors": [
17 {
18 "name": "Axel",
19 "substitute": false
20 },
21 {
22 "name": "John",
23 "substitute": true
24 }
25 ],
26 "cancellable_until": "2019-07-09T09:00:00-03:00",
27 "rate": 4.5,
28 "virtual": true,
29 "virtual_class_url": "http://your_url.com"
30}'

Request Params

FieldDescriptionTypeRequired
occur_dateThe class slot time should be entered based on the location of the gym. Ex: 2019-07-09T10:00:00-03:00 will create a class on July 9th 10AM for a gym located in the timezone UTC-3.DateTrue
roomIt's the human-readable room name at the gym. Max of 200 characters.StringFalse
statusIt’s the slot status. The default value is 1. Values: inactive = 0 or active = 1.IntFalse
length_in_minutesIt's the class duration in minutes. Max length duration is 200.IntTrue
total_capacityIt's the total capacity of users on a given class slot. For example, if you just have 10 bikes, you can set it to 10. Max total capacity is 32000.IntTrue
total_bookedIt's the total amount of bookings on a given class slot. Note that every time a class slot is booked through Gympass app and website or not, the best practice is that you update this information using this endpoint. This way we can always show properly the slots that you already have available, providing the best experience to the users.IntTrue
product_idIt's the product identifier at Gympass (yoga, swimming). If you don’t know this, please ask about it to your Gympass contact.DateTrue
cancellable_untilThe deadline used to control the early cancellation for the booking (without penalty). It should be entered based on the location of the gym. After that, it will be considered a late cancel. Ex: 2019-07-09T09:00:00-03:00.DateFalse
rateThe max rate is 5.0.DecimalFalse
booking_windowBooking window represents the date and time that a user can book a slot. If the user is outside of this range of dates and times they can’t book this slot. The booking window is composed of the "opens_at" and "closes_at" attributes explained below.DateFalse
      opens_atThe opening time to book a class slot. It should be entered based on the location of the gym. Ex: 2019-07-20T13:00:00.000Z. If none is informed, the slot will be available just after creation.DateFalse
      closes_atThe limit date to book a class slot. It should be entered based on the location of the gym. Ex: 2019-07-29T21:00:00.000Z. If none is informed the slot will be considered closed to be booked at occur_dateDateFalse
instructorsYou can set none or multiple instructors for a class slot. This represents a list of the instructors, and for each one you can send the instructor's "name" and whether they are a "substitute" or not, as explained below.ListFalse
      nameThe name of the instructor. Max of 100 characters.StringTrue
      substituteIndicates if it’s a substitute instructor. Values: True or False.BooleanTrue
virtualIndicates if the class slots is virtual or presential.BooleanFalse
virtual_class_urlIf this is a virtual class, you can put here the url that the user will need to use to access the class virtually.StringFalse

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldValue
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
class_idThe identifier of the class at Gympass. Returned when create a Class.
slot_idThe identifier of the Slot at Gympass. Returned when create a Slot.

Response

200 - OK
1{
2 "metadata": {
3 "total": 1,
4 "errors": 0
5 },
6 "results": [
7 {
8 "id": 1,
9 "class_id": 1,
10 "occur_date": "2019-07-09T10:00:00-03:00",
11 "status": 1,
12 "room": "Room 1",
13 "length_in_minutes": 60,
14 "total_capacity": 15,
15 "total_booked": 7,
16 "product_id": 1,
17 "booking_window": {
18 "opens_at": "2019-07-08T00:00:00-03:00",
19 "closes_at": "2019-07-09T09:00:00-03:00"
20 },
21 "cancellable_until": "2019-07-09T09:08:00-03:00",
22 "instructors": [
23 {
24 "name": "Axel",
25 "substitute": false
26 },
27 {
28 "name": "John",
29 "substitute": true
30 }
31 ],
32 "rate": 4.5,
33 "virtual": true
34 }
35 ]
36}

Products

A Product determines what gyms a user can access on a Gympass plan. In addition, the product also represents an activity that the user can perform, so it is data that is commonly required to provide on most requests, such as for creating a class.

For this purpose, we provide an API that allows you to retrieve all Products that are associated with a GymID, so you can use the correct Product IDs on your integration setup.


GET - Products

Displays all products associated with a GymID.

URL: {{booking-api-url}}/setup/v1/gyms/:gym_id/products

Response Example

200 - OK
1{
2 "gym_id": 012345,
3 "products": [
4 {
5 "product_id": 987654,
6 "name": "Swimming",
7 "updated_at": "2022-05-10T14:33:48.819005Z"
8 }
9 ]
10}
Headers
FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}}
Path Variables
FieldDescription
gym_idThe identifier of the gym at Gympass. Provided by Gympass.

Bookings

PATCH - Update

Important: Booking requests need to be confirmed under 15 minutes, otherwise they will be automatically rejected.

Previous version (deprecated)

{{booking-api-url}}/booking/v1/gyms/:gym_id/bookings/:booking_number

Request example
1curl --location --request PATCH '{{booking-api-url}}/booking/v1/gyms/:gym_id/bookings/:booking_number' \
2--header 'Authorization: Bearer {{Gympass Token}}' \
3--header 'Content-Type: application/json' \
4--data-raw '{
5 "class_id": 012345,
6 "status": 2,
7 "reason": "Reason",
8 "virtual_class_url": "http://your_url.com"
9}'

The above example would reserve a booking. When calling the PATCH update you must pass through either a 2 (Reserved Booking), a 3 (Rejected Booking) or 5 (Cancelled by the Gym)

Request Params

FieldDescriptionTypeRequired
class_idThe class id related to that booking.IntTrue
statusIf the gym is accepting or rejecting the booking. Values: 2 (Reserved), 3 (Rejected) or 5 (Cancelled by the Gym)IntTrue
reasonThe reason is used commonly when the booking is rejected.StringFalse
virtual_class_urlIf this is a virtual class, you can put here the URL that the user will need to use to access the class virtually.StringFalse

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldValue
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
booking_numberThe booking identifier at Gympass. Returned when creating a Booking.

Response

204 - 0K - no content

{{booking-api-url}}/booking/v2/gyms/:gym_id/bookings/:booking_number

Request example
1curl --location --request PATCH '{{booking-api-url}}/booking/v2/gyms/:gym_id/bookings/:booking_number' \
2--header 'Authorization: Bearer {{Gympass Token}}' \
3--header 'Content-Type: application/json' \
4--data-raw '{
5 "status": "REJECTED",
6 "reason": "Class is full",
7 "reason_category": "CLASS_IS_FULL",
8 "virtual_class_url": "http://your_url.com"
9}'

The above example would reject a booking.

Request Params

FieldDescriptionTypeRequired
statusIf the gym is accepting or rejecting the booking. See Allowed valuesStringTrue
reasonThe reason is used commonly when the booking is rejected.StringFalse
reason_categoryThe reason category is used to categorize a rejected booking. Required if the status is REJECTED. See Allowed valuesStringFalse
virtual_class_urlIf this is a virtual class, you can put here the URL that the user will need to use to access the class virtually.StringFalse

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

Path Variables

FieldValue
gym_idThe identifier of the gym at Gympass. Provided by Gympass.
booking_numberThe booking identifier at Gympass. Returned when creating a Booking.

List of status allowed

Value
RESERVED
REJECTED
CANCELLED_BY_GYM

List of reason categories allowed

ValueDescription
CLASS_IS_FULLBooking declined because the class is full
USAGE_RESTRICTIONBooking declined because of usage limits
USER_IS_ALREADY_BOOKEDBooking attempt declined because you've already booked this class
SPOT_NOT_AVAILABLEBooking declined because there are no spots available
USER_DOES_NOT_EXISTBooking declined because you need to visit the partner to register first
CHECK_IN_AND_CANCELATION_WINDOWS_CLOSEDBooking declined because you are not able to book this class right now
CLASS_HAS_BEEN_CANCELEDBooking declined because the class is no longer available
CLASS_NOT_FOUNDBooking declined because the class wasn't found
USER_PROFILE_CMSBooking declined because of a user profile error
TECHNICAL_ERRORBooking declined because of a technical error
PREREQUISITESBooking declined because this class has prerequisites
GENERAL_ERRORBooking declined because something went wrong

Response

204 - 0K - no content

Categories

A class category is an ID chosen from a list of categories provided by Gympass that specifies what kind of activity that class is about. (e.g. Yoga, Functional, Pilates...)

GET - List

{{booking-api-url}}/booking/v1/gyms/:gym_id/categories?locale={{locale}}

Request example
1curl --location --request GET '{{booking-api-url}}/booking/v1/gyms/:gym_id/categories?locale={{locale}}' \
2--header 'Authorization: Bearer {{Gympass Token}}'

Headers

FieldDescription
Acceptapplication/json
AuthorizationBearer {{Gympass Auth Token}}

Path Variables

FieldValue
localeThe locale of the gym. eg: pt

List of locales values allowed:

Locale
de
en
en_GB
es
fr
it
nl
pt
pt_PT
en_IE
es_AR
es_CL
es_MX
es_UY

Response

200 - 0K
1{
2 "metadata": {
3 "total": 1,
4 "errors": 0
5 },
6 "results": [
7 {
8 "id": 1,
9 "name": "Meditation",
10 "locale": "de"
11 }
12 ]
13}

Health Check

GET - Health

{{booking-api-url}}/booking/v1/health

Request example
1curl --location --request GET '{{booking-api-url}}/booking/v1/health' \
2--header 'Authorization: Bearer {{Gympass Auth Token}}'
Response example | Status 200
1ok

Headers

FieldDescription
AuthorizationBearer {{Gympass Auth Token}} - If you do not have this token, ask it to Gympass contact.

UML Sequence Diagram

Here you will find examples of the Booking API workflow. The examples below will highlight the following:

More detail

Booking flow UML