Skip to content

PerfectGym Next API (1.16.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
  • Retrieve customer transaction details
  • Get device information
  • Employee operations
  • Debt collection operations
  • Leads operations
  • Get member lists
  • Manage membership contracts
  • Membership operations
  • Online offer operations
  • Payment operations
  • Get studio information
  • Get trial offers information
Download OpenAPI description
Languages
Servers
Demo tenant

https://open-api-demo.open-api.perfectgym.com/

Mock server

https://redocly.sportalliance.com/_mock/apis/perfectgym/openapi/openapi/

Appointments

Appointment, bookable appointment and slots operations

Operations

Checkin vouchers

Redeem checkin vouchers

Operations
Operations

Cross Studio

Cross studio operations

Operations

Customers

Get customers and contracts

Operations

Customers Account

Retrieve customer accounting details

Operations

Customers Communication

Retrieve customer communication details

Operations
Operations

Customers Transactions

Retrieve customer transaction details

Operations
Operations
Operations
Operations
Operations
Operations

Membership Self-service

Manage membership contracts

Operations

Request

Required Scopes: MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_READ

Get additional modules for a studio

Security
ApiKeyAuth
curl -i -X GET \
  https://open-api-demo.open-api.perfectgym.com/v1/memberships/self-service/additional-modules \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/jsonArray [
idinteger(int64)required

Unique ID of the additional module

Example: 203
namestringrequired

Name of the additional module rate

Example: "drink flat"
descriptionstring

Description of the additional module rate

Example: "drink flat"
imageUrlstringrequired

Image url of the additional module

Example: "https://www.image.com"
paymentFrequenciesArray of objects(AdditionalModulePaymentFrequency)required

Payment frequencies of the additional module

paymentFrequencies[].​idinteger(int64)

Unique ID of the payment frequency of an additional module

Example: 203
paymentFrequencies[].​typestringrequired

Payment frequency type of an additional module

Enum ValueDescription
TERM_BASED

Represents that the additional module payment frequency is based on terms, with a possibly individual price per term.

NON_RECURRING

Represents that the additional module payment frequency is non recurring, meaning only one payment is necessary here.

FREE

Represents that the additional module payment frequency is free of charge.

RECURRING

Represents that the additional module payment frequency is recurring, meaning that the payment will take place every term.

MONTH_DAY

Represents that the additional module payment frequency is based on month days, with a possibly individual price per month day.

Example: "FREE"
paymentFrequencies[].​termobject(Term)

Represents a term

paymentFrequencies[].​priceobject(Money)

Base price, used only for payment frequencies of type RECURRING

paymentFrequencies[].​monthDaysToPricesArray of objects(AdditionalModuleMonthDayToPrice)

Month day to prices list, used for additional module payment frequency type MONTH_DAY

paymentFrequencies[].​termsToPricesArray of objects(AdditionalModuleTermToPrice)

Terms to prices list, used for additional module payment frequency type TERM_BASED. Note that the price will become active AFTER the respective term has passed

termInformationobject(TermInformation)required

Term information of the additional module

termInformation.​termobject(Term)required

Represents a term

termInformation.​term.​valueinteger(int32)required

The value of the term

Example: 2
termInformation.​term.​unitstringrequired

Represents a temporal unit

Enum ValueDescription
MONTH

Represents month unit

YEAR

Represents year unit

WEEK

Represents a week unit

DAY

Represents a day unit

Example: "WEEK"
termInformation.​extensionobject(AdditionalModuleExtension)

Represents an additional module extension

termInformation.​cancelationPeriodobject(Term)

Represents a term

trialPeriodConfigobject(AdditionalModuleTrialPeriodConfig)

Represents the trial period config of an additional module

rateCodesArray of objects(RateCode)

Rate codes of the additional module rate

]
Response
application/json
[ { "id": 203, "name": "drink flat", "description": "drink flat", "imageUrl": "https://www.image.com", "paymentFrequencies": [], "termInformation": {}, "trialPeriodConfig": {}, "rateCodes": [] } ]

Get purchasable additional modules

Request

Required Scopes: MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_READ

Get purchasable additional modules for a studio and a customer (via main contract)

Security
ApiKeyAuth
Path
contractIdinteger(int64)required

Unique ID of the main contract

