Fitssey API (v4)

Introduction

The Fitssey API is organized around REST implementation. It communicates using HTTPS resource-oriented URLs, accepting and returning JSON payloads. The API is secured using Bearer token which can be obtained in your Studio settings.

We advise you to take 30 minutes upon reading this document and this may save you time when developing your great application.

Changelog

29th November, 2024

  • Added new /pricing-option/all endpoint to return all "PricingOptions".
  • Added new /payment-option/all endpoint to return all "PaymentOptions".
  • Added new /product/all endpoint to return all "Products".
  • Added new /contract/all endpoint to return all "Contracts".

2nd April, 2024

  • Added new /client/{user}/client-visit/all endpoint to return all "ClientVisits" of the client.

31st August, 2023

  • Added new /client/all endpoint to return all clients of the studio.
  • Added new /client/{user}/client-pricing-option/all endpoint to return all "ClientPricingOptions" of the client.

23th September, 2020

  • Added new /client-order/{clientOrder} endpoint to patch the ClientOrder object.

05th July, 2020

  • Added new /client-contract-instalment/{clientContractInstalment}/suspend endpoint to suspend the ClientContractInstalment.
  • Added new /client-contract-instalment/{clientContractInstalment}/resume endpoint to resume the ClientContractInstalment.

26th April, 2020

  • Added new /user/{user} endpoint to retrieve user by the given guid.

25th April, 2020

  • Added new /wallet/payment-card/add endpoint to create UserPaymentCard objects if you have already existing token.

15th April, 2020

  • Added new /user/login endpoint to allow authenticate the user using username and password.

14th April, 2020

  • Added new common objects: Address and Phone.

11th April, 2020

  • Added new /client-contract/all endpoint to return all contracts of the client.
  • Added new /client-contract/{clientContract}/terminate endpoint to terminate the contract from the given instalment.

9th April, 2020

  • Added new /wallet/sepa/add endpoint to create SEPA Direct Debit payment cards.

5th April, 2020

  • Added new /client/create endpoint to create client accounts using API.

4th April, 2020

  • Added new Retail endpoints to checkout PricingOptions, PaymentOptions, Products or Contracts for given User.
  • Added new ClientContract and ClientContractInstalment in common objects.

Testing

You can interact with Fitssey API in test mode, which does not affect your live data. The API key you use to authenticate the request determines whether the request is live mode or test mode.

To make the very first connection to the API, take a look at Ping endpoint.

Base URL

The base URL contains several information you need to know. First, your Studio unique identifier UUID can be found in your Studio settings and it's an integral part of each request. Thanks to the UUID, we know it's you. Second, the version number v4 determines what version of the API you will use. Third, public keyword tells you exactly which API area you are making calls to.

https://app.fitssey.com/{uuid}/api/v4/public

Developer resources

For developers we have created examples that can be found in our official Github profile (https://github.com/fitssey). There is also available Fitssey API client for PHP.

Not a developer?

Check out our Widgets integration - simply copy & paste the given code and things magically appear on your website. Alternatively, you can contact our partner company to take you to the future!

Authentication

Fitssey API by default uses HTTP authentication.

The very first thing you would have to do is to create an API key in your Studio settings.

When developing and testing your integration, we recommend to start using test API keys with test_ prefix. Once you're ready to push your application to production, generate a new production-ready API key prefixed with live_.

Of course it's very important to keep your API keys always secure. That is why we strongly recommend to:

  • use a different API key for each integration
  • store and use API keys on the server-side (PHP, Python, Node.js) and not client-side (JavaScript)

Authenticating an API call

The created API key must be sent along with each API request, by providing it in the HTTP Authorization request header using the Bearer method. The valid Authorization header looks as follows: Bearer test_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM. Alternatively, you can use setApiKey() method available in our API clients - just to make your day easier.

Best practices

Handling errors

Whenever you develop the application, you must always check for errors because sometimes things break. Normally, you will always get a response in JSON format explaining what the error was along with the error code for a reference.

A first digit of HTTP status code represents whether the response was successful or not.

  • A code in the 2xx range indicates that a response was successful and you can handle the data in your application.
  • A code in the 4xx range indicates that a response has failed due to number of reasons explained in the error message (can be validation problem, resource not found or authentication issue). Usually this error won't go away by itself.
  • A code in the 5xx range indicates that Fitssey application had hiccup, meaning something happend in our app infrastructure. Only we know what causes the problem, so you won't get detailed message what's going on in the error message. In such critical errors, we are instantly notified about the problem, so it may be possible that if you retry your request it will work again.

Examples of error responses:

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": {
      "statusCode": 403,
      "code": 103,
      "message": "Invalid API key"
  }
}

Handling deprecations

Some of the objects have deprecated name and description fields. You will notice that those fields are simply not strings but rather objects containing locale and the value. Example: {"name": {"en_EN": {"value": "My English caption"}, "pl_PL": {"value": "My Polish caption"}}}.

We are moving away from such setup, that is why when you develop the application using Fitssey API, it's important to check whether those fields are objects or strings, so it won't break your code when we suddenly change this behavior.

JavaScript example:

// a response from Fitssey API
let name = response.data.name; // {"en_EN": {"value": "My English caption"}, "pl_PL": {"value": "My Polish caption"}}

// make sure to provide proper locale of your Studio
let locale = 'en_EN';

// check whether the name exists and it's not a string, it will most likely be an object
if(name && (typeof name !== 'string' || !(name instanceof String)))
{
    name = name[locale].value;
}

console.log(name);
// output: My English caption

PHP example:

// a result from Fitssey API
$name = $result->name; // {"en_EN": {"value": "My English caption"}, "pl_PL": {"value": "My Polish caption"}}

// make sure to provide proper locale of your Studio
$locale = 'en_EN';

// check whether the name is an object
if(is_object($name))
{
    $name = $name->{$locale}->value; // array style would be $name[$locale]['value']
}

var_dump($name);
// output: My English caption

Note that only values will be changed to strings, the property names will remain the same.

