Api::Unified::Clubs::LocationsController

    This controller provides access to locations available to the current user.

GET /api/unified/clubs/locations

      Fetches all the locations visible to the client.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Include only locations belonging to a specific parent location
// Can be null
"parent_id": 734, // Include only locations belonging to a specific Region
// Can be null
"region_id": 936, // Include only locations belonging to a specific Club
// Can be null
"club_id": 343, // Include only hidden locations
// Can be null
"hidden": true, // A string to peform a full-text search against
// Can be null
"fulltext": "Some string", // An id of client_id for filter by his memberships locations
// Can be null
"memberships_client_id": 219, // Tag id to filter locations by
// Can be null
"tag_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Tag ids and strings to peform a full-text search against to filter locations by
// Can be null
"tags_fulltext": [ "An", "Array", "Of", "Strings/Integers" ] } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 276, // The number of items to include into response
// Cannot be null
"count": 16 } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by name, ascending if true
// Can be null
"name": true }

}
{
// The list of location models matching filters and pagination settings
// Cannot be null
"locations": [ Location::Index ], // Total number of items
// Cannot be null
"count": 276 }

GET /api/unified/clubs/locations/:id

      Shows the location entity

The :id placeholder in the URL has to be replaced with the identifier of the entity to be manipulated.

{
// Internal ID of the location
// Cannot be null
"id": 957 }
{
// A location entity
// Can be null
"location": Location::Show }

Api::Unified::SessionsController

  This controller provides a set of APIs for signing in, signing out, resetting the password and so on.

POST /api/unified/sessions/auth

      Attemps to authenticate the user using one of the implemented strategies.
      Available options are:
      * fisikal_token is used internally to cross-authenticate the user between Fisikal subsystems. Not for external use.
      * email and password are used to authenticate the user via providing Fisikal credentials.
      * dll hash is used to authenticate the user using David Lloyd oAuth data.

{
// Fisikal authentication token
// Can be null
"fisikal_token": "Some string", // FKL Club ID of the user to log in (used when there are multiple users in the account)
// Can be null
"club_id": 159, // FKL ID of the user to log in (used when there are multiple users in the account)
// Can be null
"id": 809, // A hash used for processing DLL oAuth responses
// Can be null
"dll": {
// oAuth code returned by DLL
// Cannot be null
"code": "Some string", // oAuth token returned by DLL
// Cannot be null
"token": "Some string", // Redirect URL used during authentication
// Cannot be null
"redirect_url": "Some string" } ,

// A hash used for processing FFUK auth
// Can be null
"ffuk": {
// FFUK email
// Cannot be null
"email": "Some string", // FFUK password
// Cannot be null
"password": "Some string", // FFUK identifier
// Cannot be null
"identifier": "Some string" } ,

// A hash used for processing EGYM auth
// Can be null
"egym": {
// EGYM Identity token (JWT)
// Cannot be null
"token": "Some string", // EGYM Custom token (JWT). Used when login with EGYM
// Cannot be null
"custom_token": "Some string" } ,

// A hash used for processing MGF auth responses
// Can be null
"mgf": {
// auth token returned by DLL
// Cannot be null
"token": "Some string" } ,

// Authenticate with PerfectGym
// Can be null
"perfect_gym": {
// PerfectGym member login
// Cannot be null
"login": "Some string", // PerfectGym member password
// Cannot be null
"password": "Some string" } ,

// E-mail of the user
// Can be null
"email": "Some string", // Password to authenticate with
// Can be null
"password": "Some string", // Roles accepted for signing in
// Can be null
"roles": [ "An", "Array", "Of", "Strings/Integers" ] }
{
// The user model which represents the user currently signed in
// Can be null
"user": User::Auth, // The club of the current user
// Can be null
"club": Club::Auth, // Identity entry with token information (if needed within the app)
// Can be null
"identity": Identity::Auth, // The list of alternative accounts this user can switch to
// Can be null
"users": [ User::Auth ] }

POST /api/unified/sessions/sign_up

      Attempts to create user's account within the current club.