curl -i -X GET \
  'https://open-api-demo.open-api.perfectgym.com/v1/memberships/{contractId}/self-service/additional-modules/purchasable' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/jsonArray [
idinteger(int64)required

Unique ID of the additional module

Example: 203
namestringrequired

Name of the additional module rate

Example: "drink flat"
descriptionstring

Description of the additional module rate

Example: "drink flat"
imageUrlstringrequired

Image url of the additional module

Example: "https://www.image.com"
paymentFrequenciesArray of objects(AdditionalModulePaymentFrequency)required

Payment frequencies of the additional module

paymentFrequencies[].​idinteger(int64)

Unique ID of the payment frequency of an additional module

Example: 203
paymentFrequencies[].​typestringrequired

Payment frequency type of an additional module

Enum ValueDescription
TERM_BASED

Represents that the additional module payment frequency is based on terms, with a possibly individual price per term.

NON_RECURRING

Represents that the additional module payment frequency is non recurring, meaning only one payment is necessary here.

FREE

Represents that the additional module payment frequency is free of charge.

RECURRING

Represents that the additional module payment frequency is recurring, meaning that the payment will take place every term.

MONTH_DAY

Represents that the additional module payment frequency is based on month days, with a possibly individual price per month day.

Example: "FREE"
paymentFrequencies[].​termobject(Term)

Represents a term

paymentFrequencies[].​priceobject(Money)

Base price, used only for payment frequencies of type RECURRING

paymentFrequencies[].​monthDaysToPricesArray of objects(AdditionalModuleMonthDayToPrice)

Month day to prices list, used for additional module payment frequency type MONTH_DAY

paymentFrequencies[].​termsToPricesArray of objects(AdditionalModuleTermToPrice)

Terms to prices list, used for additional module payment frequency type TERM_BASED. Note that the price will become active AFTER the respective term has passed

termInformationobject(TermInformation)required

Term information of the additional module

termInformation.​termobject(Term)required

Represents a term

termInformation.​term.​valueinteger(int32)required

The value of the term

Example: 2
termInformation.​term.​unitstringrequired

Represents a temporal unit

Enum ValueDescription
MONTH

Represents month unit

YEAR

Represents year unit

WEEK

Represents a week unit

DAY

Represents a day unit

Example: "WEEK"
termInformation.​extensionobject(AdditionalModuleExtension)

Represents an additional module extension

termInformation.​cancelationPeriodobject(Term)

Represents a term

trialPeriodConfigobject(AdditionalModuleTrialPeriodConfig)

Represents the trial period config of an additional module

rateCodesArray of objects(RateCode)

Rate codes of the additional module rate

]
Response
application/json
[ { "id": 203, "name": "drink flat", "description": "drink flat", "imageUrl": "https://www.image.com", "paymentFrequencies": [], "termInformation": {}, "trialPeriodConfig": {}, "rateCodes": [] } ]

Validate an additional module contract request

Request

Required Scopes: MEMBERSHIP_SELF_SERVICE_ADDITIONAL_MODULE_CONTRACT_WRITE

Validate an additional module contract request

Security
ApiKeyAuth
Path
contractIdinteger(int64)required

Unique ID of the main contract

Bodyapplication/jsonrequired
additionalModuleIdinteger(int64)required

Unique ID of the additional module

Example: 203
paymentFrequencyIdinteger(int64)required

Unique ID of the payment frequency of the additional module

Example: 203
bookTrialPeriodbooleanrequired

Describes whether a trial period should be booked. The additional module must contain a valid trial period configuration, if set to true

Example: true
curl -i -X POST \
  'https://open-api-demo.open-api.perfectgym.com/v1/memberships/{contractId}/self-service/additional-modules/validate' \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "additionalModuleId": 203,
    "paymentFrequencyId": 203,
    "bookTrialPeriod": true
  }'

Responses

OK

Bodyapplication/json
validationStatusstringrequired

Status of the addtional module validation

Enum ValueDescription
ADDITIONAL_MODULE_NOT_FOUND

The additional module could not be found.

ADDITIONAL_MODULE_CONTRACT_INVALID_STATUS,

The additional module contract is in an invalid status.

ADDITIONAL_MODULE_NOT_ONLINE_PURCHASABLE

The additional module is not purchasable online.

ADDITIONAL_MODULE_CONTRACT_ALREADY_PURCHASED

The additional module contract has already been purchased.

ADDITIONAL_MODULE_PURCHASABLE

The additional module is purchasable.

ADDITIONAL_MODULE_TRIAL_PERIOD_NOT_BOOKABLE

The additional module trial period cannot be booked.

Example: "ADDITIONAL_MODULE_CONTRACT_ALREADY_PURCHASED"
Response
application/json
{ "validationStatus": "ADDITIONAL_MODULE_CONTRACT_ALREADY_PURCHASED" }
Operations

Online offers

Online offer operations

Operations
Operations
Operations

Trial Offers

Get trial offers information

Operations