Handling enums

Sometimes we use enums as strings (e.g. scheduled) and sometimes as integers (e.g. 1 (paid)). Pay attention whether to use each.

FAQ

What can I do using Fitssey API?

You can use our API to write custom applications or integrations for your website. You can do variety of things including the following:

  • Display the schedule the way you want
  • Book classes or appointments
  • Manage client profile
  • Sell products
  • Manage members

Is there a rate limit?

Currently there is no rate limit to our API, however this may change in the future, so please treat our API with all the respect and don't abuse the calls. If possible, please cache the responses on your side.

Is there additional cost when using Fitssey API?

No, we do not charge extra costs and all the accounts have free access to documentation, resources and endpoints.

guid

guid
string <guid> = 36 characters

Globally unique identifier.

{
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709"
}

User

emailAddress
string

An unique user's email address.

firstName
string

The user's first name.

lastName
string

The user's last name.

sex
integer
Default: 1
Enum: 0 (male) 1 (female)

The user's gender.

suspensionType
integer
Default: null
Enum: 0 (booking) 1 (login)

If not null, returns information about what type of suspension has been set on user's account.

isSuspended
boolean
Default: false

Determines whether the user's account is suspended or not.

suspendedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account has been suspended.

suspensionExpiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account will be automatically released from suspension.

suspensionReason
string
Default: null

Additional reason of why user's account has been suspended.

isLoginEnabled
boolean
Default: true

Determines whether the user's login possibility is enabled or not.

activatedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account has been activated (mostly via activation link in the email).

lastSeenAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user was logged in to FrontOffice for the last time.

object

Attached when user is a client type.

fullName
string

The user's first ane last name combined into one field.

hasAndroidApp
boolean
Default: false

Determines whether user is using Android app (Fitssey free app or Fitssey premium app).

hasIosApp
boolean
Default: false

Determines whether user is using iOS app (Fitssey free app or Fitssey premium app).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "emailAddress": "[email protected]",
  • "firstName": "Monica",
  • "lastName": "Dvorak",
  • "sex": 1,
  • "suspensionType": 1,
  • "isSuspended": false,
  • "suspendedAt": "2019-09-10T15:31:47+02:00",
  • "suspensionExpiresAt": "2019-09-17T15:31:47+02:00",
  • "suspensionReason": "Suspended due to many cancellations",
  • "isLoginEnabled": true,
  • "activatedAt": "2019-09-01T12:02:35+02:00",
  • "lastSeenAt": "2019-09-03T09:54:12+02:00",
  • "client": {
    },
  • "fullName": "Luna The Cat",
  • "hasAndroidApp": false,
  • "hasIosApp": false,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

UserPaymentCard

type
string
Enum: creditcard directDebit

The type of the payment card.

paymentGateway
string
Enum: imoje mollie espago

The payment gateway used to create the payment card.

issuer
string
Enum: visa mastercard

The issuer name of the payment card.

token
string

The token received from payment gateway that allows you to charge user's payment card.

holder
string

The holder name of the payment card.

pan
string

Last four digits of the payment card number.

expiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the payment card expires (expressed in ISO 8601 format).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "type": "creditcard",
  • "paymentGateway": "mollie",
  • "issuer": "visa",
  • "token": "QSuC6orAxSBUUJgKMYu8h7rILk",
  • "holder": "Jane Doe",
  • "pan": "6789",
  • "expiresAt": "2024-04-01T00:00:00+02:00",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Client

uuid
string

Client's public and unique ID.

object (agreements)

A list of agreements given by the client.

birthdayAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The client's birthdate.

lastActiveAt
datetime <Y-m-d H:i:s>

The last time at which client made one of the following actions: booking, purchase or payment.

object

The object describing client's postal address.

object

The object describing client's available phone numbers.

object

An uploaded image displayed in client's profile (FrontOffice and BackOffice).

{
  • "uuid": "1000072",
  • "agreements": {
    },
  • "birthdayAt": "1980-01-19T23:00:00+01:00",
  • "lastActiveAt": "2019-09-03T08:06:23+02:00",
  • "address": {
    },
  • "phone": {
    },
}

ClientVisit

status
integer
Enum: 0 (booked) 1 (present) 2 (absent) 3 (early cancel) 4 (self early cancel) 5 (late cancel) 6 (self late cancel) 7 (class cancelled) 8 (waiting list) 9 (unconfirmed)

The last visit status that indicates whether the visit was booked or cancelled.

visitStartsAt
datetime <Y-m-d\TH:i:s\Z>

A date when client's visit begins.

visitEndsAt
datetime <Y-m-d\TH:i:s\Z>

A date when client's visit ends.

isFree
boolean

Determines whether the visit is free of charge or not.

object

ClientPricingOption object attached to the visit.

isUnpaid
boolean

Determines whether the visit is unpaid or not.

qualifiedName
string

A descriptive name for the visit inherited from ClassService.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "status": 0,
  • "visitStartsAt": "2024-04-02T11:00:00+01:00",
  • "visitEndsAt": "2024-04-02T12:00:00+01:00",
  • "isFree": false,
  • "clientPricingOption": {
    },
  • "isUnpaid": false,
  • "qualifiedName": "Yoga class",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientOrder

orderStatus
integer
Enum: 0 (pending) 1 (paid) 2 (unpaid) 3 (cancelled) 4 (rejected) 5 (awaiting) 6 (void) 7 (scheduled) 8 (failed) 9 (authorizationAllowed) 10 (authorizationDisallowed) 11 (freeOfCharge) 12 (suspended)

The last order status that indicates whether the order has been paid or not.

paymentMethod
integer
Enum: 0 (online) 1 (bankTransfer) 2 (cash) 3 (cash) 4 (gift) 5 (none) 6 (paymentCard) 11 (test) 12 (terminal)

The payment method that has been used to pay for this order.

paidAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total paid amount for the order.

dueAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total due amount for the order.

discountRate
decimal

A decimal number indicating discount rate (0.2 for 20%, 1.0 for 100%).

paymentDueAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time by which the order should be paid.

paidAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been paid.

object
Default: null
voidedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been voided.

object
Default: null
object

Client object attached to the order.

Array of objects (ClientOrderItem)

Item objects purchased along with the order.

totalPrice
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total price of the order.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "orderStatus": 1,
  • "paymentMethod": 0,
  • "paidAmount": 1750,
  • "dueAmount": 0,
  • "discountRate": 0,
  • "paymentDueAt": null,
  • "paidAt": null,
  • "paidBy": null,
  • "voidedAt": null,
  • "voidedBy": null,
  • "client": {
    },
  • "clientOrderItems": [
    ],
  • "totalPrice": 1750,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientOrderItem

name
string

A name of the purchased item

totalPrice
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total price of the order item

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "name": "Yoga Card x4",
  • "totalPrice": 1750,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientContract

name
string

A name of the contract.

startsAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract starts (expressed in ISO 8601 format).

endsAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract ends (expressed in ISO 8601 format).

terminatedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract has been terminated (expressed in ISO 8601 format).

terminatedFrom
datetime <Y-m-d\TH:i:s\Z>

Time from which the contract will become terminated (expressed in ISO 8601 format).

terminationReason
text

The reason why the contract has been terminated.

object

Client object attached to the contract.

Array of objects (ClientContractInstalment)

A list of contract instalments.

nextPaymentAt
datetime <Y-m-d\TH:i:s\Z>

Time at which next payment is scheduled (expressed in ISO 8601 format).

nextChargeAmount
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the next scheduled charge amount.

minInstalmentCountToAllowTermination
integer

A minimum number of instalments after which the contract can be terminated. No value means it can be terminated anytime.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "name": "1 Year Contract",
  • "startsAt": "2019-06-01T22:00:00+02:00",
  • "endsAt": "2020-05-31T21:59:59+02:00",
  • "terminatedAt": "2020-10-02T22:00:00+02:00",
  • "terminatedFrom": "2020-10-02T22:00:00+02:00",
  • "terminationReason": "Moving out to different country",
  • "client": {
    },
  • "instalments": [
    ],
  • "nextPaymentAt": "2020-10-02T22:00:00+02:00",
  • "nextChargeAmount": "8000",
  • "minInstalmentCountToAllowTermination": "3",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientContractInstalment

status
string
Enum: scheduled processed

The status that indicates whether the instalment has been scheduled or processed

scheduledAt
datetime <Y-m-d\TH:i:s\Z>

The scheduled date of the instalment (expressed in ISO 8601 format). This is the date when scheduled instalment becomes processed one

endsAt
datetime <Y-m-d\TH:i:s\Z>

The end date of the instalment (expressed in ISO 8601 format)

suspensionReason
text

The reason why the instalment has been suspended

object

Attached the order to the instalment

hasStarted
boolean
Default: false

Determines whether the instalment has started or not

hasEnded
boolean
Default: false

Determines whether the instalment has ended or not

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "status": "scheduled",
  • "scheduledAt": "2019-05-12T22:00:00+02:00",
  • "endsAt": "2019-06-12T21:59:59+02:00",
  • "suspensionReason": "Holiday season",
  • "clientOrder": {
    },
  • "hasStarted": true,
  • "hasEnded": true,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientPricingOption

remain
integer

Remaining amount of session values, either time or visit based.

sessionType
string
Enum: limitedVisits limitedTime unlimited

Session type defines session values. Either time or visit based as well as unlimited.

expiresAt
datetime <Y-m-d\TH:i:s\Z>

A date when client's pricing option will be expired.

activatedAt
datetime <Y-m-d\TH:i:s\Z>

A date when client's pricing option will be active from.

isUnpaid
boolean

Determines whether the client's pricing option is paid or not.

isShared
boolean

Determines whether the client's pricing option is shared with other clients or not.

qualifiedName
string

A representative name of the client's pricing option. Can be custom or inherited from pricing option.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "remain": "4",
  • "sessionType": "4",
  • "expiresAt": "2023-08-31T21:59:59+02:00",
  • "activatedAt": "2023-08-01T22:00:00+02:00",
  • "isUnpaid": false,
  • "isShared": false,
  • "qualifiedName": "Yoga pass 8x",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Member

nickname
text
Default: null

If not null, returns member's given nickname

publicBiography
text

The public description of a member, available in FrontOffice pages

birthdayAt
datetime <Y-m-d\TH:i:s\Z>
Default: true

The member's birthdate

object

An uploaded image displayed in member's profile (FrontOffice and BackOffice)

qualifiedName
string
Default: null

Depending on studio's preferences, it will return either member's full name or the given nickname

{}

Picture

absoluteUrl
string <url>

Full URL to the uploaded image

guid
string <guid> = 36 characters

Globally unique identifier.

ScheduleEvent

referenceId
string

The unique ID of the event

totalCapacity
integer

The total number of available spots for the given event

onlineCapacity
integer

The total number of spots available for booking online (e.g. FrontOffice, mobile app) for the given event

waitingListCapacity
integer

The total number of spots available for joining waiting list for the given event

color
string
Default: null

Representing color of the given event displayed on the schedule

isFree
boolean
Default: false

Determines whether the event is free of charge (no PricingOption required)

isCancelled
boolean
Default: false

Determines whether the event is cancelled or not

isHidden
boolean
Default: false

Determines whether the event is hidden on the schedule or not

isBookableOnline
boolean
Default: true

Determines whether the event is bookable online (e.g. FrontOffice, mobile app)

startsAt
datetime <Y-m-dTH:i:s>

The time at which the event starts

endsAt
datetime <Y-m-dTH:i:s>

The time at which the event ends

object

The teacher assigned to the given event

object
hasStarted
boolean
Default: false

Determines whether the event has started or not

hasEnded
boolean
Default: false

Determines whether the event has ended or not

isInProgress
boolean
Default: false