{
// A hash containing user's attributes
// Cannot be null
"user": {
// The name of the user to be used
// Cannot be null
"name": "Some string", // The e-mail of the user to be used
// Cannot be null
"email": "Some string", // The password which user wants to be used for his account
// Can be null
"password": "Some string", // The club which users wants to be in
// Can be null
"club_id": "Some string", // The home location which user wants to be used for his account
// Can be null
"home_location_id": "Some string", // The title of the user to be used
// Can be null
"title": "Some string", // The mobile number which user wants to be used
// Can be null
"mobile_no": "Some string", // The sex of the user to be used
// Can be null
"sex": "Some string", // The date of birth of the user to be used
// Can be null
"dob": "Some string" }

}
{
// A hash containing user's attributes
// Cannot be null
"user": {
// A set of errors occurred during creating a user's account
// Cannot be null
"errors": [ Error::Index ] }

}

PUT /api/unified/sessions/restore_password

      Initiates password restore flow for the user with the email supplied.

{
// The object to identify the user
// Cannot be null
"user": {
// E-mail address of the user
// Cannot be null
"email": "Some string" }

}

DELETE /api/unified/sessions

    Clears all session data associated with a user, along with a spoof stack, if present.

Api::Unified::VersionsController

    This controller is used to obtain access to applications' versions.

GET /api/unified/versions/check

      Checks which versions of the app are configured on the backend and replies with the most
      recent one, along with a URL to that version, so that an app can suggest upgrading to the user.

{
// The identifier of the application to fetch the latest version for
// Cannot be null
"app": "Some string", // The name of the platform of the app
// Allowed values are: "ios" and "android"
// Cannot be null
"platform": "Some string" }
{
// Version string in MAJOR.MINOR.PATCH format
// Cannot be null
"version": "Some string", // The URL to the page where this specific version is available for download. Can be either an App Store / Google Play URL, or a Fisikal application download page
// Can be null
"url": "Some string" }

Api::Unified::Users::TrainersController

    This controller provides access to trainers APIs.

GET /api/unified/users/trainers

      Fetches all the trainers visible to the current user, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// An arbitrary parameter limiting the collection to 1 trainer with the specified id
// Can be null
"id": "Some string", // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // Gender of the trainer
// Can be null
"sex": true, // Boolean parameter to flag if not to show current user
// Can be null
"others": "Some string", // Boolean parameter to flag if visible or hidden trainers to be shown
// Can be null
"disabled": "Some string", // A list of group ids to show the clients from
// Can be null
"group_ids": "Some string", // A list of locations ids to show the clients from
// Can be null
"location_ids": "Some string", // Id of the service category that the trainer is assocated with
// Can be null
"service_category_id": "Some string", // Returns trainers with the specified status: active, inactive, frozen
// Can be null
"status": 563, // Include only trainer belonging to the SDH with id passed
// Can be null
"service_working_time_id": 816, // Returns trainers associated to the selected service
// Can be null
"service_id": 416, // Returns trainers who provides personal or group services
// Can be null
"individual_trainers": true, // Returns trainers who share their schedule
// Can be null
"share_schedule": true, // Returns trainers with the specified type
// Allowed values are: "Users::Trainers::Employed" and "Users::Trainers::SelfEmployed"
// Can be null
"type": [ "An", "Array", "Of", "Strings/Integers" ], // Array of Tag IDs or an arbitrary string to perform full-text search against
// Can be null
"tag_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Array of Tag IDs or an arbitrary string to perform full-text search against both tag names and trainers
// Can be null
"tags_fulltext": [ "An", "Array", "Of", "Strings/Integers" ], // Contains filters for coaches based on the relationships they have
// Can be null
"relationship": {
// Minimum strength of relationship
// Can be null
"min_strength": 45, // Ids of clients, relationships with whom will be analysed
// Can be null
"client_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Array of relationship types
// Allowed values are: "has_package_with", "has_booking_with", "has_assessment_with", "has_workout_from", "is_allocated_to", and "has_active_package_with"
// Can be null
"type": [ "An", "Array", "Of", "Strings/Integers" ] }

} ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by name, ascending if true
// Can be null
"name": true } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 269, // The number of items to include into response
// Cannot be null
"count": 285 }

}
{
// The collection of trainers matching criteria and pagination settings
// Cannot be null
"trainers": [ Trainer::Index ], // Total number of items
// Cannot be null
"count": 453 }

