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": 657,
// Include only locations belonging to a specific Region
// Can be null
"region_id": 471,
// Include only locations belonging to a specific Club
// Can be null
"club_id": 825,
// 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": 23,
// 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": 669,
// The number of items to include into response
// Cannot be null
"count": 48
}
,
// 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": 29
}
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": 748
}
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": 119,
// FKL ID of the user to log in (used when there are multiple users in the account)
// Can be null
"id": 209,
// 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::Users::TrainersController
This controller provides access to trainers APIs.
GET /api/unified/users/trainers/detailed
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": 320,
// Include only trainer belonging to the SDH with id passed
// Can be null
"service_working_time_id": 664,
// Returns trainers associated to the selected service
// Can be null
"service_id": 849,
// 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": 189,
// 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": 1,
// The number of items to include into response
// Cannot be null
"count": 100
}
}
{
// The detailed collection of trainers matching criteria and pagination settings
// Cannot be null
"trainers": [ Trainer::Detailed ],
// Total number of items
// Cannot be null
"count": 62
}
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": 339,
// Include only trainer belonging to the SDH with id passed
// Can be null
"service_working_time_id": 303,
// Returns trainers associated to the selected service
// Can be null
"service_id": 375,
// 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": 464,
// 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": 887,
// The number of items to include into response
// Cannot be null
"count": 569
}
}
{
// The collection of trainers matching criteria and pagination settings
// Cannot be null
"trainers": [ Trainer::Index ],
// Total number of items
// Cannot be null
"count": 497
}
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": 771,
// 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": 786,
// The number of items to include into response
// Cannot be null
"count": 423
}
}
{
// The list of service models matching filters and pagination settings
// Cannot be null
"colors": [ Service::Colors ],
// Total number of items
// Cannot be null
"count": 764
}
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": 216,
// Include only services provided by a specific trainer
// Can be null
"trainer_id": 966,
// Include only services provided within a specific location
// Can be null
"location_id": 93,
// Include only services belonging to the service category with id passed
// Can be null
"service_category_id": 759,
// Include only services belonging to the SDH with id passed
// Can be null
"service_working_time_id": 276,
// 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": 4,
// The number of items to include into response
// Cannot be null
"count": 225
}
}
{
// The list of service models matching filters and pagination settings
// Cannot be null
"services": [ Service::Index ],
// Total number of items
// Cannot be null
"count": 735
}
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": 494
}
{
// An extended version of the service model
// Can be null
"service": Service::Show
}
Api::Unified::Services::ActivityCategoriesController
This controller provides access to activity categories, which are used to group services within a club.
GET /api/unified/services/activity_categories
Fetches all the activity categories 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":
{
// An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string",
// Whether to return activity categories with individual services only
// Can be null
"single": true,
// An id of service category to limit activity categories to
// Can be null
"service_category_id": 168,
// 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 ids and strings to peform a full-text search against
// 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": 452,
// The number of items to include into response
// Cannot be null
"count": 407
}
}
{
// The collection of activity categories matching criteria and pagination settings
// Cannot be null
"activity_categories": [ ActivityCategory::Index ],
// Total number of items
// Cannot be null
"count": 607
}
Api::Unified::Services::ServicePackagesController
This controller provides access to service packages: models incapsulating multiple services to assign / purchase bulks at once.
GET /api/unified/services/service_packages
Fetches all the service packages visible to the current user, allowing paging through them as well
as filtering by multiple fields.
{
// Returns a collection of the specified club
// Cannot be null
"club_id": 404,
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters":
{
// Returns a collection of the specified service package by id
// Can be null
"id": "Some string",
// Returns a collection from the specified location
// Can be null
"location_id": "Some string"
}
}
{
// The collection of service packages matching criteria and pagination settings
// Cannot be null
"service_packages": [ ServicePackage::Index ],
// Total number of items
// Cannot be null
"count": 437
}
GET /api/unified/services/service_packages/:id
Fetches the service package visible to a guest
The :id placeholder in the URL has to be replaced with the identifier of the entity to be manipulated.
{
// ID of the Service Package
// Cannot be null
"id": 131,
// Optional Location ID to get custom prices specific to Sales Location
// Can be null
"location_id": 179
}
{
// An extended version of the location entity
// Can be null
"service_package": ServicePackage::Show
}
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": 320,
// The number of items to include into response
// Cannot be null
"count": 351
}
}
{
// 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": 202
}
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": 516,
// The number of items to include into response
// Cannot be null
"count": 388
}
}
{
// 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": 905
}
Api::Unified::Schedule::WorkingTimesController
This controller provides API endpoints for managing working time entities.
GET /api/unified/schedule/working_times
Fetches all the working hours visible to the current club, allowing filtering by multiple fields.
{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters":
{
// An ID of the user to filter by
// Can be null
"user_id": "Some string",
// An ID of the user to filter by
// Can be null
"trainer_id": "Some string",
// An Array of trainers ID to filter by
// Can be null
"trainer_ids": [ "An", "Array", "Of", "Strings/Integers" ],
// A group_id of user to filter by
// Can be null
"trainer_group_id": "Some string",
// Show working times after this datetime
// Can be null
"since": "2026-06-16T11:55:07Z",
// Show working times before this datetime
// Can be null
"till": "2026-06-16T11:55:07Z",
// An ID of the location to filter by
// Can be null
"location_id": "Some string",
// An array of locations ID to filter by
// Can be null
"blocked_location_id": [ "An", "Array", "Of", "Strings/Integers" ]
}
}
{
// The collection of working times matching criteria
// Cannot be null
"working_times": [ WorkingTime::Index ],
// Total number of items
// Cannot be null
"count": 268
}
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 all occurrences 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 occurrences since specified date
// Can be null
"since": "2026-06-16T11:55:07Z",
// Returns occurrences till specified date
// Can be null
"till": "2026-06-16T11:55:07Z",
// Returns occurrences for the specified location
// Can be null
"location_id": 451,
// Returns occurrences for the specified sub location
// Can be null
"sub_location_id": 134,
// Returns occurrences for the specified service activity category id
// Can be null
"activity_category_id": 853,
// Returns occurrences for the specified service category
// Can be null
"service_category_id": 852,
// Returns occurrences for the specified service
// Can be null
"service_id": 639
}
,
// Sorting settings
// Can be null
"unified_sorting":
{
// Sort by id, ascending if true
// Can be null
"id": true,
// Sort by occurs_at, ascending if true
// Can be null
"occurs_at": true
}
,
// Pagination settings
// Can be null
"limit":
{
// The number of items to skip (=start from)
// Cannot be null
"start": 977,
// The number of items to include into response
// Cannot be null
"count": 988
}
}
{
// The collection of occurrences matching criteria and pagination settings
// Cannot be null
"occurrences": [ Occurrence::Index ],
// Total number of items
// Cannot be null
"count": 495
}