Determines whether the event is currently in progress

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "referenceId": "55995f06ed386dc3d3bd236eaeb95b8c109540266bf7e1a6c634ae1b56b5bfe6",
  • "totalCapacity": 22,
  • "onlineCapacity": 20,
  • "waitingListCapacity": 10,
  • "color": "rgb(69, 180, 231)",
  • "isFree": false,
  • "isCancelled": false,
  • "isHidden": false,
  • "isBookableOnline": true,
  • "startsAt": "2019-09-04T10:00:00+02:00",
  • "endsAt": "2019-09-04T11:00:00+02:00",
  • "member": {},
  • "room": {
    },
  • "hasStarted": true,
  • "hasEnded": true,
  • "isInProgress": false,
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ScheduleMeta

object
guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{}

ClassService

name
string

A descriptive name for the class (a title).

internalName
string

An additional descriptive name for the class visible in BackOffice only.

description
text

A public description for the class, available in FrontOffice.

object

A public picture representing the given class.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{}

Location

name
string

A descriptive name for the location.

type
string

Location's type which determines either if it's a facility or outdoor.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "name": "Circle place",
  • "type": "facility",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

LocationRoom

object
guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "location": {
    },
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Address

street
string

The street name along with the house number.

postalCode
string

The postal code of the city.

city
string

The city.

countryCode
string

The country code in ISO 3166-1 alpha-2.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "street": "Sunny street 77a",
  • "postalCode": "1234AB",
  • "city": "Amsterdam",
  • "countryCode": "NL",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Phone

primaryPhone
string

The primary phone number based on the available phone numbers. The order is as follows: mobilePhone, homePhone, workPhone.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "primaryPhone": "+48111222333",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

PricingOption

name
string

A descriptive name for the pricing option.

internalName
string

An additional descriptive name for the pricing option visible in BackOffice only.

description
text

A public description for the pricing option, available in FrontOffice.

object

A public picture representing the given pricing option.

preSaleInfo
text

Additional information displayed in the FrontOffice shopping cart before purchasing.

sessionType
string
Enum: limitedVisits limitedTime unlimited

Determines the session type.
- limitedVisits restricts the number of bookable sessions to a specified count.
-limitedTime restricts the total bookable time to a specified number of minutes.
- unlimited no limits on sessions or time, represented by a value of -1.

sessionValue
integer

Determines how many sessions (credits) are available for the pricing option. Check sessionType description to learn more.

price
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the amount for the pricing option.

taxRate
decimal

A decimal number indicating tax rate (1.0 for 0%, 1.23 for 23%).

expirationType
integer
Enum: 0 (sale date) 1 (first visit) 2 (always valid) 3 (calendar month) 4 (specific date)

Determines expiration type for the pricing option and set the activation and expiration dates accordingly.
- 0 dates are set already when pricing option is sold.
- 1 dates are set when the first visit is booked.
- 2 dates are null and allows to book without constraints.
- 3dates are set to first and last date of the month.
- 4 custom dates.

isSoldOnline
boolean

Determines whether the pricing option is available in FrontOffice to be sold.

isAutoAssigned
boolean

Determines whether the pricing option is automatically assigned to newly created accounts.

isIntroductoryOffer
boolean

Determines whether the pricing option is set as introductory offer visible under certain conditions to new clients.

object

An object holding promotion information when created.

discountedPrice
float

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the discounted amount for the pricing option.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "name": "Guest card",
  • "internalName": "Guest card [previously 1x card]",
  • "description": "Great option for trying out!",
  • "preSaleInfo": "Remember, you can only buy one",
  • "sessionType": "limitedVisits",
  • "sessionValue": 2,
  • "price": 5500,
  • "taxRate": 1.23,
  • "expirationType": 0,
  • "isSoldOnline": true,
  • "isAutoAssigned": false,
  • "isIntroductoryOffer": false,
  • "promotion": {
    },
  • "discountedPrice": 2500,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

PaymentOption

name
string

A descriptive name for the payment option.

price
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the amount for the payment option.

taxRate
decimal

