Skip to content

PerfectGym Next API (1.13.2)

  • 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
  • Leads operations
  • 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
Operations
Operations
Operations
Operations

Membership Self-service

Manage membership contracts

Operations

Request

Required Scopes: MEMBERSHIP_SELF_SERVICE_READ

Returns customer's current contract data for memberships

Security
ApiKeyAuth
Path
customerIdinteger(int64)required

Unique ID of the customer

curl -i -X GET \
  'https://open-api-demo.open-api.perfectgym.com/v1/memberships/{customerId}/self-service/contract-data' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE'

Responses

OK

Bodyapplication/jsonArray [
idinteger(int64)required

Id of the contract

Example: 1000
startDatestring(date)required

Start date of the contract

Example: "2022-01-15"
endDatestring(date)required

End date of the contract

Example: "2025-10-15"
rateNamestringrequired

Name of the contract rate

Example: "Premium"
contractStatusstring(ContractStatus)required

The contracts desired or current status

Enum ValueDescription
ACTIVE

Identifies active contracts

INACTIVE

Identifies inactive contracts

cancelationPeriodobject(TimePeriod)

Represents a time period

cancelationStatusstringrequired

Cancelation status of the contract cancelation

Enum ValueDescription
PENDING_WITHDRAWAL_VERIFICATION

The cancelation withdrawal is pending verification.

CANCELED

The contract was canceled by the customer.

PENDING_VERIFICATION

The cancelation is pending verification.

Example: "PENDING_VERIFICATION"
cancelationDatestring(date)

Date the cancelation of the contract was or will be canceled

Example: "2023-01-25"
cancelationReasonstring

Name of the reason why the contract was canceled

Example: "Officially ordered studio closure"
priceDetailsobject(PriceDetails)required

Price details of the contract

priceDetails.​basePriceobject(Money)required

Base price of the contract

priceDetails.​basePrice.​amountnumberrequired

Amount of the finance data tuple

Example: 20
priceDetails.​basePrice.​currencystring(ISO 4217)required

Currency of the finance data tuple

Example: "EUR"
priceDetails.​currentPriceobject(Money)required

Current price of the contract. This price takes into account any adjustments that have been made to the base price

priceDetails.​currentPrice.​amountnumberrequired

Amount of the finance data tuple

Example: 20
priceDetails.​currentPrice.​currencystring(ISO 4217)required

Currency of the finance data tuple

Example: "EUR"
priceDetails.​paymentFrequencyobject(ContractPaymentFrequency)required

Payment frequency of the contract

priceDetails.​paymentFrequency.​idinteger(int64)

Unique ID of the payment frequency of a contract

Example: 203
priceDetails.​paymentFrequency.​typestringrequired

Payment frequency type of a contract

Enum ValueDescription
TERM_BASED

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

NON_RECURRING

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

FREE

Represents that the contract payment frequency is free of charge.

RECURRING

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

MONTH_DAY

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

Example: "FREE"
priceDetails.​paymentFrequency.​termobject(Term)

Represents a term

priceDetails.​paymentFrequency.​priceobject(Money)

Base price, used only for payment frequencies of type RECURRING

priceDetails.​paymentFrequency.​monthDaysToPricesArray of objects(ContractMonthDayToPrice)

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

priceDetails.​paymentFrequency.​termsToPricesArray of objects(ContractTermToPrice)

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

lastPossibleCancelationDatestring(date)

Latest date the contract can be canceled

Example: "2023-01-25"
availableCancelationDatesArray of strings(date)

dates the contract can be canceled to

Example: ["2023-01-25","2023-02-25"]
cancelationOriginstring

Cancelation origin of the contract cancelation

Enum ValueDescription
CUSTOMER

The contract was canceled by the customer.

STUDIO

The contract was canceled by the studio. This includes also dunning, contract switch, import, contract voucher withdraw and member cash purchase limit rejection origins.

Example: "CUSTOMER"
rateCodesArray of objects(RateCode)

Rate codes of this contract

pricenumberDeprecatedrequired

Base price of the contract

Example: 19.9
]
Response
application/json
[ { "id": 1000, "startDate": "2022-01-15", "endDate": "2025-10-15", "rateName": "Premium", "contractStatus": "ACTIVE", "cancelationPeriod": {}, "cancelationStatus": "PENDING_VERIFICATION", "cancelationDate": "2023-01-25", "cancelationReason": "Officially ordered studio closure", "price": 19.9, "priceDetails": {}, "lastPossibleCancelationDate": "2023-01-25", "availableCancelationDates": [], "cancelationOrigin": "CUSTOMER", "rateCodes": [] } ]

Create contract cancelation amendment

Request

Required Scopes: MEMBERSHIP_SELF_SERVICE_WRITE

Creates contract cancelation amendment for specified contract id

Security
ApiKeyAuth
Path
customerIdinteger(int64)required

Unique ID of the customer

Bodyapplication/jsonrequired
cancelationDatestring(date)required

Date the contract should be canceled to

Example: "2023-01-25"
cancelationReasonIdinteger(int64)required

Id of the reason why the contract is canceled

Example: 1234
contractIdinteger(int64)required

Id of the contract

Example: 1000
curl -i -X POST \
  'https://open-api-demo.open-api.perfectgym.com/v1/memberships/{customerId}/self-service/ordinary-contract-cancelation' \
  -H 'Content-Type: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY_HERE' \
  -d '{
    "cancelationDate": "2023-01-25",
    "cancelationReasonId": 1234,
    "contractId": 1000
  }'

Responses

OK

Bodyapplication/json
successstring
Response
application/json
{ "success": "string" }

Get studio's contract cancelation reason data

Request

Required Scopes: MEMBERSHIP_SELF_SERVICE_READ

Get available contract cancelation reasons for the studio

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

Responses

OK

Bodyapplication/jsonArray [
cancelationReasonIdinteger(int64)required

Id of the contract cancelation reason

Example: 1000
cancelationReasonNamestringrequired

Name of the contract cancelation reason

Example: "Officially ordered studio closure"
]
Response
application/json
[ { "cancelationReasonId": 1000, "cancelationReasonName": "Officially ordered studio closure" } ]
Operations

Online offers

Online offer operations

Operations
Operations
Operations

Trial Offers

Get trial offers information

Operations