GET /api/unified/users/trainers/:id

      Fetches specific trainer's profile.

The :id placeholder in the URL has to be replaced with the identifier of the entity to be manipulated.

{
// Requested trainer's profile
// Cannot be null
"trainer": Trainer::Show }

Api::Unified::Services::ServicesController

    This controller provides access to services: models encapsulating the information about fitness classes in terms of duration, pricing etc.

GET /api/unified/services/services/colors

      Fetches all the service colors visible to the current user, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Returns a collection of the specified service by id
// Can be null
"id": "Some string", // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // Returns a collection of active / hidden services as specified
// Can be null
"disabled": "Some string", // Returns a collection from the specified location
// Can be null
"location_id": "Some string", // Returns a collection for the specified trainer
// Can be null
"trainer_id": "Some string", // Returns a collection with / without the client_rates
// Can be null
"client_rates": "Some string", // Returns a collection for the specified service category id
// Can be null
"service_category_id": "Some string", // Include only services belonging to the SDH with id passed
// Can be null
"service_working_time_id": 842, // Returns a collection for the specified activity category id
// Can be null
"activity_category_id": "Some string", // Returns a collection for the specified service title id
// Can be null
"service_title_id": "Some string", // Array of Tag IDs or an arbitrary string to perform full-text search against
// Can be null
"tag_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Tag id to filter services by (grouped inside tags categories])
// Can be null
"tags_grouped_by_categories": [ "An", "Array", "Of", "Strings/Integers" ] } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by service_title, ascending if true
// Can be null
"service_title": true } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 455, // The number of items to include into response
// Cannot be null
"count": 247 }

}
{
// The list of service models matching filters and pagination settings
// Cannot be null
"colors": [ Service::Colors ], // Total number of items
// Cannot be null
"count": 74 }

GET /api/unified/services/services

      Fetches all the services visible to the client, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Include only services belonging to the activity category with id passed
// Can be null
"activity_category_id": 250, // Include only services provided by a specific trainer
// Can be null
"trainer_id": 315, // Include only services provided within a specific location
// Can be null
"location_id": 436, // Include only services belonging to the service category with id passed
// Can be null
"service_category_id": 24, // Include only services belonging to the SDH with id passed
// Can be null
"service_working_time_id": 635, // A string to peform a full-text search against
// Can be null
"fulltext": "Some string", // Include only entities marked by current user as favourite
// Can be null
"starred": true, // Tag id to filter services by
// Can be null
"tag_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Tag id to filter services by (grouped inside tags categories])
// Can be null
"tags_grouped_by_categories": [ "An", "Array", "Of", "Strings/Integers" ], // Tag ids and strings to peform a full-text search against to filter services by
// Can be null
"tags_fulltext": [ "An", "Array", "Of", "Strings/Integers" ] } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by name, ascending if true
// Can be null
"name": true } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 778, // The number of items to include into response
// Cannot be null
"count": 158 }

}
{
// The list of service models matching filters and pagination settings
// Cannot be null
"services": [ Service::Index ], // Total number of items
// Cannot be null
"count": 478 }

GET /api/unified/services/services/:id

      Fetches a specific service to be presented to the client.

The :id placeholder in the URL has to be replaced with the identifier of the entity to be manipulated.

{
// Internal ID of the service
// Can be null
"id": 953 }
{
// An extended version of the service model
// Can be null
"service": Service::Show }

Api::Unified::Services::ServiceCategoriesController

    This controller provides access to service categories, which are used to group services within a club.

GET /api/unified/services/service_categories

      Fetches all the service categories available to the client.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// The name to filter service categories by
// Can be null
"name": "Some string", // Filter by show_in_member_app field
// Can be null
"show_in_member_app": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by name, ascending if true
// Can be null
"name": true } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 344, // The number of items to include into response
// Cannot be null
"count": 314 }

}
{
// The list of service category models matching filters and pagination settings
// Cannot be null
"service_categories": [ ServiceCategory::Index ], // Total number of items
// Cannot be null
"count": 997 }

Api::Unified::Schedule::ServiceWorkingTimesController

    This controller provides API endpoints for managing Service Delivery Hours (SDH) entities.