A decimal number indicating tax rate (1.0 for 0%, 1.23 for 23%).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{
  • "name": "Physical card fee",
  • "price": 500,
  • "taxRate": 1.23,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Product

name
string

A descriptive name for the product.

description
text

A public description for the product, available in FrontOffice.

sku
string

SKU (Stock keeping unit) of the product.

price
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the amount for the product.

taxRate
decimal

A decimal number indicating tax rate (1.0 for 0%, 1.23 for 23%).

stock
integer

Determines number of items in the stock.

object

A public picture representing the given product.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{}

Contract

name
string

A descriptive name for the contract.

object

A public picture representing the given contract.

preSaleInfo
text

Additional information displayed in the FrontOffice shopping cart before purchasing.

instalments
object

An installment configuration.

isSoldOnline
boolean

Determines whether the contract is available in FrontOffice to be sold.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

{}

Schedule

Get studio schedule

This call returns all class events within the given period.

query Parameters
loadFilters
boolean
Default: false

Determines whether the response should contain additional data required to build the filters.

startDate
date <Y-m-d> (startDate)
Default: Today's date

The requested start date for filtering the results.

endDate
date <Y-m-d> (endDate)
Default: Today's date

The requested end date for filtering the results.

view
string
Default: agendaView
Enum: agendaView calendarView

The requested view for parsing output data.

object
Default: null

The object containing filters to base the search on.

Responses

Response Schema: application/json
object

Attaches lists of classes, members and locations for selected period, controlled by loadFilters.

Array of objects

Schedule data grouped by dates, depending on the view parameter.

Request samples

curl -X GET "https://app.fitssey.com/{uuid}/api/v4/public/schedule?startDate="2024-12-27"&endDate="2025-01-03"&view=calendarView&loadFilters=true&filters[member]=3AFF07DF-B974-AA7B-ACB3-2418521EC1BB" \
-H "Accept: application/json" \
-H "Authorization: Bearer live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"

Response samples

Content type
application/json
{
  • "filters": {
    },
  • "schedule": [
    ]
}

ClassService

Get all classes

This call returns all studio classes.

query Parameters
sortField
string
Default: createdAt
Value: createdAt

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (ClassService)

Response samples

Content type
application/json
{}

Client

Create account

This call allows you to create a client account.

Request Body schema: application/json
firstName
required
string [ 2 .. 25 ] characters

The client's first name.

lastName
required
string [ 2 .. 40 ] characters

The client's last name.

emailAddress
string <= 50 characters
Default: null

The client's email address.

sex
integer
Default: null
Enum: 0 (male) 1 (female)

The client's gender.

activationMethod
string
Default: null
Enum: disabled email password

There are two types of activation (both require providing an email address): email that will trigger an activation email and user will be asked to provide a password, password that will automatically activate the account with the given password (this requires credentials object). Leave it null when you want to create an account without login information.

object

A property describing client payload.

Responses

Response Schema: application/json
Array
emailAddress
string

An unique user's email address.

firstName
string

The user's first name.

lastName
string

The user's last name.

sex
integer
Default: 1
Enum: 0 (male) 1 (female)

The user's gender.

suspensionType
integer
Default: null
Enum: 0 (booking) 1 (login)

If not null, returns information about what type of suspension has been set on user's account.

isSuspended
boolean
Default: false

Determines whether the user's account is suspended or not.

suspendedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account has been suspended.

suspensionExpiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account will be automatically released from suspension.

suspensionReason
string
Default: null

Additional reason of why user's account has been suspended.

isLoginEnabled
boolean
Default: true

Determines whether the user's login possibility is enabled or not.

activatedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account has been activated (mostly via activation link in the email).

lastSeenAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user was logged in to FrontOffice for the last time.

object

Attached when user is a client type.

fullName
string

The user's first ane last name combined into one field.

hasAndroidApp
boolean
Default: false

Determines whether user is using Android app (Fitssey free app or Fitssey premium app).

hasIosApp
boolean
Default: false

Determines whether user is using iOS app (Fitssey free app or Fitssey premium app).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "firstName": "Jonathan",
  • "lastName": "Smith",
  • "emailAddress": "[email protected]",
  • "sex": 1,
  • "activationMethod": "password",
  • "client": {
    }
}

Response samples

Content type
application/json
[
  • {
    }
]

Get all clients

This call returns all studio clients.

query Parameters
sortField
string
Default: createdAt
Enum: (all properties) city street postalCode

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

filters[address]
Array of arrays
Items Enum: havingAddress noAddress
Example: filters[address]=havingAddress

Shrink the collection based on address criteria.

filters[phone]
Array of arrays
Items Enum: havingPhone noPhone
Example: filters[phone]=noPhone

Shrink the collection based on phone criteria.

filters[sex]
Array of arrays
Items Enum: 0 (male) 1 (female)
Example: filters[sex]=1

Shrink the collection based on gender criteria.

filters[age]
Array of arrays
Items Enum: <18 18-24 25-34 35-44 45-54 55-64 65+
Example: filters[age]=18-24

Shrink the collection based on age criteria.

filters[agreements]
Array of arrays
Items Enum: havingTermsOfUseAgreement noTermsOfUseAgreement havingPrivacyPolicyAgreement noPrivacyPolicyAgreement havingNewsletterAgreement noNewsletterAgreement
Example: filters[agreements]=noPrivacyPolicyAgreement

Shrink the collection based on agreements criteria.

filters[tags]
Array of arrays
Items Enum: havingTags noTags
Example: filters[tags]=havingTags

Shrink the collection based on tags criteria.

filters[selectedTags]
Array of arrays
Items Value: guid
Example: filters[selectedTags]=F15138B6-826E-4287-AAA5-8EC301D65FB4

Shrink the collection based on specific tags criteria.

filters[notes]
Array of arrays
Items Enum: havingNotes noNotes
Example: filters[notes]=havingNotes

Shrink the collection based on notes criteria.

filters[emergencyContact]
Array of arrays
Items Enum: havingEmergencyContact noEmergencyContact
Example: filters[emergencyContact]=noEmergencyContact

Shrink the collection based on emergency contact criteria.

filters[mobileApps]
Array of arrays
Items Enum: mobileApp noMobileApp
Example: filters[mobileApps]=noMobileApp

Shrink the collection based on mobile app criteria.

filters[deleted]
Array of arrays
Items Enum: true false
Example: filters[deleted]=true

Shrink the collection based on deleted clients criteria.

filters[suspended]
Array of arrays
Items Enum: havingAccountSuspended noAccountSuspended
Example: filters[suspended]=havingAccountSuspended

Shrink the collection based on suspended clients criteria.

filters[birthdate]
Array of arrays
Items Enum: havingBirthdate noBirthdate
Example: filters[birthdate]=noBirthdate

Shrink the collection based on birthdates criteria.

filters[login]
Array of arrays
Items Enum: havingLoginEnabled noLoginEnabled
Example: filters[login]=noLoginEnabled

Shrink the collection based on login criteria.

filters[createdAt]
Array of arrays
Items Enum: eq (=) lt (<) lte (<=) gt (>) gte (>=)
Example: filters[createdAt]=lt(2023-10-25)

Shrink the collection based on created on criteria.

filters[modifiedAt]
Array of arrays
Items Enum: between eq (=) lt (<) lte (<=) gt (>) gte (>=)
Example: filters[modifiedAt]=between(2023-10-01,2023-10-31)

Shrink the collection based on modified on criteria.

queryString
string
Default: null

Filtering collection by free text.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (Client)

Request samples

curl -X GET "https://app.fitssey.com/{uuid}/api/v4/public/client/all?filters[address][]=havingAddress&filters[sex][]=1&filters[age][]=25-34&filters[age][]=55-64&filters[selectedTags][]=F7AF8A76-1A51-4CE6-9142-0D987C2B647F&filters[selectedTags][]=A1FED25B-A13E-4E65-8F74-62290C882BEF&filters[createdAt][]=eq(2023-10-26)" \
-H "Accept: application/json" \
-H "Authorization: Bearer live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"