GET /api/unified/schedule/service_working_times/lookup

      Creates a new service working time entity.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Id of the occurrence to return
// Can be null
"id": "Some string", // Title of the entity
// Can be null
"fulltext": "Some string", // A status to filter by
// Can be null
"disabled": "Some string", // Only include SDH entities that are editable by current user
// Can be null
"editable": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by title, ascending if true
// Can be null
"title": true } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 14, // The number of items to include into response
// Cannot be null
"count": 729 }

}
{
// The collection of service working times matching criteria and pagination settings
// Cannot be null
"service_working_times": [ ServiceWorkingTime::Lookup ], // Total number of items
// Cannot be null
"count": 98 }

GET /api/unified/schedule/service_working_times

      Fetches all available service working time entries.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Id of the occurrence to return
// Can be null
"id": "Some string", // Title of the entity
// Can be null
"fulltext": "Some string", // A status to filter by
// Can be null
"disabled": true, // Only include SDH entities that are editable by current user
// Can be null
"editable": true, // Standard flag of SDH to filter by
// Can be null
"standard": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by title, ascending if true
// Can be null
"title": true } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 76, // The number of items to include into response
// Cannot be null
"count": 775 }

}
{
// The collection of service working times matching criteria and pagination settings
// Cannot be null
"service_working_times": [ ServiceWorkingTime::Index ], // Total number of items
// Cannot be null
"count": 951 }

Api::Unified::Schedule::OccurrencesController

    This controller is used to interact with schedule's entries, as well as provides APIs for enrolling into specific appointments.

GET /api/unified/schedule/occurrences

      Fetches occurrences available to the client based on the filters provided.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// The earliest UTC time the occurrence can start at
// Cannot be null
"since": "2025-04-29T04:05:47Z", // The latest UTC time the occurrence can start at
// Cannot be null
"till": "2025-04-29T04:05:47Z", // Optional id of the client required to be a part of the occurrence
// Can be null
"client_id": 599, // Optional id of the location required to be a part of the occurrence
// Can be null
"location_id": 184, // Returns occurrences for the specified sub location
// Can be null
"sub_location_id": 644, // Optional id of the service required to be associated to an occurrence
// Can be null
"service_id": 322, // Optional id of the service category required to be associated to a service associated to an occurrence
// Can be null
"service_category_id": 545, // Optional id of the activity category required to be associated to a service associated to an occurrence
// Can be null
"activity_category_id": 888, // Whether to include only occurrences associated to favourite services
// Can be null
"starred": true, // Return only occurrences visible on schedule
// Can be null
"visible_on_schedule": true, // Return only occurrences which are personal trainings
// Can be null
"individual": true, // Optional id of the trainer required to be associated with an occurrence
// Can be null
"trainer_id": 507, // Optional. Show occurrences which can be rated only.
// Can be null
"can_be_rated": true, // Optional. Show occurrences which can be prompted to rate.
// Can be null
"can_be_prompted": true, // Optional. Whether to include only occurrences that the client has booked and attended (true) or booked but not attended (false) or occurrences that are not booked at all (null)
// Can be null
"is_attended": true, // Array of service Tag IDs or an arbitrary string to perform full-text search against
// Can be null
"service_tag_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Array of Tag IDs or an arbitrary string to perform full-text search against
// Can be null
"tag_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Array of Tag IDs or an arbitrary string to perform full-text search against tag names, occurrences and services
// Can be null
"tags_fulltext": [ "An", "Array", "Of", "Strings/Integers" ], // Tag id to filter occurrences by (grouped inside tags categories])
// Can be null
"tags_grouped_by_categories": [ "An", "Array", "Of", "Strings/Integers" ] } ,

// Pagination settings
// Can be null
"limit": {
// The number of items to skip (=start from)
// Cannot be null
"start": 205, // The number of items to include into response
// Cannot be null
"count": 921 } ,

// Optional client id to compute presence status (joined / awaiting) and allowed actions for. Must be one of the linked clients
// Can be null
"client_id": 708 }
{
// A list of occurrences matching filters and pagination criteria
// Cannot be null
"occurrences": [ Occurrence::Index ], // Total number of items
// Cannot be null
"count": 772 }