Response samples

Content type
application/json
{
  • "pages": 1,
  • "totalCount": 22,
  • "currentPage": {
    },
  • "collection": [
    ]
}

ClientVisit

Get all client visits

This call returns all client visits.

path Parameters
user
required
string <guid>

The guid of the User the returned client visits belong to.

query Parameters
sortField
string
Default: createdAt
Value: (all properties)

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (ClientVisit)

Response samples

Content type
application/json
{
  • "pages": 1,
  • "totalCount": 22,
  • "currentPage": {
    },
  • "collection": [
    ]
}

ClientContract

Terminate client contract

With this call you will be able to terminate client contract.

path Parameters
clientContract
required
string <guid>

The guid of the ClientContract to be terminated.

Request Body schema: application/json
terminateFromInstalment
string <guid>

The guid of the ClientContractInstalment from which the contract will be terminated.

Responses

Response Schema: application/json
name
string

A name of the contract.

startsAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract starts (expressed in ISO 8601 format).

endsAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract ends (expressed in ISO 8601 format).

terminatedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract has been terminated (expressed in ISO 8601 format).

terminatedFrom
datetime <Y-m-d\TH:i:s\Z>

Time from which the contract will become terminated (expressed in ISO 8601 format).

terminationReason
text

The reason why the contract has been terminated.

object

Client object attached to the contract.

Array of objects (ClientContractInstalment)

A list of contract instalments.

nextPaymentAt
datetime <Y-m-d\TH:i:s\Z>

Time at which next payment is scheduled (expressed in ISO 8601 format).

nextChargeAmount
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the next scheduled charge amount.

minInstalmentCountToAllowTermination
integer

A minimum number of instalments after which the contract can be terminated. No value means it can be terminated anytime.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "terminateFromInstalment": "{guid}"
}

Response samples

Content type
application/json
{
  • "name": "1 Year Contract",
  • "startsAt": "2019-06-01T22:00:00+02:00",
  • "endsAt": "2020-05-31T21:59:59+02:00",
  • "terminatedAt": "2020-10-02T22:00:00+02:00",
  • "terminatedFrom": "2020-10-02T22:00:00+02:00",
  • "terminationReason": "Moving out to different country",
  • "client": {
    },
  • "instalments": [
    ],
  • "nextPaymentAt": "2020-10-02T22:00:00+02:00",
  • "nextChargeAmount": "8000",
  • "minInstalmentCountToAllowTermination": "3",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientOrder

Update client order

This call updates the client order.

path Parameters
clientOrder
required
string <guid>

The guid of the ClientOrder to update.

Request Body schema: application/json
orderStatus
integer
Enum: 0 (pending) 1 (paid) 2 (unpaid) 3 (cancelled) 4 (rejected) 5 (awaiting) 6 (void) 7 (scheduled) 8 (failed) 9 (authorizationAllowed) 10 (authorizationDisallowed) 11 (freeOfCharge) 12 (suspended)

The last order status that indicates whether the order has been paid or not.

paymentMethod
integer
Enum: 0 (online) 1 (bankTransfer) 2 (cash) 3 (cash) 4 (gift) 5 (none) 6 (paymentCard) 11 (test) 12 (terminal)

The payment method that has been used to pay for this order.

Responses

Response Schema: application/json
orderStatus
integer
Enum: 0 (pending) 1 (paid) 2 (unpaid) 3 (cancelled) 4 (rejected) 5 (awaiting) 6 (void) 7 (scheduled) 8 (failed) 9 (authorizationAllowed) 10 (authorizationDisallowed) 11 (freeOfCharge) 12 (suspended)

The last order status that indicates whether the order has been paid or not.

paymentMethod
integer
Enum: 0 (online) 1 (bankTransfer) 2 (cash) 3 (cash) 4 (gift) 5 (none) 6 (paymentCard) 11 (test) 12 (terminal)

The payment method that has been used to pay for this order.

paidAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total paid amount for the order.

dueAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total due amount for the order.

discountRate
decimal

A decimal number indicating discount rate (0.2 for 20%, 1.0 for 100%).

paymentDueAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time by which the order should be paid.

paidAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been paid.

object
Default: null
voidedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been voided.

object
Default: null
object

Client object attached to the order.

Array of objects (ClientOrderItem)

Item objects purchased along with the order.

totalPrice
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total price of the order.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "orderStatus": 1,
  • "paymentMethod": 0
}

Response samples