Location::Index

        This entity represents location record of a club.
{
// Persistent identifier of the entity
// Cannot be null
"id": 118, // Id of the parent location, if this is sublocation
// Can be null
"parent_id": 274, // Whether this location is hidden
// Cannot be null
"hidden": true, // The Region ID of Location
// Can be null
"region_id": 673, // The ALT ID of Location
// Can be null
"alt_id": 380, // Full name of the location
// Cannot be null
"name": "Some string", // Short code of the location
// Cannot be null
"short_code": "Some string", // Number of the location
// Can be null
"number": 605, // Latitude of the location
// Can be null
"latitude": 68.2, // Longitude of the location
// Can be null
"longitude": 24.6, // Whether this location directory is hidden
// Cannot be null
"directory_is_enabled": true, // Name of the parent location, if available
// Can be null
"parent_name": "Some string", // Directory model
// Can be null
"directory": Directory::Show }

Directory::Show

        This entity represents location record of a directory(location).
{
// Persistent identifier of the entity
// Cannot be null
"id": 948, // Identifier of the directory location
// Cannot be null
"location_id": 113, // Š’escription of the location directory
// Cannot be null
"description": "Some string", // Main image url of the location directory
// Cannot be null
"image_url": "Some string", // Address of the location directory
// Can be null
"address": "Some string", // Postcode of the location directory
// Can be null
"postcode": "Some string", // Phone number of the location directory
// Can be null
"phone_no": "Some string", // Cover images URLS of the location directory
// Can be null
"cover_image_urls": [ "An", "Array", "Of", "Strings/Integers" ], // Location name
// Can be null
"name": "Some string", // Schedule pdf url
// Can be null
"schedule_pdf_url": "Some string", // Shows the link to the pdf enabled or not
// Can be null
"link_to_pdf_enabled": true, // Shows the service category of the directory
// Can be null
"service_category": ServiceCategory::Index, // Shows the link to the schedule enabled or not
// Cannot be null
"link_to_schedule_enabled": true, // Opening Hours of the location directory
// Can be null
"opening_hours": [ DirectoryOpeningHours::Index ] }

ServiceCategory::Index

        The service category entity represents a category associated to some services, primarely used for grouping
        services with different activities based on some common factors or for marketing purposes.
{
// Persistent identifier of the entity
// Cannot be null
"id": 433, // The name of the service category
// Cannot be null
"name": "Some string", // The name to be displayed within the app
// Cannot be null
"name_in_member_app": "Some string", // The description of the service category
// Can be null
"description": "Some string", // The URL to the service category logo, if specified
// Can be null
"logo_url": "Some string", // The direct URL to the service category video file, if specified
// Can be null
"video_url": "Some string" }

DirectoryOpeningHours::Index

        This entity represents location record of a directory(location) opening hours model.
{
// Persistent identifier of the entity
// Cannot be null
"id": 538, // Persistent Identifier of the directory
// Cannot be null
"directory_id": 794, // Š’escription of the location directory
// Can be null
"title": "Some string", // Start time
// Can be null
"start_time": "Some string", // End time
// Can be null
"end_time": "Some string" }

Location::Show

        Represents the stripped version of the user entity
{
// The internal ID of the entity
// Cannot be null
"id": 234, // The Region ID of Location
// Can be null
"region_id": 645, // The name of the entity
// Cannot be null
"title": "Some string", // The description of the entity
// Cannot be null
"description": "Some string", // Image URL of the entity
// Cannot be null
"image_url": "Some string", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

Tag::Index

        This entity encapsulates tag fields
{
// Persistent identifier of the entity
// Cannot be null
"id": 520, // Name of the tag
// Cannot be null
"name": "Some string", // Description of the tag
// Cannot be null
"description": "Some string", // Translations of the tag
// Cannot be null
"translations": "Some string", // The URL to the tag image, if specified
// Can be null
"tag_image_url": "Some string", // Is editable?
// Cannot be null
"editable": true, // Representation of Tag category which tag belongs
// Can be null
"tag_category": TagCategory::Index }

TagCategory::Index

        This entity represents a tag category
{
// Persistent identifier of the entity
// Cannot be null
"id": 529, // Is disabled?
// Cannot be null
"disabled": true, // Human array of roles
// Cannot be null
"human_user_visibility": [ "An", "Array", "Of", "Strings/Integers" ], // Contains translations data
// Cannot be null
"translations": [ "An", "Array", "Of", "Strings/Integers" ], // A set of tag categories entities
// Cannot be null
"tag_category_entities": [ "An", "Array", "Of", "Strings/Integers" ], // The URL to the tag category logo, if specified
// Can be null
"logo_url": "Some string" }

User::Auth

        Represents an authenticated user typically returned in response to authentication attempts. This entity
        encapsulates the most essential information consumed by various flavours of sign in widgets and forms.
{
// Unique identifier of the user
// Cannot be null
"id": 486, // Users's alt ID.
// Cannot be null
"alt_id": "Some string", // User's club ID.
// Cannot be null
"club_id": 480, // Display name of the user
// Cannot be null
"name": "Some string", // E-mail of the user
// Cannot be null
"email": "Some string", // URL to the avatar of the user
// Can be null
"image_url": "Some string", // URL to the cover photo of the user
// Can be null
"cover_photo_url": "Some string", // User role identifier
// Allowed values are: "Client", "Trainer", "Manager", "Users::Trainers::SelfEmployed", "Users::Trainers::Employed", and "IndependentTrainer"
// Cannot be null
"type": "Some string", // User's home location
// Can be null
"home_location_id": 342, // The name of the club
// Can be null
"club_name": "Some string", // Access PIN associated with the user's account
// Can be null
"access_pin": "Some string" }

Club::Auth

        Represents a club a specific user belongs to. This specific entity is intended to be used during
        authentication flow to present club's summary to the user.
{
// Unique identifier of the club
// Cannot be null
"id": 785, // Display name of the club
// Cannot be null
"name": "Some string", // URL to the logo of the club
// Can be null
"image_url": "Some string", // IANA time zone identifier
// Cannot be null
"time_zone": "Some string" }

Identity::Auth

        Represents an authentication handle which contains information used to complete
        various oAuth / external authentication flows, as well as Fisikal token, which can
        be used for password-less authentication.
{
// Unique identifier of the identity record
// Can be null
"id": 402, // External system's user id, if any
// Can be null
"uid": "Some string", // External system's token, if any
// Can be null
"token": "Some string", // Fisikal authentication token
// Cannot be null
"fisikal_token": "Some string" }

Error::Index

        Represents an error entry attached to an arbitrary model.
{
// The name of the field the error is attached to
// Cannot be null
"on": "Some string", // The type of the error
// Allowed values are: "is_incorrect", "booking_allowed_in_sublocations_only", "is_not_billed", "is_already_cancelled", "is_already_refunded", "is_earlier_then_tomorrow", "conflicts", "failed", "taken", "length", "confirmation", "invalid", "presence", "format", "duplicate", "working_hours_violation", "spare_schedule_violation", "individual_appointment_requires_client", "excess", "numericality", "advance_time_restriction", "not_enough_credits", "requires_action", "booking_per_day_limit_exceeded", "booking_limit_exceeded", and "waiting_list_conflicts"
// Cannot be null
"type": "Some string", // Map of validation arguments to be used (for instance, the regular expression which failed to match)
// Cannot be null
"options": {
}

}

Trainer::Index

        The lookup representation of the trainer.
{
// Persistent identifier of the entity
// Cannot be null
"id": 696, // ALT ID of the user
// Can be null
"alt_id": "Some string", // The name of the entity
// Cannot be null
"title": "Some string", // The description of the entity
// Cannot be null
"description": "Some string", // The description of the entity
// Cannot be null
"short_desc": "Some string", // The link to the image of the entity
// Cannot be null
"image_url": "Some string" }

Trainer::Show

        Represents full trainer's profile data.
{
// Id of the trainer
// Cannot be null
"id": 884, // Preferred title of the user
// Can be null
"title": "Some string", // Name of the trainer
// Cannot be null
"name": "Some string", // E-mail of the trainer
// Cannot be null
"email": "Some string", // Qualifications of the trainer
// Can be null
"qualifications": "Some string", // Biography of the trainer
// Can be null
"bio": "Some string", // Type of trainer
// Cannot be null
"type": "Some string", // Avatar image of the user
// Can be null
"image": , // Cover photo of the user
// Can be null
"cover_photo": , // Returns amounts of relationships for current user grouped by type
// Cannot be null
"relationships": {
// Strength of has_package_with relationships for given client and trainer
// Cannot be null
"has_package_with": 782, // Strength of has_booking_with relationships for given client and trainer
// Cannot be null
"has_booking_with": 69, // Strength of has_assessment_with relationships for given client and trainer
// Cannot be null
"has_assessment_with": 663, // Strength of has_workout_from relationships for given client and trainer
// Cannot be null
"has_workout_from": 954, // Strength of is_allocated_to relationships for given client and trainer
// Cannot be null
"is_allocated_to": 148, // Strength of has_active_package_with relationships for given client and trainer
// Cannot be null
"has_active_package_with": 5 } ,

// The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

Service::Colors

        Response colors for services
{
// Persistent identifier of the entity
// Cannot be null
"id": 922, // Activity category id
// Cannot be null
"activity_category_id": 184, // Schedule color for header
// Cannot be null
"schedule_color_header": 402, // Schedule color for header text
// Cannot be null
"schedule_color_header_text": 997, // Schedule color for body
// Cannot be null
"schedule_color_body": 964, // Schedule color for body text
// Cannot be null
"schedule_color_body_text": 895, // Use activity schedule colors (true/false)
// Cannot be null
"use_activity_schedule_colors": 684 }

Service::Index

        This entity represents a service provided by some trainers in some locations. It combines
        the information about service settings, favourite status etc.
{
// Persistent identifier of the entity
// Cannot be null
"id": 778, // Maximum number of attendees
// Cannot be null
"group_size": 261, // The hour part of service duration
// Cannot be null
"duration_in_hours": 834, // The minute part of service duration
// Cannot be null
"duration_in_minutes": 664, // The description of the service
// Can be null
"declaration": "Some string", // The URL to the service logo image, if specified
// Can be null
"logo_url": "Some string", // The URL to the service image, if specified
// Can be null
"service_image_url": "Some string", // The direct URL to the service video file, if specified
// Can be null
"video_url": "Some string", // The title of the service
// Cannot be null
"service_title": "Some string", // Whether the current user has marked the service as a favourite
// Cannot be null
"starred": true, // Show free spaces
// Cannot be null
"show_free_spaces": true, // Trainer remains available
// Cannot be null
"trainer_availability": true, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

Service::Show

        The extended version of the service entity which represents a service provided by some trainers in some locations. It combines
        the information about service settings, favourite status etc.
{
// Persistent identifier of the entity
// Cannot be null
"id": 827, // Maximum number of attendees
// Cannot be null
"group_size": 174, // The hour part of service duration
// Cannot be null
"duration_in_hours": 179, // The minute part of service duration
// Cannot be null
"duration_in_minutes": 295, // The description of the service
// Can be null
"declaration": "Some string", // The URL to the service logo image, if specified
// Can be null
"logo_url": "Some string", // The URL to the service image image, if specified
// Can be null
"service_image_url": "Some string", // The direct URL to the service video file, if specified
// Can be null
"video_url": "Some string", // The title of the service
// Cannot be null
"service_title": "Some string", // Whether the current user has marked the service as a favourite
// Cannot be null
"starred": true, // Show free spaces
// Cannot be null
"show_free_spaces": true, // Trainer remains available
// Cannot be null
"trainer_availability": true, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

ServiceWorkingTime::Lookup

        Represents lookup variant of service working time entity.
{
// The internal ID of the entity
// Cannot be null
"id": 41, // The name of the entity
// Cannot be null
"title": "Some string", // The description of the entity
// Cannot be null
"description": "Some string", // Image URL of the entity
// Cannot be null
"image_url": "Some string" }

ServiceWorkingTime::Index

        This entity represents a single service working time.
{
// Persistent identifier of the entity
// Cannot be null
"id": 645, // The name of the entity
// Cannot be null
"title": "Some string", // The type of the payroll scheme
// Cannot be null
"color": "Some string", // Flag indicating the SDH refers to standard working times
// Can be null
"standard": true, // A flag representing does the entity is inactive
// Can be null
"disabled": true, // Whether the current user can edit working times belonging to this SDH
// Cannot be null
"editable": true, // A list of service entities
// Cannot be null
"services": [ Service::Lookup ] }

Service::Lookup

        The lookup representation of the service.
{
// Persistent identifier of the entity
// Cannot be null
"id": 699, // The name of the entity
// Cannot be null
"title": "Some string", // The description of the entity
// Cannot be null
"description": "Some string", // The link to the image of the entity
// Cannot be null
"image_url": "Some string" }

Occurrence::Index

        This entity represents a single training event with all the information about specifics merged in.
{
// Persistent identifier of the entity
// Cannot be null
"id": 957, // UTC time this occurrence starts at
// Cannot be null
"occurs_at": "2025-04-29T04:05:47Z", // Hours part of the duration
// Cannot be null
"duration_in_hours": 816, // Minutes part of the duration
// Cannot be null
"duration_in_minutes": 220, // Activity category id for pulling data about color
// Can be null
"activity_category_id": 849, // Id of trainer associated with occurrence
// Can be null
"trainer_id": 258, // The name of the trainer performing the event
// Cannot be null
"trainer_name": "Some string", // The name of the location this event occurs in
// Cannot be null
"location_name": "Some string", // The name of the sub location this event occurs in
// Can be null
"sub_location_name": "Some string", // Id of service associated with occurrence
// Can be null
"service_id": 876, // The URL to the logo image, if specified
// Can be null
"service_logo_url": "Some string", // The title of the service this event is about
// Cannot be null
"service_title": "Some string", // The description of the service this event is about
// Can be null
"service_description": "Some string", // The maximum number of attendees allowed
// Cannot be null
"service_group_size": 933, // The number of attendees actually visited the event
// Cannot be null
"attended_clients_count": 707, // Hours before occurrence starts at to
// Can be null
"restrict_to_book_in_advance_time_in_hours": 668, // Days before occurrence starts at to
// Can be null
"restrict_to_book_in_advance_time_in_days": 85, // Calculation of how much time until the booking is open
// Can be null
"seconds_until_booking_open": 259, // The position on the waiting list (1..N)
// Cannot be null
"position_on_waiting_list": 174, // true if current user has joined this event
// Cannot be null
"is_joined": true, // true if current user has joined the waiting list of the session
// Cannot be null
"is_waiting": true, // true if the event is readonly and cannot be joined / awaited etc
// Cannot be null
"is_readonly": true, // true if current user has requsted this event, and it's not confirmed yet
// Cannot be null
"is_requested": true, // Version of occurrence
// Cannot be null
"lock_version": 728, // Returns true if occurrence has Livestream option
// Can be null
"is_online": true, // Returns Livestream origin (Zoom, youtube)
// Can be null
"livestream_origin": "Some string", // Return direct url to livestream resource
// Can be null
"livestream_url": "Some string", // Return livestream id for youtube if possible
// Can be null
"livestream_youtube_id": "Some string", // Return livestream id for vimeo if possible
// Can be null
"livestream_vimeo_id": "Some string", // Livestream available Prior in minutes
// Can be null
"livestream_available_prior": 181, // Livestream available After in minutes
// Can be null
"livestream_available_after": 193, // Show free spaces
// Can be null
"show_free_spaces": true, // Show whether the occurrence can be rated or not
// Can be null
"can_be_rated": true, // Show if it's allowed to be prompted
// Can be null
"can_be_prompted": true, // A list of actions this user is allowed to perform on this particular event
// Cannot be null
"actions": [ Occurrence::Action ], // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // The list of tag entities
// Cannot be null
"service_tags": [ Tag::Index ] }

Occurrence::Action

        This enum represents possible actions that a client can perform on an occurrence.
{
// Join the occurrence as an attendee
// Cannot be null
"join" // Penalty-free cancellation
// Cannot be null
"cancel" // Leaving occurrence's waiting list
// Cannot be null
"leave" // Declining occurrence request
// Cannot be null
"decline" // Cancelling an occurrence with billing penalties applied
// Cannot be null
"late_cancel" // Enrolling onto waiting list
// Cannot be null
"wait" // Rate the attended occurrence
// Cannot be null
"rate" // Mark the occurrence as prompted
// Cannot be null
"prompt" }