Content type
application/json
{
  • "orderStatus": 1,
  • "paymentMethod": 0,
  • "paidAmount": 1750,
  • "dueAmount": 0,
  • "discountRate": 0,
  • "paymentDueAt": null,
  • "paidAt": null,
  • "paidBy": null,
  • "voidedAt": null,
  • "voidedBy": null,
  • "client": {
    },
  • "clientOrderItems": [
    ],
  • "totalPrice": 1750,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Get client order

This call returns the client order.

path Parameters
clientOrder
required
string <guid>

The guid of the ClientOrder to return.

Responses

Response Schema: application/json
orderStatus
integer
Enum: 0 (pending) 1 (paid) 2 (unpaid) 3 (cancelled) 4 (rejected) 5 (awaiting) 6 (void) 7 (scheduled) 8 (failed) 9 (authorizationAllowed) 10 (authorizationDisallowed) 11 (freeOfCharge) 12 (suspended)

The last order status that indicates whether the order has been paid or not.

paymentMethod
integer
Enum: 0 (online) 1 (bankTransfer) 2 (cash) 3 (cash) 4 (gift) 5 (none) 6 (paymentCard) 11 (test) 12 (terminal)

The payment method that has been used to pay for this order.

paidAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total paid amount for the order.

dueAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total due amount for the order.

discountRate
decimal

A decimal number indicating discount rate (0.2 for 20%, 1.0 for 100%).

paymentDueAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time by which the order should be paid.

paidAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been paid.

object
Default: null
voidedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been voided.

object
Default: null
object

Client object attached to the order.

Array of objects (ClientOrderItem)

Item objects purchased along with the order.

totalPrice
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total price of the order.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Response samples

Content type
application/json
{
  • "orderStatus": 1,
  • "paymentMethod": 0,
  • "paidAmount": 1750,
  • "dueAmount": 0,
  • "discountRate": 0,
  • "paymentDueAt": null,
  • "paidAt": null,
  • "paidBy": null,
  • "voidedAt": null,
  • "voidedBy": null,
  • "client": {
    },
  • "clientOrderItems": [
    ],
  • "totalPrice": 1750,
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

ClientPricingOption

Get all client pricing options

This call returns all client pricing options.

path Parameters
user
required
string <guid>

The guid of the User the returned client pricing options belong to.

query Parameters
sortField
string
Default: createdAt
Value: (all properties)

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

status
string
Default: null
Enum: active inactive notActivated active,notActivated

You can filter out collection based on the given status.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (ClientPricingOption)

Response samples

Content type
application/json
{
  • "pages": 1,
  • "totalCount": 22,
  • "currentPage": {
    },
  • "collection": [
    ]
}

Location

Get all locations

This call returns all studio locations.

query Parameters
sortField
string
Default: createdAt
Value: createdAt

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (Location)

Response samples

Content type
application/json
{
  • "pages": 1,
  • "totalCount": 22,
  • "currentPage": {
    },
  • "collection": [
    ]
}

Member

Get all members

This call returns all studio staff members.

query Parameters
sortField
string
Default: createdAt
Value: createdAt

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

iamRole
string
Default: null
Enum: lb:iam_role:manager lb:iam_role:teacher lb:iam_role:host

Filters out the collection based on the given IAM role.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (Member)

Response samples

Content type
application/json
{}

Retail

Checkout contracts

With this call you will be able to checkout contracts.

Request Body schema: application/json
object

Root property describing retail payload.

Responses

Response Schema: application/json
Array
name
string

A name of the contract.

startsAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract starts (expressed in ISO 8601 format).

endsAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract ends (expressed in ISO 8601 format).

terminatedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the contract has been terminated (expressed in ISO 8601 format).

terminatedFrom
datetime <Y-m-d\TH:i:s\Z>

Time from which the contract will become terminated (expressed in ISO 8601 format).

terminationReason
text

The reason why the contract has been terminated.

object

Client object attached to the contract.

Array of objects (ClientContractInstalment)

A list of contract instalments.

nextPaymentAt
datetime <Y-m-d\TH:i:s\Z>

Time at which next payment is scheduled (expressed in ISO 8601 format).

nextChargeAmount
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the next scheduled charge amount.

minInstalmentCountToAllowTermination
integer

A minimum number of instalments after which the contract can be terminated. No value means it can be terminated anytime.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "retail": {
    }
}

Response samples

Content type
application/json
[
  • {
    }
]

Checkout orders

With this call you will be able to checkout pricing options, payment options or products.

Request Body schema: application/json
object

Root property describing retail payload.

Responses

Response Schema: application/json
Array
orderStatus
integer
Enum: 0 (pending) 1 (paid) 2 (unpaid) 3 (cancelled) 4 (rejected) 5 (awaiting) 6 (void) 7 (scheduled) 8 (failed) 9 (authorizationAllowed) 10 (authorizationDisallowed) 11 (freeOfCharge) 12 (suspended)

The last order status that indicates whether the order has been paid or not.

paymentMethod
integer
Enum: 0 (online) 1 (bankTransfer) 2 (cash) 3 (cash) 4 (gift) 5 (none) 6 (paymentCard) 11 (test) 12 (terminal)

The payment method that has been used to pay for this order.

paidAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total paid amount for the order.

dueAmount
decimal

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total due amount for the order.

discountRate
decimal

A decimal number indicating discount rate (0.2 for 20%, 1.0 for 100%).

paymentDueAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time by which the order should be paid.

paidAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been paid.

object
Default: null
voidedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the order has been voided.

object
Default: null
object

Client object attached to the order.

Array of objects (ClientOrderItem)

Item objects purchased along with the order.

totalPrice
integer

A positive integer in the smallest currency unit (100 cents for 1 EUR) representing the total price of the order.

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "retail": {
    }
}

Response samples

Content type
application/json
[
  • {
    }
]

Wallet

Create payment card

With this call you will be able to add new user payment card using existing token.
Use this endpoint only if you have already created token using a payment provider.

Request Body schema: application/json
user
required
string <guid>

The guid of the User to which you want to attach the payment card.

type
required
string
Enum: creditcard directDebit

The type of the payment card.

paymentGateway
required
string
Enum: imoje mollie espago

The payment gateway used to create the payment card.

issuer
string
Enum: visa mastercard

The issuer name of the payment card.

token
required
string

The token received from payment gateway that allows you to charge user's payment card.

holder
string

The holder name of the payment card.

pan
string

Last four digits of the payment card number.

expiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the payment card expires (expressed in ISO 8601 format).

Responses

Response Schema: application/json
type
string
Enum: creditcard directDebit

The type of the payment card.

paymentGateway
string
Enum: imoje mollie espago

The payment gateway used to create the payment card.

issuer
string
Enum: visa mastercard

The issuer name of the payment card.

token
string

The token received from payment gateway that allows you to charge user's payment card.

holder
string

The holder name of the payment card.

pan
string

Last four digits of the payment card number.

expiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the payment card expires (expressed in ISO 8601 format).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "user": "{guid}",
  • "type": "creditcard",
  • "paymentGateway": "mollie",
  • "issuer": "visa",
  • "token": "QSuC6orAxSBUUJgKMYu8h7rILk",
  • "holder": "Jane Doe",
  • "pan": "6789",
  • "expiresAt": "2024-04-01T00:00:00+02:00"
}

Response samples

Content type
application/json
{
  • "type": "creditcard",
  • "paymentGateway": "mollie",
  • "issuer": "visa",
  • "token": "QSuC6orAxSBUUJgKMYu8h7rILk",
  • "holder": "Jane Doe",
  • "pan": "6789",
  • "expiresAt": "2024-04-01T00:00:00+02:00",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

Create SEPA mandate

With this call you will be able to add new SEPA Direct Debit mandate for the user's wallet using available payment gateways.

Request Body schema: application/json
user
required
string <guid>

The guid of the User to which you want to attach the payment card.

paymentGateway
required
string
Value: mollie

Select payment gateway you want to add a mandate to. Currently SEPA Direct Debit payments are supported by Mollie only.

bankAccountHolder
required
string

The bank account holder name.

bankAccountNumber
required
string

The bank account number in IBAN format.

Responses

Response Schema: application/json
type
string
Enum: creditcard directDebit

The type of the payment card.

paymentGateway
string
Enum: imoje mollie espago

The payment gateway used to create the payment card.

issuer
string
Enum: visa mastercard

The issuer name of the payment card.

token
string

The token received from payment gateway that allows you to charge user's payment card.

holder
string

The holder name of the payment card.

pan
string

Last four digits of the payment card number.

expiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

Time at which the payment card expires (expressed in ISO 8601 format).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{
  • "user": "{guid}",
  • "paymentGateway": "mollie",
  • "bankAccountHolder": "Johathan Smith",
  • "bankAccountNumber": "NL21INGB3730976796"
}

Response samples

Content type
application/json
{
  • "type": "creditcard",
  • "paymentGateway": "mollie",
  • "issuer": "visa",
  • "token": "QSuC6orAxSBUUJgKMYu8h7rILk",
  • "holder": "Jane Doe",
  • "pan": "6789",
  • "expiresAt": "2024-04-01T00:00:00+02:00",
  • "guid": "364F59AB-5B43-4D02-989E-AE2811422709",
  • "createdAt": "2019-05-12T12:45:47+02:00",
  • "modifiedAt": "2023-09-12T19:18:23+02:00"
}

PricingOption

PaymentOption

Get all pricing options

This call returns all studio pricing options.

query Parameters
sortField
string
Default: createdAt
Value: createdAt

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (PaymentOption)

Response samples

Content type
application/json
{
  • "pages": 1,
  • "totalCount": 22,
  • "currentPage": {
    },
  • "collection": [
    ]
}

Product

Get all pricing options

This call returns all studio pricing options.

query Parameters
sortField
string
Default: createdAt
Value: createdAt

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (Product)

Response samples

Content type
application/json
{}

Contract

Get all contracts

This call returns all studio contracts.

query Parameters
sortField
string
Default: createdAt
Value: createdAt

Determines by which field the collection should be sorted on.

sortDir
string
Default: asc
Enum: asc desc

Determines the sort order for the collection.

page
number
Default: 1

Determines the current page number of the collection.

count
number
Default: 1

Determines how many items should be returned in the collection.

Responses

Response Schema: application/json
pages
integer

The number of pages for the given collection.

totalCount
integer

The total number of items returned in the given collection.

object

An object describing the current page.

Array of objects (Contract)

Response samples

Content type
application/json
{}

User

Login

This call allows you to authenticate user credentials.

Request Body schema: application/json
username
required
string

The username used to login.

password
required
string

The password used to login.

Responses

Response Schema: application/json
Array
emailAddress
string

An unique user's email address.

firstName
string

The user's first name.

lastName
string

The user's last name.

sex
integer
Default: 1
Enum: 0 (male) 1 (female)

The user's gender.

suspensionType
integer
Default: null
Enum: 0 (booking) 1 (login)

If not null, returns information about what type of suspension has been set on user's account.

isSuspended
boolean
Default: false

Determines whether the user's account is suspended or not.

suspendedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account has been suspended.

suspensionExpiresAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account will be automatically released from suspension.

suspensionReason
string
Default: null

Additional reason of why user's account has been suspended.

isLoginEnabled
boolean
Default: true

Determines whether the user's login possibility is enabled or not.

activatedAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user's account has been activated (mostly via activation link in the email).

lastSeenAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The time at which user was logged in to FrontOffice for the last time.

object

Attached when user is a client type.

fullName
string

The user's first ane last name combined into one field.

hasAndroidApp
boolean
Default: false

Determines whether user is using Android app (Fitssey free app or Fitssey premium app).

hasIosApp
boolean
Default: false

Determines whether user is using iOS app (Fitssey free app or Fitssey premium app).

guid
string <guid> = 36 characters

Globally unique identifier.

createdAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was created (expressed in ISO 8601 format).

modifiedAt
datetime <Y-m-d\TH:i:s\Z>

Time at which the object was modified (expressed in ISO 8601 format). If never modified it will equal date of creation.

Request samples

Content type
application/json
{}

Response samples

Content type
application/json
[
  • {
    }
]

Get user

This call returns the user.

path Parameters
user
required
string <guid>

The guid of the User to return.

Responses

Response Schema: application/json
uuid
string

Client's public and unique ID.

object (agreements)

A list of agreements given by the client.

birthdayAt
datetime <Y-m-d\TH:i:s\Z>
Default: null

The client's birthdate.

lastActiveAt
datetime <Y-m-d H:i:s>

The last time at which client made one of the following actions: booking, purchase or payment.

object

The object describing client's postal address.

object

The object describing client's available phone numbers.

object

An uploaded image displayed in client's profile (FrontOffice and BackOffice).

Response samples

Content type
application/json
{
  • "uuid": "1000072",
  • "agreements": {
    },
  • "birthdayAt": "1980-01-19T23:00:00+01:00",
  • "lastActiveAt": "2019-09-03T08:06:23+02:00",
  • "address": {
    },
  • "phone": {
    },
}

Other endpoints

Ping the API

Checks whether the given credentials are valid for authentication.

Responses

Request samples

curl -v -X GET https://app.fitssey.com/{uuid}/api/v4/public/ping \
-H "Authorization: Bearer live_dHar4XY7LxsDOtmnkVtjNVWXLSlXsM"

Response samples

Content type
application/json
{
  • "error": {
    }
}