Api::Unified::TransactionsController

  This controller provides a set of APIs for managing Transactions

GET /api/unified/transactions/money

      Fetches all the money transactions available for the user.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Fetch transactions for the data till some specific date
// Can be null
"till": "2025-04-24", // Fetch transactions for the data since some specific date
// Can be null
"since": "2025-04-24", // If TRUE - returns only income transactions, if FALSE - only outcome transactions
// Can be null
"income": true } ,

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

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

}
{
// The collection of PaymentTransactions matching criteria and pagination settings
// Cannot be null
"data": [ PaymentTransaction::Money ], // Total number of items
// Cannot be null
"count": 322 }

GET /api/unified/transactions/credits

      Fetches all the credit transactions available for the user.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// The id of transaction
// Can be null
"id": 376, // Fetch transactions for the data till some specific date
// Can be null
"till": "2025-04-24", // Fetch transactions for the data since some specific date
// Can be null
"since": "2025-04-24", // The club id
// Can be null
"club_id": 796 } ,

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

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

}
{
// The collection of PaymentTransactions matching criteria and pagination settings
// Cannot be null
"data": [ PaymentTransaction::Credit ], // Total number of items
// Cannot be null
"count": 16 }

Api::Unified::Billing::PaymentTransactionsController

    This controller provides a set of APIs for managing Transactions

GET /api/unified/billing/payment_transactions

      Fetches the list of transactions for the user.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Fetch transactions for the data till some specific date
// Can be null
"till": "2025-04-24", // Fetch transactions for the data since some specific date
// Can be null
"since": "2025-04-24" } ,

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

}
{
// Transactions represents
// Can be null
"data": [ PaymentTransaction::Index ] }

Api::Unified::Billing::PurchasesController

    This controller provides a set of APIs for managing Purchases

GET /api/unified/billing/purchases/in_app_purchases

      Fetches all the stripe payments available for the user.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Client ids OR ALT_IDs to filter
// Cannot be null
"client_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Fetch transactions for the data since some specific date and time. Example: 2020-03-10T10:00:00
// Can be null
"since": "2025-04-24T03:41:21Z", // Fetch transactions for the data till some specific date and time. Format YYYY-MM-DDTHH:mm:ss
// Can be null
"till": "2025-04-24T03:41:21Z", // CSP ids
// Can be null
"service_package_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// A collection of in_app_purchases (mostly StripePayments)
// Cannot be null
"in_app_purchases": [ InAppPurchase::Index ] }

Api::Unified::ReportsController

  This controller provides a set of APIs for managing Reports

GET /api/unified/reports/names

      Fetches all the reports available for the user.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
} ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of reports matching criteria and pagination settings
// Cannot be null
"data": [ Report::Names ], // Total number of items
// Cannot be null
"count": 117 }

GET /api/unified/reports

      Fetches all the reports available for the user.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Internal ID of the report
// Can be null
"id": 15, // Boolean flag to show active / hidden reports
// Can be null
"disabled": true, // An arbitrary string to perform full-text search against
// Can be null
"name": "Some string", // Filter the reports created since specific date
// Can be null
"since": "2025-04-24", // Filter the reports created before specific date
// Can be null
"till": "2025-04-24" } ,

// Sorting settings
// Can be null
"unified_sorting": {
// Sort by date created, ascending if true
// Can be null
"created_at": "2025-04-24" } ,

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

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

POST /api/unified/reports

      Creates the reports available for the user.

{
// Contains report data to be created
// Cannot be null
"report": {
// Name of the report to create
// Cannot be null
"name": "Some string", // Create report for the data for the last N days
// Can be null
"days": "2025-04-24", // Create report for the data till some specific date
// Can be null
"till": "2025-04-24", // Create report for the data since some specific date
// Can be null
"since": "2025-04-24", // Enum of ['all', 'active', 'specific'] string field representing clients to be selected, coupled with _client_ids_ field if needed.
// Cannot be null
"clients": "Some string", // Array of IDs of the clients to use in the report data
// Can be null
"client_ids": "Some string", // Format of the report to generate (0 - csv, 1 - json, 2 - xlsx)
// Can be null
"format": 590, // (Daily sessions only) Whether to include source tracking data
// Can be null
"source_tracking": true }

}
{
// The collection of reports matching criteria and pagination settings
// Can be null
"report": Report::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/reports/:id

      Fetches the report by Id.

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

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
} ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

// Pagination settings
// Can be null
"limit": {
}

}
{
// The Report retrieved by ID
// Can be null
"report": Report::Show }

Api::Unified::Benchmarks::BenchmarksController

    This controller provides a set of APIs for managing Benchmarks

GET /api/unified/benchmarks/benchmarks

      Fetches all the Assessments visible to the current user

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Filter by Client ID
// Can be null
"user_id": 462, // Filter by Norms Set ID
// Can be null
"set_id": 333, // Show scored/unscored Assessments only
// Can be null
"scored": true, // Show active/inactive Assessments only
// Can be null
"disabled": true, // Filter the Assessments created since specific date
// Can be null
"since": "2025-04-24", // Filter the Assessments created before specific date
// Can be null
"till": "2025-04-24" } ,

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

}
{
// The collection of Benchmarks matching criteria and pagination settings
// Cannot be null
"benchmarks": [ Benchmark::Index ], // Total number of items
// Cannot be null
"count": 317 }

POST /api/unified/benchmarks/benchmarks

      Creates a Benchmark

{
// Assessment settings to create
// Cannot be null
"benchmark": {
// The ID of the Client
// Cannot be null
"user_id": 890, // A date of assessment
// Cannot be null
"date": "2025-04-24", // Notes of assessment
// Cannot be null
"notes": "Some string", // The ID Norm Set
// Cannot be null
"set_id": 872, // A list of Benchmark Values
// Cannot be null
"benchmark_values": [ BenchmarkValue::Show ] }

}
{
// Assessment object
// Cannot be null
"benchmark": {
// A set of errors occurred during creating an assessment
// Cannot be null
"errors": [ Error::Index ] }

}

PUT /api/unified/benchmarks/benchmarks/:id

      Updates a Benchmark

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

{
// Assessment settings to update
// Cannot be null
"benchmark": {
// The ID of the Client
// Cannot be null
"user_id": 222, // A date of assessment
// Cannot be null
"date": "2025-04-24", // Notes of assessment
// Cannot be null
"notes": "Some string", // The ID Norm Set
// Cannot be null
"set_id": 316, // Disable/Enable assessment
// Cannot be null
"disabled": true, // A list of Benchmark Values
// Cannot be null
"benchmark_values": [ BenchmarkValue::Show ] }

}
{
// Assessment object
// Cannot be null
"benchmark": {
// A set of errors occurred during creating an assessment
// Cannot be null
"errors": [ Error::Index ] }

}

Api::Unified::Norms::SetsController

    This controller provides a set of APIs for getting Norm Sets

GET /api/unified/norms/sets

      Fetches all the Norm Sets visible to the current user

{
// 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 include disabled Norms only
// Can be null
"disabled": true } ,

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

}
{
// The collection of Norm Sets matching criteria and pagination settings
// Cannot be null
"norm_sets": [ NormSet::Index ], // Total number of items
// Cannot be null
"count": 262 }

GET /api/unified/norms/sets/:id

      Fetches the Norm Set visible to the current user

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

{
// Represents of Norm Set
// Cannot be null
"norm_set": NormSet::Show }

Api::Unified::ClubsController

  This controller provides a set of APIs for managing Clubs

GET /api/unified/clubs/settings

      Returns the club settings for the current user

{
// Club options
// Cannot be null
"settings": Club::Settings }

GET /api/unified/clubs/survey_responses

      Pull the list of submitted surveys

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Show surveys assigned to this client only
// Can be null
"client_id": 851, // Show surveys assigned to this Fisikal location only
// Can be null
"location_id": 679, // Filter by survey type. Must be 'attendance' or 'relational'
// Cannot be null
"type": "Some string", // Show surveys submitted after this datetime
// Cannot be null
"since": "2025-04-24T03:41:21Z", // Show surveys submitted before this datetime
// Can be null
"till": "2025-04-24T03:41:21Z" } ,

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

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

}
{
// A list of surveys
// Cannot be null
"surveys": [ Survey::Show ], // The number of items to include into response
// Cannot be null
"count": 995 }

Api::Unified::Clubs::LocationsController

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

GET /api/unified/clubs/locations

      Fetches all the locations

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// IDs of the entities to return
// Can be null
"id": 841, // ALT IDs of the entities to return
// Can be null
"alt_id": 993, // Include only locations belonging to a specific parent location
// Can be null
"parent_id": 915, // Include only locations belonging to a specific Region
// Can be null
"region_id": 743, // Include only locations belonging to a specific club only
// Can be null
"club_id": 986, // Include only hidden locations
// Can be null
"hidden": true, // A string to peform a full-text search against
// Can be null
"fulltext": "Some string", // Show sublocations only
// Can be null
"sublocation": true, // Show roots only
// Can be null
"root": true, // Include only locations belonging to a specific user only
// Can be null
"user_id": 91, // An id of client_id for filter by his memberships locations
// Can be null
"memberships_client_id": 668, // Tag id to filter announcements 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": 809, // The number of items to include into response
// Cannot be null
"count": 446 }

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

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

      Fetches the location visible to the current user

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": 300 }
{
// A location entity
// Can be null
"location": Location::Show }

Api::Unified::Clubs::RegionsController

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

GET /api/unified/clubs/regions

      Fetches all the regions

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// IDs of the entities to return
// Can be null
"id": 714, // Include only disabled regions
// Can be null
"disabled": true, // A string to peform a full-text search against
// Can be null
"fulltext": "Some string" } ,

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

}
{
// The list of region models matching filters and pagination settings
// Cannot be null
"regions": [ Region::Index ], // Total number of items
// Cannot be null
"count": 146 }

Api::Unified::Clubs::DoorsController

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

GET /api/unified/clubs/doors/lookup

      Returns a list of club doors

{
// 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", // A status to filter the clients by
// Can be null
"disabled": "Some string", // An ID of the item
// Can be null
"id": 884 } ,

// 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": 234, // The number of items to include into response
// Cannot be null
"count": 592 }

}
{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"data": [ Door::Lookup ], // Total number of items
// Cannot be null
"count": 284 }

GET /api/unified/clubs/doors/init

      Returns a list of club doors

{
// The name of the location for which you want to return the available doors
// Cannot be null
"location_name": "Some string", // The hostname for which you want to return the available doors
// Can be null
"hostname": "Some string" }
{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"access_controllers": [ AccessController::Index ] }

GET /api/unified/clubs/doors

      Returns a list of club doors

{
// 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", // A status to filter the clients by
// Can be null
"disabled": "Some string", // An ID of the item
// Can be null
"id": 962 } ,

// 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": 791, // The number of items to include into response
// Cannot be null
"count": 933 }

}
{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"data": [ Door::Index ], // Total number of items
// Cannot be null
"count": 853 }

POST /api/unified/clubs/doors

      Returns a response with errors if any after creating the Door entity

{
// Hash containing door parameters
// Can be null
"door": {
// Name of the door
// Can be null
"name": "Some string", // Name of the door
// Can be null
"nomical_door_id": "Some string", // Flag to indicate if door is inactive
// Can be null
"disabled": true, // An ID of the location to associate the door with
// Can be null
"location": 46 }

}
{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"door": Door::Index, // Validation errors occured during door creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/clubs/doors/:id

      Returns a list of club doors

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

{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"door": Door::Index }

PUT /api/unified/clubs/doors/:id

      Returns a response with errors if any after creating the Door entity

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

{
// Hash containing door parameters
// Can be null
"door": {
// Name of the door
// Can be null
"name": "Some string", // Name of the door
// Can be null
"nomical_door_id": "Some string", // Flag to indicate if door is inactive
// Can be null
"disabled": true, // An ID of the location to associate the door with
// Can be null
"location": 766 }

}
{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"door": Door::Index, // Validation errors occured during door creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Clubs::DoorAccessLogsController

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

GET /api/unified/clubs/door_access_logs

      Returns a list of club door access logs

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// An ID of the item
// Can be null
"id": 988, // Include only entities provided within a specific door location
// Can be null
"location_id": 416, // Include only entities for current date
// Can be null
"today": true, // Minimum date to fetch logs since by timestamps
// Can be null
"since": "2025-04-24T03:41:21Z", // Returns logs with timestamp before the given date
// Can be null
"till": "2025-04-24T03:41:21Z", // Array of door ids to search for
// Can be null
"door_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Array of statuses to search for
// Can be null
"status": [ "An", "Array", "Of", "Strings/Integers" ], // Array of door types to search for
// Can be null
"door_type": [ "An", "Array", "Of", "Strings/Integers" ] } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of doors matching criteria and pagination settings
// Cannot be null
"data": [ DoorAccessLog::Index ], // Total number of items
// Cannot be null
"count": 464 }

POST /api/unified/clubs/door_access_logs

      Creates a Door Access Log

{
// Door Access Log settings to create
// Cannot be null
"door_access_log": {
// A datetime of Door Access
// Cannot be null
"timestamp": "2025-04-24T03:41:21Z", // User object
// Cannot be null
"user": {
// The User ID
// Cannot be null
"user_id": 24 } ,

// Door object
// Cannot be null
"door": {
// The Door ID
// Cannot be null
"door_id": 360 }

}

}
{
// Door Access Log object
// Cannot be null
"door_access_log": {
// A set of errors occurred during creating a Door Access Log
// Cannot be null
"errors": [ Error::Index ] }

}

Api::Unified::Clubs::DoorAccessOverridesController

    This controller provides access to door access overrides.

POST /api/unified/clubs/door_access_overrides

      Creates a Door Access Override

{
// Door Access Override settings to create
// Cannot be null
"door_access_override": {
// The Door Access Log Id
// Cannot be null
"door_access_log_id": 375, // Interval of Override
// Cannot be null
"minutes": "Some string" }

}
{
// A set of errors occurred during creating a Door Access Override
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Clubs::DoorAccessRequestsController

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

POST /api/unified/clubs/door_access_requests

      Request door access

{
// User Identifier from reader
// Cannot be null
"code": "Some string", // The name of Door
// Cannot be null
"door_name": 18, // The name of Location
// Cannot be null
"location_name": 270 }
{
// True / false
// Cannot be null
"allowed": true, // Text
// Cannot be null
"message": "Some string", // User Identifier
// Can be null
"user_id": "Some string" }

Api::Unified::Clubs::IdentityTypesController

      This controller provides access to identities types information to the current user.

GET /api/unified/clubs/identity_types

      Returns the list of active identity types for the client

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Include only active types (true by default)
// Can be null
"active": true, // A string to peform a full-text search against
// Can be null
"fulltext": "Some string" } ,

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

}
{
// Identities types fitting search criteria
// Cannot be null
"identity_types": [ IdentitiesType::Model ], // Total number of items
// Cannot be null
"count": 951 }

Api::Unified::Clubs::SurveysController

    This controller provides an access to complete a specific survey available to the current user.

GET /api/unified/clubs/surveys

      Pull the list of submitted surveys

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Show surveys assigned to this client only
// Can be null
"client_id": 970, // Show surveys assigned to this Fisikal location only
// Can be null
"location_id": 77, // Filter by survey type. Must be 'attendance' or 'relational'
// Cannot be null
"type": "Some string", // Show surveys submitted after this datetime
// Cannot be null
"since": "2025-04-24T03:41:21Z", // Show surveys submitted before this datetime
// Can be null
"till": "2025-04-24T03:41:21Z" } ,

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

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

}
{
// A list of surveys
// Cannot be null
"surveys": [ Survey::Show ], // The number of items to include into response
// Cannot be null
"count": 550 }

POST /api/unified/clubs/surveys

      Create a new survey for a client

{
// A new survey that will be applied to a requested user and connected to a specific location
// Cannot be null
"survey": {
// Id of client who should receive the survey
// Cannot be null
"user_id": 793, // Id of location that is being surveyed. Defaults to client home location if not present
// Can be null
"location_id": 958, // Whether survey is relational or attendance-based
// Cannot be null
"type": "Some string", // Optional reference value, used to map Circuit SendOutHistoryID
// Can be null
"alt_id": "Some string" }

}
{
// Returns the completed survey
// Can be null
"survey": Survey::Show, // The array of errors occurred during completing the survey
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Products::ClientServicePackagesController

    This controller provides access to client service packages via products: the packages assigned to a client.

POST /api/unified/products/client_service_packages/:id/refund

      Refund client service package

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

{
// Client Service package id to refund
// Can be null
"id": 599, // Client id
// Can be null
"client_id": 886, // Peyment refund params
// Can be null
"payment": {
// Payment method
// Can be null
"payment_method": "Some string", // Reference
// Can be null
"reference": "Some string", // Note
// Can be null
"note": "Some string", // Client Id
// Can be null
"client_id": 137, // Paid At date
// Can be null
"paid_at": "2025-04-24" }

}
{
// CSP
// Can be null
"client_service_package": {
// Payment
// Can be null
"payment": {
// Validation errors occured during package refunding
// Cannot be null
"errors": [ Error::Index ] }

}

}

POST /api/unified/products/client_service_packages/refund_by_payment

      Refund client service package

{
// Payment Id which is returns on CSP creation operation
// Cannot be null
"payment_id": 697 }
{
// CSP
// Can be null
"client_service_package": {
// Payment
// Can be null
"payment": {
// Validation errors occured during package refunding
// Cannot be null
"errors": [ Error::Index ] }

}

}

PUT /api/unified/products/client_service_packages/:id/terminate

      Terminate service package for client.

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

{
// Client id
// Cannot be null
"client_id": 958, // The note for termination
// Can be null
"terminated_at_note": "Some string", // Date of termination. Format: Format YYYY-MM-DDTHH:mm:ss
// Cannot be null
"terminated_at": "2025-04-24T03:41:21Z" }
{
// Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Products::TopupProductsController

    This controller provides access to top-up product that available to purchase by user.

GET /api/unified/products/topup_products

      Fetches a specific top-up products by filters.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// A string to match Top-up Products against using full-text search
// Can be null
"fulltext": "Some string", // Top up product ids
// Can be null
"id": [ "An", "Array", "Of", "Strings/Integers" ] } ,

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

}
{
// A list of Top-up Products matching filters and pagination criteria
// Cannot be null
"topup_products": [ TopupProduct::Index ], // Total number of items
// Cannot be null
"count": 779 }

GET /api/unified/products/topup_products/:id

      Fetches a specific top-up product by its id.

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

{
// A top-up product matching filters
// Can be null
"topup_product": TopupProduct::Index }

Api::Unified::Feed::SubscriptionsController

    This controller provides access to feed subscriptions models.

POST /api/unified/feed/subscriptions

      Create a club subscription to a content provider

{
// Content subscription data
// Cannot be null
"feed_subscription": {
// Content provider club identificator
// Cannot be null
"content_provider_club_id": 535, // Subscribe to announcements feed
// Cannot be null
"get_announcements": true, // Subscribe to workouts feed
// Cannot be null
"get_workouts": true, // Subscribe to products feed
// Cannot be null
"get_products": true }

}
{
// The object created by the operation
// Cannot be null
"feed_subscription": FeedSubscription::Model }

PUT /api/unified/feed/subscriptions/:id

      Update a subscription to a content provider

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

{
// Subscription identificator
// Cannot be null
"id": 997, // Content subscription data
// Cannot be null
"feed_subscription": {
// Subscribe to announcements feed
// Cannot be null
"get_announcements": true, // Subscribe to workouts feed
// Cannot be null
"get_workouts": true, // Subscribe to products feed
// Cannot be null
"get_products": true }

}
{
// The object created by the operation
// Cannot be null
"feed_subscription": FeedSubscription::Model }

DELETE /api/unified/feed/subscriptions/:id

      Deletes subscription to a content provider

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

{
// Subscription identificator
// Cannot be null
"id": 890 }
{
// The object created by the operation
// Cannot be null
"feed_subscription": FeedSubscription::Model }

Api::Unified::Feed::CollectionsController

    This controller provides CRUD operations to feed collection models.

GET /api/unified/feed/collections/lookup

      Fetches all the content collections for content provider club, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Identifier of desired entity
// Can be null
"id": 474, // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // Whether to return enabled collections
// Can be null
"enabled": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of content collections matching criteria and pagination settings
// Cannot be null
"data": [ FeedCollection::Lookup ], // Total number of items
// Cannot be null
"count": 480 }

GET /api/unified/feed/collections

      Fetches all the content collections for content provider club, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Identifier of desired entity
// Can be null
"id": 154, // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // Whether to return enabled collections
// Can be null
"enabled": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of content collections matching criteria and pagination settings
// Cannot be null
"data": [ FeedCollection::Index ], // Total number of items
// Cannot be null
"count": 474 }

POST /api/unified/feed/collections

      Creates a new feed collection

{
// Sorting settings
// Cannot be null
"feed_collection": {
// Item's title
// Can be null
"title": "Some string", // Whether the item is enabled or not
// Can be null
"enabled": true, // The list of feed items
// Cannot be null
"feed_item_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Content collection model
// Cannot be null
"feed_collection": FeedCollection::Form }

GET /api/unified/feed/collections/:id

      Returns a form model for a collection

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

{
// The identifier of the item
// Cannot be null
"id": 373 }
{
// Content collection model
// Cannot be null
"feed_collection": FeedCollection::Form }

PUT /api/unified/feed/collections/:id

      Updates existing feed collection

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

{
// The identifier of the item
// Cannot be null
"id": 667, // Sorting settings
// Cannot be null
"feed_collection": {
// Item's title
// Can be null
"title": "Some string", // Whether the item is enabled or not
// Can be null
"enabled": true, // The list of feed items
// Cannot be null
"feed_item_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Content collection model
// Cannot be null
"feed_collection": FeedCollection::Form }

DELETE /api/unified/feed/collections/:id

      Updates existing feed collection

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

{
// The identifier of the item
// Cannot be null
"id": 819 }

Api::Unified::Feed::ItemsController

    This controller provides CRUD operations to feed item models.

GET /api/unified/feed/items/lookup

      Fetches feed items, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Cannot be null
"unified_filters": {
// Item identificator
// Can be null
"id": 488, // Feed item type
// Cannot be null
"item_type": "Some string", // Filter by enabled flag
// Can be null
"enabled": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of items matching criteria and pagination settings
// Cannot be null
"data": [ FeedItem::Lookup ], // Total number of items
// Cannot be null
"count": 121 }

Api::Unified::Feed::IntervalDaysController

    This controller provides CRUD operations to feed interval days.

GET /api/unified/feed/interval_days

      Fetches all the content interval days for content provider club, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// The identifier of the feed timeline
// Can be null
"feed_timeline_id": 893, // Interval number to limit the interval days
// Can be null
"interval_number": 657 }

}
{
// The collection of content interval days matching criteria and pagination settings
// Cannot be null
"data": [ FeedIntervalDay::Model ], // Total number of items
// Cannot be null
"count": 325 }

PUT /api/unified/feed/interval_days/:id

      Updates existing feed interval day

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

{
// The identifier of the item
// Cannot be null
"id": 690, // Sorting settings
// Cannot be null
"feed_interval_day": {
// The list of the colletion interval days join models
// Cannot be null
"feed_collection_interval_days": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Content interval day model
// Cannot be null
"feed_interval_day": FeedIntervalDay::Model }

Api::Unified::Feed::TimelinesController

    This controller provides CRUD operations to feed timelines.

GET /api/unified/feed/timelines/lookup

      Fetches all the content collections for content provider club, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Identifier of desired entity
// Can be null
"id": 291, // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // Whether to return enabled collections
// Can be null
"enabled": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of content collections matching criteria and pagination settings
// Cannot be null
"data": [ FeedTimeline::Lookup ], // Total number of items
// Cannot be null
"count": 128 }

POST /api/unified/feed/timelines/:id/copy

      Clones a timeline

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

{
// The identifier of the item
// Cannot be null
"id": 152 }
{
// Content timeline model
// Cannot be null
"feed_timeline": FeedTimeline::Form }

GET /api/unified/feed/timelines

      Fetches all the feed timlines for content provider club, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Identifier of desired entity
// Can be null
"id": 434, // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // Whether to return enabled collections
// Can be null
"enabled": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

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

POST /api/unified/feed/timelines

      Creates a new feed timeline

{
// Timeline attributes
// Cannot be null
"feed_timeline": {
// Item's title
// Can be null
"title": "Some string", // Whether the item is enabled or not
// Can be null
"enabled": true, // Interval type
// Can be null
"interval_type": "Some string", // Number of intervals
// Can be null
"number_of_intervals": 42, // Interval visibility period
// Can be null
"visibility_period": 15, // Send notifications or not?
// Can be null
"send_notifications": true, // Human array of roles to deliver to
// Can be null
"human_user_visibility": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Content timeline model
// Cannot be null
"feed_timeline": FeedTimeline::Form }

GET /api/unified/feed/timelines/:id

      Returns a form model for a timeline

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

{
// The identifier of the item
// Cannot be null
"id": 305 }
{
// Content timeline model
// Cannot be null
"feed_timeline": FeedTimeline::Form }

PUT /api/unified/feed/timelines/:id

      Updates existing feed timeline

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

{
// The identifier of the item
// Cannot be null
"id": 177, // Timeline attributes
// Cannot be null
"feed_timeline": {
// Item's title
// Can be null
"title": "Some string", // Whether the item is enabled or not
// Can be null
"enabled": true, // Send notifications or not?
// Can be null
"send_notifications": true, // Human array of roles to deliver to
// Can be null
"human_user_visibility": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Content timeline model
// Cannot be null
"feed_timeline": FeedTimeline::Form }

DELETE /api/unified/feed/timelines/:id

      Updates existing feed timeline

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

{
// The identifier of the item
// Cannot be null
"id": 800 }

Api::Unified::Feed::TimelineSubscriptionsController

    This controller provides CRUD operations to feed timeline subscriptions.

GET /api/unified/feed/timeline_subscriptions

      Fetches all the timeline subscriptions for content provider club, allowing paging through them as well
      as filtering by multiple fields.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Identifier of desired entity
// Can be null
"id": 18, // Identifier of the target club
// Can be null
"target_club_id": 962, // Whether to return enabled items
// Can be null
"enabled": true } ,

// Sorting settings
// Can be null
"unified_sorting": {
} ,

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

}
{
// The collection of content collections matching criteria and pagination settings
// Cannot be null
"data": [ FeedTimelineSubscription::Model ], // Total number of items
// Cannot be null
"count": 825 }

POST /api/unified/feed/timeline_subscriptions

      Creates a new feed timelime subscription

{
// Sorting settings
// Cannot be null
"feed_timeline_subscription": {
// Target club identificator
// Cannot be null
"target_club_id": 576, // Feed timeline identificator
// Cannot be null
"feed_timeline_id": 498, // Start date for subscription
// Cannot be null
"start_date": "2025-04-24T03:41:21Z", // Contract duration in weeks
// Cannot be null
"contract_length_in_weeks": 576, // Is the item is active or not
// Cannot be null
"enabled": true, // Subscription start
// Cannot be null
"subscription_start": "Some string" }

}
{
// Feed timeline subscription model
// Cannot be null
"feed_timeline_subscription": FeedTimelineSubscription::Model }

GET /api/unified/feed/timeline_subscriptions/:id

      Returns a form model for a collection

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

{
// The identifier of the item
// Cannot be null
"id": 41 }
{
// Content collection model
// Cannot be null
"feed_timeline_subscription": FeedTimelineSubscription::Model }

PUT /api/unified/feed/timeline_subscriptions/:id

      Updates existing feed collection

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

{
// The identifier of the item
// Cannot be null
"id": 673, // Sorting settings
// Cannot be null
"feed_timeline_subscription": {
// Start date for subscription
// Cannot be null
"end_date": "2025-04-24T03:41:21Z", // If the item is active or not
// Cannot be null
"enabled": true }

}
{
// Content collection model
// Cannot be null
"feed_timeline_subscription": FeedTimelineSubscription::Model }

DELETE /api/unified/feed/timeline_subscriptions/:id

      Updates existing feed timeline subscription

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

{
// The identifier of the item
// Cannot be null
"id": 693 }

Api::Unified::Orders::OrdersController

    This controller provides access to orders creation.

POST /api/unified/orders/orders

      Creates an _FULL_ _CASH_ Order for selected product.

{
// A collection of purchase objects
// Cannot be null
"purchases": [ Order::Purchase ], // Contains information about the payment
// Can be null
"internal_payment": {
// Contains free text note for the payment
// Cannot be null
"note": "Some string", // Contains internal reference of the payment
// Cannot be null
"reference": "Some string", // Contains integer code of the payment method
// Cannot be null
"payment_method": 197, // Date when the payment for the package was registered
// Can be null
"paid_at": "2025-04-24" } ,

// Id of the Client model to assign the purchases
// Cannot be null
"client_id": 872 }
{
// The object created by the operation
// Cannot be null
"order": Order::Create, // Validation errors occured during create message
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Shop::Payments::OfflineController

      This controller provides API endpoints for processing Offline payments.

POST /api/unified/shop/payments/offline/checkout

      Attempts to complete the order using Stripe card token supplied.

{
// Stripe data to complete purchase with
// Cannot be null
"offline": {
// Id of the order to pay for
// Cannot be null
"order_id": 557 }

}
{
// Returns the resulting order with purchased items
// Cannot be null
"order": Order::Purchased, // The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Shop::Payments::CashController

      This controller provides API endpoints for processing Offline payments.

POST /api/unified/shop/payments/cash/checkout

      Attempts to complete the order using Stripe card token supplied.

{
// Cash data to complete purchase with
// Cannot be null
"cash": {
// Id of the order to pay for
// Cannot be null
"order_id": 549 }

}
{
// Returns the resulting order with purchased items
// Cannot be null
"order": Order::Purchased, // The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Shop::Payments::WalletController

      This controller provides API endpoints for processing Wallet payments.

POST /api/unified/shop/payments/wallet/checkout

      Attempts to complete the order using Wallet flow.

{
// Wallet data to complete purchase with
// Cannot be null
"wallet": {
// Id of the order to pay for
// Cannot be null
"order_id": 368 }

}
{
// Returns the resulting order with purchased items
// Cannot be null
"order": Order::Purchased, // The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Shop::Payments::StripeController

      This controller provides API endpoints for processing Stripe payments.

POST /api/unified/shop/payments/stripe/checkout

      Attempts to complete the order using Stripe card token supplied.

{
// Stripe data to complete purchase with
// Cannot be null
"stripe": {
// Id of the order to pay for
// Cannot be null
"order_id": 494, // Credit card ID for a stored card
// Can be null
"credit_card_id": 731, // Stripe's payment method token
// Can be null
"payment_method_token": "Some string", // Stripe return_url
// Can be null
"return_url": "Some string" }

}
{
// Returns the resulting order with purchased items
// Cannot be null
"order": Order::Purchased, // The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

POST /api/unified/shop/payments/stripe/confirm

      Attempts to complete the order using Stripe card token supplied.

{
// Stripe data to complete purchase with
// Cannot be null
"stripe": {
// Id of the order to pay for
// Cannot be null
"order_id": 636, // Credit card ID for a stored card
// Can be null
"credit_card_id": 626, // Stripe's payment method token
// Can be null
"payment_intent_token": "Some string" }

}
{
// Returns the resulting order with purchased items
// Cannot be null
"order": Order::Purchased, // The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Shop::Payments::SpreedlyController

      This controller provides API endpoints for processing Spreedly payments.

POST /api/unified/shop/payments/spreedly/checkout

      Attempts to complete the order using Spreedly token supplied.

{
// Spreedly data to complete purchase with
// Cannot be null
"spreedly": {
// The Name of Payment Provider
// Cannot be null
"payment_provider": "Some string", // Id of the order to pay for
// Cannot be null
"order_id": 992, // Credit card ID for a stored card
// Can be null
"credit_card_id": 873, // Spreedly token
// Can be null
"token": "Some string" }

}
{
// Returns the resulting order with purchased items
// Cannot be null
"order": Order::Purchased, // Transaction token of transaction
// Cannot be null
"transaction_token": "Some string", // The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Shop::ShopController

    This controller provides access to forming an order out of the product
    cart supplied.

POST /api/unified/shop/shop/purchase

      Prepares an order being given a set of items to be purchased.

{
// A collection of purchase objects
// Cannot be null
"purchases": [ Order::Purchase ], // Contains information about the payment
// Can be null
"internal_payment": {
// Contains free text note for the payment
// Cannot be null
"note": "Some string", // Contains internal reference of the payment
// Cannot be null
"reference": "Some string", // Contains internal payment payment date to overwrite
// Cannot be null
"paid_at": "2025-04-24", // Contains integer code of the payment method
// Cannot be null
"payment_method": 251, // Contains ID of location
// Cannot be null
"location_id": 651 } ,

// The URL to redirect when the order completes successfully
// Can be null
"success_url": "Some string", // The URL to redirect when the order fails to complete
// Can be null
"failure_url": "Some string", // The URL to redirect to after a gateway-specific 3DS2 flow in Spreedly
// Can be null
"spreedly_return_url": "Some string", // Id of the Client model to assign the purchases
// Cannot be null
"client_id": 931 }
{
// Payment intent object prepared for the requested set of purchases.
// Can be null
"payment_intent": System::PaymentProcessors::PaymentIntent, // Validation errors occured during create message
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Lookups::CountriesController

    This controller provides access to country data available to Fisikal clubs.

GET /api/unified/lookups/countries

      This operation lists all countries defined within Fisikal's internal database. This countries
      are safe to be refered anywhere where country id is required.

{
// The collection of countries
// Cannot be null
"countries": [ Country::Index ] }

Api::Unified::SessionsController

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

PUT /api/unified/sessions/change_password

      This operation processes password change request for the current user. It requires
      the user to supply a correct current password in order to succeed.

{
// The user model with current and new password
// Cannot be null
"user": User::Password }
{
// The user model with current and new password
// Cannot be null
"user": User::Password }

PUT /api/unified/sessions/switch_account

      This operation attempts to switch a user to his alternative account.

{
// The id of the alternative user account to switch to
// Cannot be null
"user_id": 49 }
{
// 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 ] }

DELETE /api/unified/sessions

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

Api::Unified::Media::DiariesController

    This controller provides access to diary models. An diary is a rich media entity, encapsulating media information (video or document) and context data (description, category and so on).

GET /api/unified/media/diaries

      Returns diaries

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Filter by category name
// Can be null
"category": "Some string", // Filter by user ids
// Can be null
"user_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

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

Api::Unified::Media::AnnouncementsController

    This controller provides access to announcement models. An announcement is a rich media entity, encapsulating media information (video or document) and context data (description, category and so on).

GET /api/unified/media/announcements

      Fetches all the announcements 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 include only items marked as favourites by the user
// Can be null
"starred": true, // Whether to include only featured announcements
// Can be null
"featured": true, // Type of announcements to include
// Allowed values are: "video", "pdf", and "text"
// Can be null
"kind": "Some string", // Announcement category id to filter announcements by
// Can be null
"category_ids": 9, // 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 announcements by (grouped inside tags categories])
// Can be null
"tags_grouped_by_categories": [ "An", "Array", "Of", "Strings/Integers" ], // Array of Tag IDs or an arbitrary string to perform full-text search against both tag names and announcements
// 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": 565, // The number of items to include into response
// Cannot be null
"count": 92 }

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

GET /api/unified/media/announcements/:id

      Fetches one announcement with all the complementary details (like web player URL and original file URL).

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

{
// The extended version of announcement entity with the id requested
// Cannot be null
"announcement": Announcement::Show }

Api::Unified::Media::FilesController

    This controller provides access to media files.

GET /api/unified/media/files

      Fetches all the media files visible to the trainer, 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", // 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 media files
// 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": 555, // The number of items to include into response
// Cannot be null
"count": 909 }

}
{
// The list of media files models matching filters and pagination settings
// Cannot be null
"data": [ MediaFile::Lookup ], // Total number of items
// Cannot be null
"count": 296 }

GET /api/unified/media/files/:id

      Fetches  media files visible to the trainer

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

{
// Internal ID of the media file
// Can be null
"id": 576 }
{
// The media file details
// Can be null
"media_file": MediaFile::Show }

Api::Unified::Media::AnnouncementCategoriesController

    This controller provides access to announcement category models.

GET /api/unified/media/announcement_categories

      Fetches all announcement categories visible to a client.

{
// 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 include enabled categories only
// Can be null
"disabled": true, // Whether to include All Announcements category
// Can be null
"is_overall_category": true, // Include only entities marked by current user as favourite
// Can be null
"starred": true, // Include only selected announcement categories club
// Can be null
"club_id": 136 } ,

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

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

}
{
// The collection of announcement categories matching criteria and pagination settings
// Cannot be null
"announcement_categories": [ AnnouncementCategory::Index ], // Total number of items
// Cannot be null
"count": 144 }

Api::Unified::Media::CommunicationsController

    This controller provides access to Communication models.

POST /api/unified/media/communications

      Send a new message to the user(s)

{
// Communication details hash
// Cannot be null
"communication": {
// Subject of message
// Cannot be null
"subject": "Some string", // Body of message
// Cannot be null
"body": "Some string", // Deeplink of message (for pushes)
// Can be null
"deeplink_url": "Some string", // Date and time of delivery of message
// Can be null
"deliver_at": "2025-04-24", // Groups ids to send a message
// Cannot be null
"group_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Type of delivery
// Allowed values are: "email" and "push"
// Cannot be null
"deliver_by": "Some string", // Users ids to send a message
// Cannot be null
"user_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Serialized message for user
// Can be null
"communication": Communication::Show, // Validation errors occured during create message
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Media::WorkoutsController

    This controller provides access to workout models. Each workout is composed of multiple exercises, each having time settings, video URLs and other data.

POST /api/unified/media/workouts/:id/fork

Returns a single workout entry after forking.

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

{
// The ID of the workout record you want to fork
// Cannot be null
"id": 808 }
{
// Forked Workout
// Cannot be null
"workout": Workout::Form, // Validation errors occured during creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/media/workouts

      Fetches all the workouts 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 string to perform full-text search against
// Can be null
"fulltext": "Some string", // Workout category id to filter workouts by
// Can be null
"category_ids": 501, // Whether to include Workouts owned by current user only
// Can be null
"my": true, // Whether to include disabled Workouts only
// Can be null
"disabled": true, // Whether to include starred Workouts only
// Can be null
"starred": true, // 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 workouts
// 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": 422, // The number of items to include into response
// Cannot be null
"count": 344 } ,

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

}
{
// The list of workout models matching filters and pagination settings
// Cannot be null
"workouts": [ Workout::Index ], // Total number of items
// Cannot be null
"count": 978 }

POST /api/unified/media/workouts

Returns a single exercise entry suitable to be displayed on the form

{
// Input form fields
// Cannot be null
"workout": Workout::Form }
{
// Created Workout
// Cannot be null
"workout": Workout::Form, // Validation errors occured during creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/media/workouts/:id

      Fetches one workout with all the complementary details (like exercises collection).

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

{
// Internal ID of the workout
// Cannot be null
"id": 262 }
{
// An extended version of workout model
// Cannot be null
"workout": Workout::Form }

PUT /api/unified/media/workouts/:id

Returns a single exercise entry suitable to be displayed on the form

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

{
// Input form fields
// Cannot be null
"workout": Workout::Form }
{
// Created Workout
// Cannot be null
"workout": Workout::Form, // Validation errors occured during creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Media::WorkoutCategoriesController

    This controller provides access to workout category models.

GET /api/unified/media/workout_categories

      Fetches all the Workout Categories (WC) 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 WC 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 WC as specified
// Can be null
"hidden": true, // Include only entities marked by current user as favourite
// Can be null
"starred": true, // Include only selected WC club
// Can be null
"club_id": 163 } ,

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

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

}
{
// The collection of WC matching criteria and pagination settings
// Cannot be null
"data": [ WorkoutCategory::Index ], // Total number of items
// Cannot be null
"count": 481 }

Api::Unified::Media::ExercisesController

    This controller provides access to exercise models.

GET /api/unified/media/exercises

      Fetches all exercises provided as a library items.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Id to filter exercises by
// Can be null
"id": 725, // Full text search
// Can be null
"fulltext": "Some string", // Filter by status
// Can be null
"enabled": true, // Filter by category
// Can be null
"exercise_category_ids": 993, // Include only my exercises
// Can be null
"my": true, // Include only disabled exercises
// Can be null
"disabled": true, // Include only specific user exercises
// Can be null
"created_by_id": 493, // Include public or private exercises
// Can be null
"visibility": "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" ], // Array of Tag IDs or an arbitrary string to perform full-text search against by both tag names and exercises
// 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": 923, // The number of items to include into response
// Cannot be null
"count": 86 }

}
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"data": [ Excercise::Index ], // Total number of items
// Cannot be null
"count": 585 }

POST /api/unified/media/exercises

Returns a single exercise entry suitable to be displayed on the form

{
// Input form fields
// Cannot be null
"exercise": Excercise::Form }
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"exercise": Excercise::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/media/exercises/:id

Returns a single exercise entry suitable to be displayed on the form

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

{
// Internal ID of the exercise
// Cannot be null
"id": 703 }
{
// The collection of exercises matching criteria and pagination settings
// Can be null
"exercise": Excercise::Show }

PUT /api/unified/media/exercises/:id

Returns a single exercise entry suitable to be displayed on the form

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

{
// Input form fields
// Cannot be null
"exercise": Excercise::Form }
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"exercise": Excercise::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Media::ExerciseCategoriesController

    This controller provides access to exercise category models.

GET /api/unified/media/exercise_categories/lookup

      Fetches all exercise categories.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Id to filter exercises by
// Can be null
"id": 293, // Full text search
// Can be null
"fulltext": "Some string", // Filter by status
// Can be null
"hidden": true, // Include only third-party categories
// Can be null
"delivered_content": true } ,

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

}
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"data": [ ExerciseCategory::Lookup ], // Total number of items
// Cannot be null
"count": 697 }

GET /api/unified/media/exercise_categories

      Fetches all exercise categories.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Id to filter exercises by
// Can be null
"id": 351, // Full text search
// Can be null
"fulltext": "Some string", // Filter by status
// Can be null
"hidden": true, // Include only third-party categories
// Can be null
"delivered_content": true } ,

// 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": 265 }

}
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"data": [ ExerciseCategory::Show ], // Total number of items
// Cannot be null
"count": 565 }

POST /api/unified/media/exercise_categories

      Creates a new exercise category.

{
// Name of the category
// Can be null
"name": "Some string", // Description of the category
// Can be null
"description": "Some string", // Whether the category is hidden
// Can be null
"hidden": true, // Color of the category
// Can be null
"colour": "Some string", // Display priority
// Can be null
"priority": 557, // Attributes of the exercise category
// Can be null
"exercise_category": {
}

}
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"exercise_category": ExerciseCategory::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/media/exercise_categories/:id

      Returns an existing exercise category.

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

{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"exercise_category": ExerciseCategory::Show }

PUT /api/unified/media/exercise_categories/:id

      Updates an existing exercise category.

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

{
// Name of the category
// Can be null
"name": "Some string", // Description of the category
// Can be null
"description": "Some string", // Whether the category is hidden
// Can be null
"hidden": true, // Color of the category
// Can be null
"colour": "Some string", // Display priority
// Can be null
"priority": 516, // Attributes of the exercise category
// Can be null
"exercise_category": {
}

}
{
// The collection of exercises matching criteria and pagination settings
// Cannot be null
"exercise_category": ExerciseCategory::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Media::NotesController

    This controller provides access to notes models.

GET /api/unified/media/notes

      Fetches all clients notes.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Id to filter notes by
// Can be null
"id": 45, // Full text search
// Can be null
"fulltext": "Some string", // Client Id to filter notes by
// Can be null
"client_id": 418, // Filter by note type
// Can be null
"note_type": true, // Include only disabled exercises
// Can be null
"disabled": true, // Include only specific user notes
// Can be null
"created_by_id": 123 } ,

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

}
{
// The collection of notes matching criteria and pagination settings
// Cannot be null
"data": [ Note::Index ], // Total number of items
// Cannot be null
"count": 805 }

POST /api/unified/media/notes

        Create new note entity.

{
// Input form fields
// Cannot be null
"note": Note::Form }
{
// The entity of Note matching criteria and settings
// Cannot be null
"note": Note::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/media/notes/:id

       Returns a single exercise entry suitable to be displayed on the form

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

{
// The note that added by staff to user
// Cannot be null
"note": Note::Show }

PUT /api/unified/media/notes/:id

Returns a single note entry suitable to be displayed on the form

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

{
// Input form fields
// Cannot be null
"note": Note::Form }
{
// The entity of Note matching criteria and settings
// Cannot be null
"note": Note::Show, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Users::GroupsController

    This controller provides API for groups management.

GET /api/unified/users/groups

      Shows a list of all groups in Fisikal

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// An id of the group to filter by
// Can be null
"id": 569, // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string", // A flag to show only clients groups
// Can be null
"clients": true, // A flag to show only trainers groups
// Can be null
"trainers": true, // A flag to show generic groups
// Can be null
"generic": true, // A status flag groups
// Can be null
"disabled": true, // A flag to show only AllClientsGroup group
// Can be null
"only_all_active_clients": 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": 95, // The number of items to include into response
// Cannot be null
"count": 20 }

}
{
// A list of groups
// Cannot be null
"groups": [ Group::Index ], // The number of items to include into response
// Cannot be null
"count": 485 }

POST /api/unified/users/groups

      Creates a new group in Fisikal

{
// Group details hash
// Cannot be null
"group": {
// The name of the group
// Cannot be null
"name": "Some string", // Status of the group, true goes for inactive group.
// Allowed values are: "true" and "false"
// Can be null
"disabled": true, // Array of user ids to include in the group
// Can be null
"user_ids": "Some string" }

}
{
// A newly created group
// Cannot be null
"group": Group::Index, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/users/groups/:id

      Shows a group in Fisikal

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

{
// Fisikal ID of the group to show=
// Cannot be null
"id": 425 }
{
// A newly created group
// Cannot be null
"group": Group::Index }

PUT /api/unified/users/groups/:id

      Updates a group in Fisikal

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

{
// Fisikal ID of the group to update
// Cannot be null
"id": 461, // Group details hash
// Cannot be null
"group": {
// The name of the group
// Cannot be null
"name": "Some string", // Status of the group, true goes for inactive group.
// Allowed values are: "true" and "false"
// Can be null
"disabled": true, // Array of all user ids to include in the group
// Can be null
"user_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// A newly created group
// Cannot be null
"group": Group::Index, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Users::UiPreferencesController

    This controller provides access to create/read/update User UI Preferences

GET /api/unified/users/ui_preferences/lookup

      Shows User UI Preferences

{
// User UI Preference Type
// Cannot be null
"preference_type": "Some string" }
{
// User UI Preference object
// Can be null
"user_ui_preference": UserUiPreference::Lookup, // Errors related to User UI Preference object
// Cannot be null
"errors": [ Error::Index ] }

PUT /api/unified/users/ui_preferences

      Creates User UI Preferences

{
// User UI Preferences to create
// Cannot be null
"preferences": {
// Access Control Settings
// Can be null
"access_control_settings": "Some string", // Fisikal Web Settings
// Can be null
"fisikal_web_settings": "Some string", // Client Product Settings
// Can be null
"client_product_settings": "Some string" }

}
{
// Status of update operation of User UI Preference
// Cannot be null
"status": "Some string" }

Api::Unified::Users::ProfileController

      This controller provides REST Api for getting and updating current user's profile information.

DELETE /api/unified/users/profile/delete

      This operation attempts to delete current user's profile details.

{
// The client password
// Cannot be null
"password": "Some string" }
{
// Validation errors occured during creating rate
// Can be null
"errors": [ Error::Index ] }

GET /api/unified/users/profile

      This operation returns current user's profile details, which can be used on a form or as an extended
      information to be displayed.

{
// The current user's profile details
// Cannot be null
"user": Profile::Form }

PUT /api/unified/users/profile

      This operation attempts to update current user's profile details.

{
// The current user's profile details
// Cannot be null
"user": Profile::Form }
{
// The current user's profile details
// Cannot be null
"user": Profile::Form }

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": 669, // Include only trainer belonging to the SDH with id passed
// Can be null
"service_working_time_id": 300, // Returns trainers associated to the selected service
// Can be null
"service_id": 830, // 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": 585, // 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": 5, // The number of items to include into response
// Cannot be null
"count": 301 }

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

POST /api/unified/users/trainers

      Creates a new trainer in Fisikal

{
// Trainer details
// Cannot be null
"trainer": Trainer::Form }
{
// A newly created trainer
// Cannot be null
"trainer": Trainer::Form, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

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

      Fetches a specific trainer to be presented to the manager.

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

{
// Returns trainer entity
// Cannot be null
"trainer": Trainer::Show }

PUT /api/unified/users/trainers/:id

      Updates a trainer in Fisikal

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

{
// Fisikal ID of the trainer to update
// Cannot be null
"id": 742, // Trainer details
// Cannot be null
"trainer": Trainer::Form }
{
// An updated trainer
// Cannot be null
"trainer": Trainer::Form, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Users::ClientsController

    This controller provides access to client management, including linked clients management.

GET /api/unified/users/clients

      Fetches all the clients 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 string to perform full-text search against
// Can be null
"fulltext": "Some string", // An alt_id of the client to filter by
// Can be null
"alt_id": "Some string", // An array of IDs of Clients to exclude from the result
// Can be null
"exclude_ids": "Some string", // An array of Fisikal client IDs to include in the result
// Can be null
"include": "Some string", // A boolean flag to represent to show either only active or inactive clients
// Can be null
"active": true, // To only show clients with private setting
// Can be null
"private": true, // 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", // A status to filter the clients by
// Can be null
"status": "Some string", // An ID of the lead trainer to limit the clients by
// Can be null
"guardian_angel": 424, // Show clients with active notifications pending
// Can be null
"with_alerts": true, // Show clients with disabilities
// Can be null
"with_disabilities": true, // Show clients who owe credits for their sessions
// Can be null
"with_sessions_owed": true, // 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 clients
// Can be null
"tags_fulltext": [ "An", "Array", "Of", "Strings/Integers" ], // A datetime field to represent clients since update_at
// Can be null
"updated_at_since": "2025-04-24T03:41:21Z", // A datetime field to represent clients till update_at
// Can be null
"updated_at_till": "2025-04-24T03:41:21Z" } ,

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

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

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

POST /api/unified/users/clients

      Creates a new user in Fisikal

{
// Client details hash
// Cannot be null
"client": {
// The id of client entry, if applicable
// Can be null
"id": 686, // Full name of the user
// Cannot be null
"name": "Some string", // Defines if the user is able to create the appointment: 0 - Request appointment, 1 - Create an appointmetn
// Allowed values are: 0 and 1
// Can be null
"appointment_permission_code": "Some string", // Email of the user
// Cannot be null
"email": "Some string", // Password for the client, that will be autogenerated with random alpha numeric string if left blank
// Can be null
"password": "Some string", // Confirmation of the Password field
// Can be null
"password_confirmation": "Some string", //
// Can be null
"image": "Some string", // Access status of the client, set it to true to disable the user's access to the system.
// Allowed values are: true and false
// Cannot be null
"disabled": true, // Reference code of the client
// Can be null
"alt_id": "Some string", //
// Can be null
"disabled_until": "2025-04-24", //
// Can be null
"disabled_description": "Some string", //
// Can be null
"disability_id": 720, //
// Can be null
"title": "Some string", // Boolean flag for the users gender, true stands for male.
// Allowed values are: "true" and "false"
// Cannot be null
"sex": true, // Date of birth
// Can be null
"dob": "2025-04-24", //
// Can be null
"mobile_no": "Some string", //
// Can be null
"phone_no": "Some string", //
// Can be null
"work_no": "Some string", //
// Can be null
"address_1": "Some string", //
// Can be null
"address_2": "Some string", //
// Can be null
"address_3": "Some string", //
// Can be null
"town": "Some string", //
// Can be null
"postcode": "Some string", // Fisikal Id of the user's country
// Cannot be null
"country_id": 648, // Defines if the client is allocated to the trainers
// Can be null
"allocated_trainers": true, // Array of Fisikal Ids of the trainers allocated to the user
// Can be null
"allocated_to_ids": "Some string", // Boolean flag to trigger sending welcome email.
// Can be null
"send_welcome_email": true, // Nomical User ID
// Can be null
"nomical_user_id": "Some string", // Fisikal id of the lead trainer
// Can be null
"lead_trainer_id": 441, // Fisikal id of the region user is from
// Can be null
"region_id": 14, // Array of Fisikal Ids of the locations user is associated to
// Can be null
"location_ids": "Some string", // Fisikal Id of the location that is default for the user
// Can be null
"home_location_id": 673, // Date when user has joined the club. (Can be different from the created_at date)
// Can be null
"joined_club": "2025-04-24", // Fisikal Id of the course.
// Can be null
"course_id": 633, // Fisikal Id of the ethnicity of the user
// Can be null
"ethnicity_id": 407, // String containing health condition
// Can be null
"health_condition": "Some string", // Boolean flag defining if the user want's to receive newsletters from Fisikal
// Can be null
"receive_newsletter": true, // Level of the client
// Can be null
"level": "Some string", // String description of the user's source
// Can be null
"source": "Some string", //
// Can be null
"manual_delivered_by": "Some string", // Array of Fisikal User Ids of the clients linked to the user
// Can be null
"linked_client_ids": "Some string", // Fisikal User Ids of the client user is linked to
// Can be null
"linked_to_client_id": 781, // Array of Fisikal Group Ids the user is assocated to
// Can be null
"group_ids": "Some string", // Access PIN of the client
// Can be null
"access_pin": "Some string", // National ID
// Can be null
"national_id": "Some string", // Next of kin
// Can be null
"next_of_kin": "Some string", // Emergency contact number
// Can be null
"emergency_contact_number": "Some string", // Wallet enabled
// Can be null
"wallet_enabled": true, // Leadbetter: Main hand
// Can be null
"main_hand": "Some string", // Leadbetter: student type
// Can be null
"lga_student_type": "Some string", // Leadbetter: Golfzone nickname
// Can be null
"nickname": "Some string", // Rehabilitation attributes
// Cannot be null
"rehabilitation": {
//
// Cannot be null
"policy_number": "Some string", //
// Cannot be null
"group_number": "Some string", //
// Cannot be null
"additional_info": "Some string", //
// Cannot be null
"insurance_company_id": 450 } ,

// Interests attributes
// Cannot be null
"interests": {
// Fisikal id of the interest
// Cannot be null
"id": 877, // Fisikal id of the interest entity
// Cannot be null
"interested_in_id": 676, // Fisikal type of the interest entity
// Cannot be null
"interested_in_type": "Some string" } ,

// Tier IDs
// Can be null
"tier_ids": 544, // Flag indicating to accept T&Cs
// Can be null
"tos": true, // Client Referral ID
// Can be null
"snap_ref": "Some string" }

}
{
// A newly created client
// Cannot be null
"client": Client::Index, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/users/clients/:id

      Fetches individual details of a client being given client's id.

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

{
// The data of the client being queried
// Cannot be null
"client": Client::Show }

PUT /api/unified/users/clients/:id

      Updates a new user in Fisikal

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

{
// Fisikal ID of the client to update
// Cannot be null
"id": 851, // Client details hash
// Cannot be null
"client": {
// The id of client entry, if applicable
// Can be null
"id": 818, // Full name of the user
// Cannot be null
"name": "Some string", // Defines if the user is able to create the appointment: 0 - Request appointment, 1 - Create an appointmetn
// Allowed values are: 0 and 1
// Can be null
"appointment_permission_code": "Some string", // Email of the user
// Cannot be null
"email": "Some string", //
// Can be null
"image": "Some string", // Access status of the client, set it to true to disable the user's access to the system.
// Allowed values are: true and false
// Cannot be null
"disabled": true, // Reference code of the client
// Can be null
"alt_id": "Some string", //
// Can be null
"disabled_until": "2025-04-24", //
// Can be null
"disabled_description": "Some string", //
// Can be null
"disability_id": 546, //
// Can be null
"title": "Some string", // Boolean flag for the users gender, true stands for male.
// Allowed values are: "true" and "false"
// Cannot be null
"sex": true, //
// Can be null
"dob": "2025-04-24", //
// Can be null
"mobile_no": "Some string", //
// Can be null
"phone_no": "Some string", //
// Can be null
"work_no": "Some string", //
// Can be null
"address_1": "Some string", //
// Can be null
"address_2": "Some string", //
// Can be null
"address_3": "Some string", //
// Can be null
"town": "Some string", //
// Can be null
"postcode": "Some string", // Fisikal Id of the user's country
// Cannot be null
"country_id": 298, // International two letters identifier of the country user is from
// Cannot be null
"country_code": "Some string", // Defines if the client is allocated to the trainers
// Can be null
"allocated_trainers": true, // Array of Fisikal Ids of the trainers allocated to the user
// Can be null
"allocated_to_ids": "Some string", // Boolean flag to trigger sending welcome email.
// Can be null
"send_welcome_email": true, // Access PIN of the client
// Can be null
"access_pin": "Some string", // Fisikal id of the lead trainer
// Can be null
"lead_trainer_id": 665, // Fisikal id of the region user is from
// Can be null
"region_id": 839, // Array of Fisikal Ids of the locations user is associated to
// Can be null
"location_ids": "Some string", // Fisikal Id of the location that is default home for the user
// Can be null
"home_location_id": 386, // Fisikal Id of the location that is default-default for the user
// Can be null
"default_location_id": 530, // Date when user has joined the club. (Can be different from the created_at date)
// Can be null
"joined_club": "2025-04-24", // Fisikal Id of the course.
// Can be null
"course_id": 644, // Fisikal Id of the ethnicity of the user
// Can be null
"ethnicity_id": 824, // String containing health condition
// Can be null
"health_condition": "Some string", // Boolean flag defining if the user want's to receive newsletters from Fisikal
// Can be null
"receive_newsletter": true, // Level of the client
// Can be null
"level": "Some string", // String description of the user's source
// Can be null
"source": "Some string", //
// Can be null
"manual_delivered_by": "Some string", // Array of Fisikal User Ids of the clients linked to the user
// Can be null
"linked_client_ids": "Some string", // Fisikal User Ids of the client user is linked to
// Can be null
"linked_to_client_id": 366, // Array of Fisikal Group Ids the user is assocated to
// Can be null
"group_ids": "Some string", // Flag to delete user
// Can be null
"deleted": true, // Nomical User ID
// Can be null
"nomical_user_id": "Some string", // National ID
// Can be null
"national_id": "Some string", // Next of kin
// Can be null
"next_of_kin": "Some string", // Emergency contact number
// Can be null
"emergency_contact_number": "Some string", // Wallet enabled
// Can be null
"wallet_enabled": true, // Leadbetter: Main hand
// Can be null
"main_hand": "Some string", // Leadbetter: student type
// Can be null
"lga_student_type": "Some string", // Leadbetter: Golfzone nickname
// Can be null
"nickname": "Some string", // Rehabilitation attributes
// Cannot be null
"rehabilitation": {
//
// Cannot be null
"policy_number": "Some string", //
// Cannot be null
"group_number": "Some string", //
// Cannot be null
"additional_info": "Some string", //
// Cannot be null
"insurance_company_id": 430 } ,

// Interests attributes
// Cannot be null
"interests": {
// Fisikal id of the interest
// Cannot be null
"id": 353, // Fisikal id of the interest entity
// Cannot be null
"interested_in_id": 660, // Fisikal type of the interest entity
// Cannot be null
"interested_in_type": "Some string" } ,

// Tier ID
// Can be null
"tier_ids": 795 }

}
{
// A newly created client
// Cannot be null
"client": Client::Index, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Users::SettingSetsController

    This controller provides access to permissions data.

GET /api/unified/users/setting_sets/edit

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

{
// Permission keys enabled for the current user
// Cannot be null
"permissions": [ "An", "Array", "Of", "Strings/Integers" ] }

Api::Unified::Users::DiscountsController

    This controller provides API for getting a list of Discounts.

GET /api/unified/users/discounts

      Fetches all the Discounts visible to the current user

{
// 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" }

}
{
// The collection of Discounts matching criteria
// Cannot be null
"discounts": [ Discount::Show ], // Total number of items
// Cannot be null
"count": 384 }

Api::Unified::Users::CreditCardsController

    This controller provides API for getting a stored credit cards.

PUT /api/unified/users/credit_cards/confirm

      Confirm current user's credit card.

{
// The array of errors occurred during payment processing
// Cannot be null
"errors": [ Error::Index ] }

POST /api/unified/users/credit_cards

      Create a new current user's credit card being given token and provider.

{
// The user ID
// Cannot be null
"user_id": 128, // Token to create the card
// Can be null
"token": "Some string", // Provider to create the card from
// Allowed values are: "stripe", "spreedly_globalpayments", and "spreedly_checkout"
// Cannot be null
"provider": "Some string" }
{
// Transaction token
// Cannot be null
"transaction_token": "Some string", // Represents of credit card
// Can be null
"credit_card": CreditCard::Index, // The array of errors occurred during payment processing
// Can be null
"errors": [ Error::Index ] }

PUT /api/unified/users/credit_cards

      Updates current user's credit card being given stripe token.

{
// Stripe data to create the card from
// Cannot be null
"stripe": {
// Stripe token to create the card from
// Can be null
"token": "Some string", // The user ID
// Cannot be null
"user_id": 63, // Stripe return_url
// Can be null
"return_url": "Some string" }

}
{
// Represents of credit card
// Can be null
"credit_card": CreditCard::Index, // The array of errors occurred during payment processing
// Can be null
"errors": [ Error::Index ] }

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/all

      Fetches all the services 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": 554, // 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" ], // 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 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": 272, // The number of items to include into response
// Cannot be null
"count": 255 }

}
{
// The collection of services matching criteria and pagination settings
// Cannot be null
"services": [ Service::All ], // Total number of items
// Cannot be null
"count": 531 }

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": 268, // 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": 936, // The number of items to include into response
// Cannot be null
"count": 334 }

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

GET /api/unified/services/services

      Fetches all the services 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": 517, // 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" ], // 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 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": 811, // The number of items to include into response
// Cannot be null
"count": 481 }

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

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

      Fetches service visible for the manager

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

{
// Internal ID of the service
// Cannot be null
"id": 151 }
{
// A service entity
// 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 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 activity category 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 activities as specified
// Can be null
"hidden": true, // 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" ] } ,

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

}
{
// The collection of activity categories matching criteria and pagination settings
// Cannot be null
"data": [ ActivityCategory::Index ], // Total number of items
// Cannot be null
"count": 147 }

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

      Shows a Activity category entity

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

{
// Internal ID of a activity category
// Cannot be null
"id": 181 }
{
// A activity category entity
// Cannot be null
"activity_category": ActivityCategory::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 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 category 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 categories as specified
// Can be null
"disabled": true, // Tag id to filter service category by
// Can be null
"tag_ids": [ "An", "Array", "Of", "Strings/Integers" ] } ,

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

}
{
// The collection of service categories matching criteria and pagination settings
// Cannot be null
"data": [ ServiceCategory::Index ], // Total number of items
// Cannot be null
"count": 896 }

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

      Fetches service category visible for the manager

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

{
// Internal ID of the service
// Cannot be null
"id": 478 }
{
// A service category entity
// Can be null
"service_category": ServiceCategory::Show }

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/lookup

      Fetches all the service packages 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 service
// Can be null
"service_id": "Some string", // Returns a collection for the specified trainer
// Can be null
"trainer_id": "Some string", // Returns a collection for the specified service category id
// Can be null
"service_category_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 service packages 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 service packages 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, // Sort by position, ascending if true
// Can be null
"position": true } ,

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

// Optional Client ID to get custom prices for specified Client
// Can be null
"client_id": 410, // Optional Location ID to get custom prices specific to Sales Location
// Can be null
"location_id": 137 }
{
// The collection of service packages matching criteria and pagination settings
// Cannot be null
"data": [ ServicePackage::Lookup ], // Total number of items
// Cannot be null
"count": 905 }

GET /api/unified/services/service_packages/:id/client

      Fetches the service package visible to the current user

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

{
// Returns specified service by id
// Cannot be null
"id": 434, // Client ID for custom price calculation
// Cannot be null
"client_id": 332, // Location ID for custom price calculation
// Can be null
"location_id": 648 }
{
// The service packags matching criteria
// Cannot be null
"service_package": ServicePackage::Show }

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.

{
// 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 service
// Can be null
"service_id": "Some string", // Returns a collection for the specified trainer
// Can be null
"trainer_id": "Some string", // Returns a collection for the specified service category id
// Can be null
"service_category_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 service packages 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 service packages 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, // Sort by position, ascending if true
// Can be null
"position": true } ,

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

// Optional Client ID to get custom prices for specified Client
// Can be null
"client_id": 331, // Optional Location ID to get custom prices specific to Sales Location
// Can be null
"location_id": 312 }
{
// 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": 999 }

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

      Fetches the service package visible to the current user

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": 308, // Optional Client ID to get custom prices for specified Client
// Can be null
"client_id": 725, // Optional Location ID to get custom prices specific to Sales Location
// Can be null
"location_id": 695 }
{
// An extended version of the location entity
// Can be null
"service_package": ServicePackage::Show }

Api::Unified::Services::BundlesController

    This controller provides access to bundles: models incapsulating multiple packages to assign / purchase.

GET /api/unified/services/bundles

      Fetches all the bundles

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// IDs of the entities to return
// Can be null
"id": 406, // Include only disabled bundles
// Can be null
"disabled": true, // A string to peform a full-text search against
// Can be null
"fulltext": "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 bundles by (grouped inside tags categories)
// Can be null
"tags_grouped_by_categories": [ "An", "Array", "Of", "Strings/Integers" ], // Array of Tag IDs or an arbitrary string to perform full-text search against both tag names and bundles
// 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": 99, // The number of items to include into response
// Cannot be null
"count": 525 }

}
{
// The list of bundles matching filters and pagination settings
// Cannot be null
"bundles": [ Bundle::Index ], // Total number of items
// Cannot be null
"count": 879 }

Api::Unified::Services::ClientServicePackagesController

    This controller provides access to client service packages: the packages assigned to a client.

GET /api/unified/services/client_service_packages

      Fetches all the Client Service Packages assigned to the specified user

{
// The ID of the Client
// Cannot be null
"client_id": 846, // Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Type of packages to search for
// Allowed values are: "active", "expired", and "archived"
// Can be null
"status": "Some string", // Whether to include refunded Packages only
// Can be null
"refunded": true, // The purchase method that was used to purchase the package
// Allowed values are: "stripe" and "api"
// Can be null
"payment_method": "Some string" } ,

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

}
{
// The collection of Client Service Packages matching criteria and pagination settings
// Cannot be null
"client_service_packages": [ ClientServicePackage::Index ], // Total number of items
// Cannot be null
"count": 544 }

POST /api/unified/services/client_service_packages

      Assigns service package to the user

{
// Service Package ID to assign
// Can be null
"service_package_id": 264, // Service Package ALT ID to assign
// Can be null
"service_package_alt_id": 901, // Payment details hash (CSP)
// Cannot be null
"payment": {
// Client id to associate the package to
// Cannot be null
"client_id": 61, // Type of assignment: 0 – Full payment; 1 – Deposit payment.
// Cannot be null
"payment_type": 142, // Contains free text note for the payment
// Can be null
"note": "Some string", // Contains internal reference of the payment
// Can be null
"reference": "Some string", // Provides installment attributes in case #payment_type is set to Deposit
// Can be null
"installment_attributes": {
// Paid deposit amount
// Cannot be null
"amount": 426 } ,

// Provides additional assignment options
// Can be null
"payment_options": {
// Date when the payment for the package was registered. Defaults to current date
// Can be null
"paid_at": "2025-04-24", // Date when assigned service package should start on. Defaults to current date
// Can be null
"starts_at": "2025-04-24", // Number of installments for deposit payments
// Can be null
"num_of_installments": 829, // ALT ID for Service package assignment
// Can be null
"alt_id": "Some string" } ,

// Provides dicount attributes
// Can be null
"discounts_attributes": [ Discount::Show ] }

}
{
// Serialized payment for payment assignment
// Can be null
"payment": InternalPayment::Show, // Validation errors occured during package assignment
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Services::TrainerActivitiesController

    This controller provides access to trainer activities: models encapsulating service, trainer and location which are
    used to manage appointments.

GET /api/unified/services/trainer_activities

      Fetches all trainer activities matching provided filters. Trainer Activities connect trainers to services they can deliver in locations where they can deliver them. Use the Trainer Activity ID when creating an Appointment.

{
// 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", // Limit results to services that allow booking only
// Can be null
"available_book": true, // Limit results to enabled trainer activities only
// Can be null
"disabled": true, // Limit results to enabled services only
// Can be null
"service_disabled": true, // Location id to limit the search by
// Can be null
"location_id": 119, // Service id to limit the search by
// Can be null
"service_id": 718, // Trainer id to limit the search by
// Can be null
"trainer_id": 341 } ,

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

}
{
// The collection of Trainer Activities matching criteria and pagination settings
// Cannot be null
"trainer_activities": [ TrainerActivity::Index ] }

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": 965, // The number of items to include into response
// Cannot be null
"count": 822 }

}
{
// 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": 856 }

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": 972, // The number of items to include into response
// Cannot be null
"count": 347 }

}
{
// 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": 936 }

POST /api/unified/schedule/service_working_times

      Creates a new service working time entity.

{
// Service Working Time entity attributes and relations map
// Cannot be null
"service_working_time": ServiceWorkingTime::Form }
{
// Service Working Time entity attributes and relations map
// Cannot be null
"service_working_time": ServiceWorkingTime::Form, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/schedule/service_working_times/:id

      Fetches the service working time by Id.

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

{
// The Service working time retrieved by ID
// Can be null
"service_working_time": ServiceWorkingTime::Form }

PUT /api/unified/schedule/service_working_times/:id

      Creates a new service working time entity.

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

{
// Service Working Time entity attributes and relations map
// Cannot be null
"service_working_time": ServiceWorkingTime::Form }
{
// Service Working Time entity attributes and relations map
// Cannot be null
"service_working_time": ServiceWorkingTime::Form, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::Schedule::AppointmentsController

    This controller to manage bookings and various schedule validations.

POST /api/unified/schedule/appointments/precheck

      Precheck for an appointment (going through all validations).

{
// Appointment settings to create
// Cannot be null
"appointment": {
// Client ids to book into the appointment
// Cannot be null
"client_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Sub-location id to use for booking
// Can be null
"location_id": 342, // Trainer activity id to use for booking
// Cannot be null
"trainer_activity_id": 871, // Reccurrence settings
// Cannot be null
"reccurrence_attributes": {
// The date and time of the very first occurrence
// Cannot be null
"starts_at": "2025-04-24T03:41:21Z", // The maximum date of the very last occurrence to be created
// Cannot be null
"ends_at": "2025-04-24T03:41:21Z", // The template to be used for scheduling repeated booking. Client role cannot create repeated bookings – that's why the template contains only single entry
// Allowed values are: "single"
// Cannot be null
"template": "Some string" }

}

}
{
// Possible appointment object
// Cannot be null
"appointment": {
// A set of errors occurred during prechecks for an appointment
// Cannot be null
"errors": [ Error::Index ] }

}

POST /api/unified/schedule/appointments

      Creates an appointment performing all required validations and sending email notifications in case of success.

{
// Appointment settings to create
// Cannot be null
"appointment": {
// Client ids to book into the appointment
// Cannot be null
"client_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Sub-location id to use for booking
// Can be null
"location_id": 997, // Trainer activity id to use for booking
// Cannot be null
"trainer_activity_id": 61, // Reccurrence settings
// Cannot be null
"reccurrence_attributes": {
// The date and time of the very first occurrence
// Cannot be null
"starts_at": "2025-04-24T03:41:21Z", // The maximum date of the very last occurrence to be created
// Cannot be null
"ends_at": "2025-04-24T03:41:21Z", // The template to be used for scheduling repeated booking. Client role cannot create repeated bookings – that's why the template contains only single entry
// Allowed values are: "single"
// Cannot be null
"template": "Some string" }

}

}
{
// Possible appointment object
// Cannot be null
"appointment": {
// A set of errors occurred during prechecks for an appointment
// Cannot be null
"errors": [ Error::Index ] }

}

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/timetable

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

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Returns occurrences since specified date
// Can be null
"since": "2025-04-24T03:41:21Z", // Returns occurrences till specified date
// Can be null
"till": "2025-04-24T03:41:21Z", // Returns occurrences for the specified location
// Can be null
"location_id": 410, // Returns occurrences for the specified sub location
// Can be null
"sub_location_id": 459, // Returns occurrences for the specified service activity category id
// Can be null
"activity_category_id": 297, // Returns occurrences for the specified service category
// Can be null
"service_category_id": 139, // Returns occurrences for the specified service
// Can be null
"service_id": 325 } ,

// 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": 113, // The number of items to include into response
// Cannot be null
"count": 4 }

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

DELETE /api/unified/schedule/occurrences/:id/cancel

      Cancels the whole occurrence, optionally refunding the clients.

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

{
// Whether to try refunding any billed clients.
// Cannot be null
"do_refund": true }
{
// A set of errors occurred during cancellation process
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/schedule/occurrences/:id

      Fetches a specific occurrence to be presented to the manager.

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

{
// Internal ID of the occurrence
// Cannot be null
"id": 570 }
{
// An extended version of the service model
// Can be null
"occurrence": Occurrence::Show }

GET /api/unified/schedule/occurrences/:id/room_map

      Gets details about an occurrence with Room map.

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

{
// An extended occurrence model with Room map
// Cannot be null
"occurrence": Occurrence::RoomMap }

PUT /api/unified/schedule/occurrences/:id/attendees

      Change attendees size in past Occurrences

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

{
// Count of attendees.
// Cannot be null
"count": 458 }
{
// The occurrence model with associated data.
// Cannot be null
"occurrence": Occurrence::Edit }

PUT /api/unified/schedule/occurrences/:id

      Updates the occurrence with the data provided.

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

{
// Occurrence attributes to modify
// Cannot be null
"occurrence": {
// Client ids to add to the occurrence
// Can be null
"client_ids_to_add": [ "An", "Array", "Of", "Strings/Integers" ], // Duration of appointment in hours
// Can be null
"duration_in_hours": 39, // Duration of appointment in minutes
// Can be null
"duration_in_minutes": 243, // Time of the occurrence start
// Can be null
"occurs_at": "2025-04-24T03:41:21Z", // New Ends At for the reccurring appointment
// Can be null
"extend_till": "2025-04-24T03:41:21Z", // Appointment notes
// Can be null
"notes": "Some string" }

}
{
// The occurrence model with associated data
// Cannot be null
"occurrences": [ Occurrence::Edit ] }

GET /api/unified/schedule/occurrences

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

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Returns occurrences since specified date
// Can be null
"since": "2025-04-24T03:41:21Z", // Returns occurrences till specified date
// Can be null
"till": "2025-04-24T03:41:21Z", // Returns occurrences for the specified location
// Can be null
"location_id": 457, // Returns occurrences for the specified sub location
// Can be null
"sub_location_id": 586, // Returns occurrences for the specified service activity category id
// Can be null
"activity_category_id": 498, // Returns occurrences for the specified service category
// Can be null
"service_category_id": 878, // Returns occurrences for the specified service
// Can be null
"service_id": 21 } ,

// 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": 885, // The number of items to include into response
// Cannot be null
"count": 572 }

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

Api::Unified::Schedule::OccurrenceClientsController

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

GET /api/unified/schedule/occurrence_clients/all

      Fetches all occurrence_clients visible to the current user
      Returns a streaming file

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Client ID
// Can be null
"client_id": 240, // Location ID
// Can be null
"location_id": 871, // Sub Location ID
// Can be null
"sub_location_id": 417, // A datetime field to represent occurrence clients since occurrence occurs_at
// Can be null
"since": "2025-04-24T03:41:21Z", // A datetime field to represent occurrence clients till occurrence occurs_at
// Can be null
"till": "2025-04-24T03:41:21Z" }

}

GET /api/unified/schedule/occurrence_clients/updated

      Fetches updated occurrence_clients visible to the current user
      Returns a streaming file

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// A datetime field to represent all entities which were updated
// Can be null
"timestamp": "2025-04-24T03:41:21Z", // Client ID
// Can be null
"client_id": 684, // Location ID
// Can be null
"location_id": 719, // Sub Location ID
// Can be null
"sub_location_id": 658, // A datetime field to represent occurrence clients since occurrence occurs_at
// Can be null
"since": "2025-04-24T03:41:21Z", // A datetime field to represent occurrence clients till occurrence occurs_at
// Can be null
"till": "2025-04-24T03:41:21Z" }

}

DELETE /api/unified/schedule/occurrence_clients/:id/cancel

      Cancels the occurrence client, optionally refunding the billing.

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

{
// Whether to try refunding the billing
// Cannot be null
"do_refund": true }
{
// The updated occurrence client model
// Cannot be null
"occurrence_client": OccurrenceClient::Edit, // A set of errors occurred during cancellation process
// Cannot be null
"errors": [ Error::Index ] }

PUT /api/unified/schedule/occurrence_clients/:id/attend

      Changes the attendance of the specified occurrence client.

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

{
// A set of attributes to change
// Cannot be null
"occurrence_client": {
// Whether to mark the occurrence_client as attended
// Cannot be null
"is_attended": true }

}
{
// The updated occurrence client model
// Cannot be null
"occurrence_client": OccurrenceClient::Edit }

PUT /api/unified/schedule/occurrence_clients/:id/force_to_push

      Force pushing to rate.

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

{
// Force pushing to rate at specific date and time
// Cannot be null
"deliver_at": "2025-04-24T03:41:21Z" }
{
// The updated occurrence client model
// Cannot be null
"occurrence_client": OccurrenceClient::Edit, // A set of errors occurred during force pushing process
// Cannot be null
"errors": [ Error::Index ] }

PUT /api/unified/schedule/occurrence_clients/:id/force_to_prompt

      Force prompting to rate.

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

{
// Mark the occurrence as one to be force prompting to rate
// Cannot be null
"force_prompt": true }
{
// The updated occurrence client model
// Cannot be null
"occurrence_client": OccurrenceClient::Edit, // A set of errors occurred during force prompting process
// Cannot be null
"errors": [ Error::Index ] }

GET /api/unified/schedule/occurrence_clients

      Fetches all the occurrence_clients 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": {
// Occurrence client ID
// Can be null
"id": 281, // Client ID
// Can be null
"client_id": 200, // Occurrence ID
// Can be null
"occurrence_id": 817, // A boolean flag to represent billing status
// Can be null
"is_billed": true, // A boolean flag to represent refund status
// Can be null
"is_refunded": true, // A boolean flag to represent cancellation status
// Can be null
"is_cancelled": true, // A boolean flag to represent attendance status
// Can be null
"is_attended": true, // A datetime field to represent occurrence clients since occurrence occurs_at
// Can be null
"since": "2025-04-24T03:41:21Z", // A datetime field to represent occurrence clients till occurrence occurs_at
// Can be null
"till": "2025-04-24T03:41:21Z" } ,

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

}
{
// The collection of occurrence clients matching criteria and pagination settings
// Cannot be null
"occurrence_clients": [ OccurrenceClient::Index ], // Total number of items
// Cannot be null
"count": 797 }

Api::Unified::Tags::TagsController

    This controller is used to fetch tags.

GET /api/unified/tags/tags

      Fetches all tags available for the current manager.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Include only tags which have announcements in a specific announcement category
// Can be null
"announcement_category_id": 978, // Tag category id to filter tags by
// Can be null
"tag_category_id": 484, // Workout category id. Integer or Array of Integers
// Can be null
"workout_category_id": 547, // Type of tag entity category
// Allowed values are: "workouts", "exercises", "media", "announcements", "locations", "activity_categories", "service_categories", "services", "service_packages", "trainers", "clients", "occurrences", and "bundles"
// Can be null
"entity_type": "Some string", // Array of tag categories names
// Can be null
"tag_categories": [ "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": 567, // The number of items to include into response
// Cannot be null
"count": 642 }

}
{
// The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // Total number of items
// Cannot be null
"count": 871 }

Api::Unified::TagCategoriesController

  This controller provides access to tag categories

GET /api/unified/tag_categories

      Fetches tag categories matching provided filters.

{
// Contains filters to limit response by specific criteria
// Can be null
"unified_filters": {
// Tag category id to limit the search by
// Can be null
"id": 548, // An arbitrary string to perform full-text search against
// Can be null
"fulltext": "Some string" }

}
{
// The collection of tag categories matching criteria and pagination settings
// Cannot be null
"data": [ TagCategory::Index ], // Total number of items
// Cannot be null
"count": 688 }

GET /api/unified/tag_categories/:id

      Fetches one tag category with all the complementary details.

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

{
// Internal ID of the service
// Cannot be null
"id": 802 }
{
// The extended version of tag category entity with the ID requested
// Cannot be null
"tag_category": TagCategory::Show }

Api::Unified::Payroll::SchemesController

    This controller provides access to payroll schemes

GET /api/unified/payroll/schemes

      Fetches payroll schemes of the current club

{
// 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": "2025-04-24T03:41:21Z", // A boolean flag to represent to show either only active or inactive payroll schemes
// Can be null
"disabled": "2025-04-24T03:41:21Z", // A boolean flag to represent to show either only active or inactive payroll schemes
// Can be null
"type": "2025-04-24T03:41:21Z" } ,

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

}
{
// A list of payroll schemes matching filters and pagination criteria
// Cannot be null
"data": [ PayrollScheme::Index ], // Total number of items
// Cannot be null
"count": 181 }

POST /api/unified/payroll/schemes

      Creates a new payroll scheme entity.

{
// Payroll scheme entity attributes and relations map
// Cannot be null
"payroll_scheme": PayrollScheme::Form }
{
// Payroll scheme entity attributes and relations map
// Cannot be null
"payroll_scheme": PayrollScheme::Form }

GET /api/unified/payroll/schemes/:id/edit

      Fetches the payroll scheme by id given

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

{
// The identificator of a requested entity
// Cannot be null
"id": 811 }
{
// An extended payroll scheme model with errors array (if any occurred during the operation)
// Cannot be null
"payroll_scheme": PayrollScheme::Form }

PUT /api/unified/payroll/schemes/:id

      Updating an existing payroll scheme entity.

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

{
// Payroll scheme entity attributes and relations map
// Cannot be null
"payroll_scheme": PayrollScheme::Form }
{
// Payroll scheme entity attributes and relations map
// Cannot be null
"payroll_scheme": PayrollScheme::Form }

DELETE /api/unified/payroll/schemes/:id

      Destroy the payroll scheme by id given

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

{
// The identificator of a requested entity
// Cannot be null
"id": 77 }

Api::Unified::Settings::NotificationSettingsSetsController

    This controller provides a set of APIs for managing Notification Settings

GET /api/unified/settings/notification_settings_sets/personal

        Represent NotificationSettingsSet list

{
// Notificationsettings set
// Cannot be null
"notification_settings_set": NotificationSettingsSet::Index }

Api::Unified::MessagesController

  This controller provides a set of APIs for managing Messages

POST /api/unified/messages

      Send a new message to the user(s)

{
// Communication details hash
// Cannot be null
"communication": {
// Subject of message
// Cannot be null
"subject": "Some string", // Body of message
// Cannot be null
"body": "Some string", // Deeplink of message (for pushes)
// Can be null
"deeplink_url": "Some string", // Date and time of delivery of message
// Can be null
"deliver_at": "2025-04-24", // Groups ids to send a message
// Cannot be null
"group_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Type of delivery
// Allowed values are: "email" and "push"
// Cannot be null
"deliver_by": "Some string", // Users ids to send a message
// Cannot be null
"user_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}
{
// Serialized message for user
// Can be null
"communication": Communication::Show, // Validation errors occured during create message
// Cannot be null
"errors": [ Error::Index ] }

Api::Unified::IdentityController

  This controller provides a set of APIs for managing users' identities.

GET /api/unified/identity/users

      Returns the user record for given identity

{
// Contains filters to limit response by specific criteria
// Cannot be null
"unified_filters": {
// The value (uid) of identity
// Cannot be null
"value": "Some string", // Id of identity type (group)
// Cannot be null
"identities_type_id": 449 }

}
{
// A user with given identity
// Can be null
"user": User::Lookup }

GET /api/unified/identity

      Returns the list of identities for the client

{
// Contains filters to limit response by specific criteria
// Cannot be null
"unified_filters": {
// ID of the cllient
// Cannot be null
"user_id": 411 } ,

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

}
{
// Identities fitting search criteria
// Cannot be null
"identities": [ Identity::Model ], // Total number of items
// Cannot be null
"count": 13 }

POST /api/unified/identity

      Creates a new user identity

{
// Identity details hash
// Cannot be null
"identity": {
// The type of identity
// Allowed values are: "Identities::Base", "Identities::Selfloops", "Identities::Dll", "Identities::Ritualize", "Identities::Trx", "Identities::Facebook", and "Identities::Fitbit"
// Can be null
"type": "Some string", // The value (uid) of identity
// Cannot be null
"value": "Some string", // Id of identity type (group)
// Cannot be null
"identities_type_id": 364, // Id of user to add identity to
// Cannot be null
"user_id": 483 }

}
{
// A newly created identity
// Cannot be null
"identity": Identity::Model, // Validation errors occured during report creation
// Cannot be null
"errors": [ Error::Index ] }

PUT /api/unified/identity/:id

      Returns a response with errors if any after updating the Identity entity

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

{
// The identifier of the item
// Cannot be null
"id": 374, // Hash containing identity parameters
// Can be null
"identity": {
// New value of identity
// Can be null
"value": "Some string", // Id of new user to assign identity
// Can be null
"user_id": 434 }

}
{
// The updated identity entity
// Cannot be null
"identity": Identity::Model, // Validation errors occured during door creation
// Cannot be null
"errors": [ Error::Index ] }

DELETE /api/unified/identity/:id

      Returns empty response after destroying identity entity

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

{
// The identifier of the item
// Cannot be null
"id": 919 }
{
// Validation errors occured during identity destroy
// Cannot be null
"errors": [ Error::Index ] }

PaymentTransaction::Money

        Represents a PaymentTransaction.
{
// PaymentTransaction ID
// Can be null
"id": 644, // PaymentTransaction posted date
// Can be null
"created_at": "2025-04-24T03:41:21Z", // PaymentTransaction payment date
// Can be null
"paid_at": "2025-04-24T03:41:21Z", // PaymentTransaction quantity
// Can be null
"quantity": 327, // PaymentTransaction section
// Can be null
"section": "Some string", // PaymentTransaction product
// Can be null
"product_name": "Some string", // PaymentTransaction transaction type
// Can be null
"transaction_type": "Some string", // PaymentTransaction reference
// Can be null
"reference": "Some string", // PaymentTransaction document reference
// Can be null
"document_ref": "Some string", // PaymentTransaction note
// Can be null
"note": "Some string", // PaymentTransaction created by
// Can be null
"created_by": "Some string", // PaymentTransaction code
// Can be null
"code": "Some string", // PaymentTransaction payment method
// Can be null
"payment_method": "Some string", // PaymentTransaction payee
// Can be null
"payee": "Some string", // PaymentTransaction client name
// Can be null
"client_name": "Some string", // PaymentTransaction location name
// Can be null
"location_name": "Some string", // PaymentTransaction installment number
// Can be null
"installment_number": 137, // PaymentTransaction installments count
// Can be null
"installments_count": 353, // PaymentTransaction balance
// Can be null
"balance": "Some string", // PaymentTransaction amount
// Can be null
"amount": "Some string", // PaymentTransaction total
// Cannot be null
"total": , // Client-specific price of the package; nil if the package is free
// Can be null
"custom_price": , // PaymentTransaction discounts_amount
// Can be null
"discounts_amount": "Some string", // PaymentTransaction receipt url
// Can be null
"receipt_url": "Some string", // PaymentTransaction payment id
// Can be null
"payment_id": 987, // PaymentTransaction client id
// Can be null
"client_id": 169 }

PaymentTransaction::Credit

        Represents a PaymentTransaction Credits entity.
{
// Transaction ID
// Can be null
"id": 642, // Transaction created_at date
// Can be null
"created_at": "2025-04-24T03:41:21Z", // PaymentTransaction created by
// Can be null
"created_by": "Some string", // PaymentTransaction code
// Can be null
"code": 806, // Transaction credit section name
// Can be null
"credit_section": "Some string", // Csp id
// Can be null
"csp_id": 929, // Credits amount
// Can be null
"amount": 574, // Kind
// Can be null
"kind": "Some string", // Transaction mixed credit
// Cannot be null
"mixed_credit": true, // Transaction note
// Can be null
"note": "Some string", // Payment method
// Can be null
"payment_method": "Some string", // PaymentTransaction reference
// Can be null
"reference": "Some string", // Credit Child Payment Details
// Cannot be null
"child_payments": [ PaymentTransaction::CreditChildPayment ], // Credit Details
// Cannot be null
"details": PaymentTransaction::CreditDetails }

PaymentTransaction::CreditChildPayment

        Represents a PaymentTransaction CreditChildPayment entity.
{
// Transaction ID
// Can be null
"id": 36, // Transaction created_at date
// Can be null
"created_at": "2025-04-24T03:41:21Z", // PaymentTransaction code
// Can be null
"code": 78, // Transaction credit section name
// Can be null
"credit_section": "Some string", // Csp id
// Can be null
"csp_id": 450, // Credits amount
// Can be null
"amount": 827, // Transaction mixed credit
// Cannot be null
"mixed_credit": true, // Payment method
// Can be null
"payment_method": "Some string", // Credit Details
// Cannot be null
"details": PaymentTransaction::CreditDetails }

PaymentTransaction::CreditDetails

        Represents a PaymentTransaction CreditDetails.
{
// Amount
// Can be null
"amount": 647, // Client name
// Can be null
"client_name": "Some string", // Kind
// Can be null
"kind": "Some string", // Location Name
// Can be null
"location_name": "Some string", // Product Name
// Can be null
"product_name": "Some string", // Service Name
// Can be null
"service_name": "Some string", // Service Package Name
// Can be null
"service_package_name": "Some string", // Trainer Name
// Can be null
"trainer_name": "Some string" }

PaymentTransaction::Index

        Represents a PaymentTransaction.
{
// Transaction ID
// Cannot be null
"id": 587, // PaymentTransaction quantity
// Can be null
"quantity": 79, // PaymentTransaction amount
// Can be null
"amount": , // Client Name
// Can be null
"client_name": "Some string", // Client Alt ID
// Can be null
"client_alt_id": "Some string", // Client Email
// Can be null
"client_email": "Some string", // Client Home Location
// Can be null
"client_home_location": "Some string", // Client Mobile number
// Can be null
"client_mobile_no": "Some string", // PaymentTransaction transaction type
// Can be null
"transaction_type": "Some string", // PaymentTransaction section
// Can be null
"section": "Some string", // PaymentTransaction product
// Can be null
"product_name": "Some string", // PaymentTransaction payment date
// Can be null
"paid_at": "2025-04-24T03:41:21Z", // PaymentTransaction discounts_amount
// Can be null
"discounts_amount": "Some string", // PaymentTransaction payment id
// Can be null
"payment_id": 767, // Payee Name
// Can be null
"payee_name": "Some string", // Payment method
// Can be null
"payment_method": "Some string" }

InAppPurchase::Index

Represents a unified model of in-app-purchase (StripePayment)

{
// Payment ID
// Can be null
"payment_id": 770, // Service Packages Prices (custom_cost for current_user)
// Can be null
"package_price": 750, // Client Service Packages Prices (Total in InternalPayments)
// Can be null
"purchase_total": 137, // Discount amount (for all CSPs)
// Can be null
"discount_amount": 297, // Total tax (for all CSPs)
// Can be null
"total_tax": 381, // Client ID
// Can be null
"client_id": 104, // Client Name
// Can be null
"client_name": "Some string", // Client Email
// Can be null
"client_email": "Some string", // Client Alt ID
// Can be null
"client_alt_id": "Some string", // Assigned At (DateTime)
// Can be null
"assigned_at": "2025-04-24T03:41:21Z", // Expires At (DateTime)
// Can be null
"expires_at": "2025-04-24T03:41:21Z", // Total Credits Amount
// Can be null
"total_credits": 41, // Used Credits Amount
// Can be null
"used_credits": 819, // Payer ID
// Can be null
"payer_id": 186, // Payer Name
// Can be null
"payer_name": "Some string", // Payment Method (StripePayment i.e.)
// Can be null
"payment_method": "Some string", // Club ID
// Can be null
"club_id": 700, // Details
// Cannot be null
"details": {
// Service Package IDs
// Can be null
"service_package_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Service Package Alt IDs
// Can be null
"service_package_alt_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Service Package Names
// Can be null
"service_package_names": [ "An", "Array", "Of", "Strings/Integers" ], // Club Alt ID (CSPs location ALT ids)
// Can be null
"club_alt_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Client Service Package (CSP) IDs
// Can be null
"csp_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

}

Report::Names

        Represents an report name available to query.
{
// Name of the Report
// Cannot be null
"id": "Some string", // Name of the Report
// Cannot be null
"name": "Some string" }

Report::Index

        Represents an report.
{
// Persistent identifier of the entity
// Cannot be null
"id": 314, // Name of the activity category
// Cannot be null
"name": "Some string", // Readiness of the report, false if the report is ready.
// Cannot be null
"pending": true, // URL of the first file
// Can be null
"file_url": "Some string", // URLs of the fiels files that are available to download
// Can be null
"file_urls": "Some string" }

Report::Show

        Represents an report.
{
// Persistent identifier of the entity
// Cannot be null
"id": 786, // Name of the activity category
// Cannot be null
"name": "Some string", // Readiness of the report, false if the report is ready.
// Cannot be null
"pending": true, // URL of the first file
// Can be null
"file_url": "Some string", // URLs of the fiels files that are available to download
// Can be null
"file_urls": "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": {
}

}

Benchmark::Index

        Represents a Benchmark.
{
// Persistent identifier of the entity
// Cannot be null
"id": 157, // Notes of the Assessment
// Can be null
"notes": "Some string", // Score of the Assessment
// Can be null
"score": 194, // Whether the Assessment is scored
// Can be null
"scored": true, // A date of the Assessment
// Can be null
"date": "2025-04-24", // Is the Assessment is disabled
// Can be null
"disabled": true, // List of Benchmark Values
// Cannot be null
"benchmark_values": [ BenchmarkValue::Index ], // Represent of Norm Set
// Cannot be null
"norm_set": NormSet::Index }

BenchmarkValue::Index

        Represents a Benchmark Value
{
// Persistent identifier of the entity
// Cannot be null
"id": 117, // ID of the Norm
// Cannot be null
"norm_id": 218, // Score of the BenchmarkValue
// Cannot be null
"score": 145, // Whether the BenchmarkValue is scored
// Cannot be null
"scored": true, // A value provided in the BenchmarkValue
// Cannot be null
"value": 692, // Hash serialized data. It used to store values for norm units like :multiple_choices, :free_text, :table_text
// Cannot be null
"options": {
}

}

NormSet::Index

        Represents a Norm Set.
{
// Persistent identifier of the entity
// Cannot be null
"id": 520, // Title of the Norm Set
// Can be null
"title": "Some string", // Scoring Type of the Norm Set
// Can be null
"scoring_type": "Some string", // Count of Norms
// Can be null
"norm_count": 823, // Is the Norm is disabled
// Can be null
"disabled": true }

BenchmarkValue::Show

        Represents a Benchmark Value
{
// Persistent identifier of the entity
// Cannot be null
"id": 196, // ID of the Norm
// Cannot be null
"norm_id": 965, // A value provided in the BenchmarkValue
// Cannot be null
"value": 432, // Hash serialized data. It used to store values for norm units like :multiple_choices, :free_text, :table_text
// Cannot be null
"options": {
}

}

NormSet::Show

        Represents a Norm Set.
{
// Persistent identifier of the entity
// Cannot be null
"id": 605, // Title of the Norm Set
// Can be null
"title": "Some string", // Scoring Type of the Norm Set
// Can be null
"scoring_type": "Some string", // Is the Norm is disabled
// Can be null
"disabled": true, // Represents a list of Norms
// Cannot be null
"norms": [ Norm::Show ] }

Norm::Show

        Represents a Norm.
{
// Persistent identifier of the entity
// Cannot be null
"id": 743, // Title of the Norm
// Cannot be null
"title": "Some string", // Type of the Norm
// Allowed values are: "time", "distance", "count", "weight", "body_weight", "body_height", "blood_pressure", "binary_choice", "multiple_choice", "free_text", and "table_text"
// Cannot be null
"unit": "Some string", // Position of the Norm
// Cannot be null
"position": 531, // The correct answer of the Norm
// Can be null
"correct_value": "Some string", // Options of the Norm
// Cannot be null
"options": {
} ,

// The list of choices for multiple_choice type (alternative way of options representation)
// Cannot be null
"norm_choices": [ NormChoice::Show ] }

NormChoice::Show

        Represents a Choice of a Norm.
{
// Persistent identifier of the entity
// Cannot be null
"id": 284, // Title of the Choice
// Cannot be null
"title": "Some string", // Position of the Choice
// Cannot be null
"position": 61, // An Image associated with the Choice
// Can be null
"image_url": "Some string" }

Club::Settings

        Represents a club options.
{
// Persistent identifier of the entity
// Cannot be null
"id": 884, // Club language
// Can be null
"locale": "Some string", // Currency
// Cannot be null
"currency": "Some string", // Facebook url
// Can be null
"facebook_url": "Some string", // Twitter url
// Can be null
"twitter_url": "Some string", // Instagram url
// Can be null
"instagram_url": "Some string", // Tiktok url
// Can be null
"tiktok_url": "Some string", // Club logo url
// Can be null
"club_logo_url": "Some string", // Schedule interval for drawing and booking in minutes
// Cannot be null
"booking_minutes_interval": 897, // The list of available Payment methods
// Cannot be null
"payment_codes": [ "An", "Array", "Of", "Strings/Integers" ], // Setting that represent: trainer must or not to fill Count field in occurrences.
// Can be null
"attendees_size_required": true, // Default cover wall url for client
// Can be null
"client_default_cover_wall_url": "Some string", // Default cover wall url for trainer
// Can be null
"trainer_default_cover_wall_url": "Some string", // Default workout image url
// Can be null
"workout_default_image_url": "Some string", // IDs of strikeable service categories
// Cannot be null
"strike_service_category_ids": [ "An", "Array", "Of", "Strings/Integers" ], // IDs of strikeable services
// Cannot be null
"strike_service_ids": [ "An", "Array", "Of", "Strings/Integers" ], // List of avaliable locales
// Can be null
"other_locales": [ "An", "Array", "Of", "Strings/Integers" ], // Whether access control enabled
// Can be null
"access_control_enabled": true, // Interval for One Time Password. Default: 60
// Cannot be null
"otp_interval": 245 }

Survey::Show

        Represents a survey object
{
// Unique Fisikal identifier of the survey
// Cannot be null
"id": 918, // Id of client the survey is connected with
// Cannot be null
"user_id": 503, // Location id that is being surveyed
// Cannot be null
"location_id": 4, // Whether survey is relational or attendance-based
// Cannot be null
"type": "Some string", // Optional reference value, used to map Circuit SendOutHistoryID
// Can be null
"alt_id": "Some string", // Score submitted by the user
// Cannot be null
"score": 633, // Comment submitted by the user
// Cannot be null
"comment": "Some string", // Creation date of survey
// Cannot be null
"created_at": "2025-04-24T03:41:21Z", // Datetime of survey response
// Cannot be null
"submitted_at": "2025-04-24T03:41:21Z" }

Location::Index

        This entity represents location record of a club.
{
// Persistent identifier of the entity
// Cannot be null
"id": 859, // Id of the parent location, if this is sublocation
// Can be null
"parent_id": 562, // Whether this location is hidden
// Cannot be null
"hidden": true, // The Region ID of Location
// Can be null
"region_id": 19, // The ALT ID of Location
// Can be null
"alt_id": 516, // 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": 302, // Latitude of the location
// Can be null
"latitude": 71.4, // Longitude of the location
// Can be null
"longitude": 21.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": 741, // Identifier of the directory location
// Cannot be null
"location_id": 294, // Ð’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": 129, // 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": 930, // Persistent Identifier of the directory
// Cannot be null
"directory_id": 353, // Ð’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": 669, // The Region ID of Location
// Can be null
"region_id": 179, // 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": 914, // 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": 550, // 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" }

Region::Index

        This entity represents a region.
{
// Persistent identifier of the entity
// Cannot be null
"id": 941, // The name of the entity
// Cannot be null
"name": "Some string", // A flag representing does the entity is inactive
// Cannot be null
"disabled": true }

Door::Lookup

Serializes exercise category in a form of a lookup model

{
// Persistent identifier of the entity
// Cannot be null
"id": 394, // Name of the door
// Cannot be null
"title": "Some string" }

AccessController::Index

        Represents a controller with available doors.
{
// Persistent identifier of the entity
// Cannot be null
"id": 278, // Type of the controller
// Cannot be null
"type": "Some string", // How to communicate with the controller from the in-club computer
// Can be null
"address": "Some string", // Connection type
// Allowed values are: "serial" and "tcp"
// Cannot be null
"connection_type": "Some string", // Hostname of device
// Can be null
"hostname": "Some string", // A list of available doors
// Cannot be null
"doors": [ Door::ControllerDoor ] }

Door::ControllerDoor

        Represents a door for controller.
{
// The name of the door
// Cannot be null
"name": "Some string", // Door type
// Allowed values are: "entrance", "internal", and "exit"
// Cannot be null
"door_type": "Some string", // Nortech details
// Can be null
"nortech_details": {
} ,

// Generic Door details
// Can be null
"door_details": {
}

}

Door::Index

        Represents a door.
{
// Persistent identifier of the entity
// Cannot be null
"id": 407, // Name of the door
// Cannot be null
"name": "Some string", // Represents a flag if the door is in active flag
// Cannot be null
"disabled": true, // An associated location object
// Can be null
"location": Location::Lookup, // An associated location object
// Can be null
"sub_location": Location::Lookup, // Nomical door id
// Can be null
"nomical_door_id": "Some string", // Whether access control feature is enabled
// Cannot be null
"access_control_enabled": true, // Represents of controller
// Can be null
"access_controller": AccessController::Lookup, // Alt ID of access controller
// Can be null
"access_controller_alt_id": "Some string", // Door Type
// Allowed values are: "entrance", "internal", and "exit"
// Can be null
"door_type": "Some string", // Signal duration
// Can be null
"signal_duration": 781, // Scanner path
// Can be null
"scanner_path": 366, // An associated user object
// Can be null
"created_by": User::Lookup, // An associated user object
// Can be null
"updated_by": User::Lookup, // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

Location::Lookup

        Represents the stripped version of the user entity
{
// The internal ID of the entity
// Cannot be null
"id": 76, // The Region ID of Location
// Can be null
"region_id": 575, // 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" }

AccessController::Lookup

        Represents an access controller.
{
// Persistent identifier of the entity
// Cannot be null
"id": 882, // Type of the access controller
// Cannot be null
"title": "Some string" }

User::Lookup

        Represents the stripped version of the user entity
{
// The internal ID of the entity
// Cannot be null
"id": 593, // 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", // Square Image URL of the entity
// Cannot be null
"icon_url": "Some string", // Users's alt ID.
// Cannot be null
"alt_id": "Some string" }

DoorAccessLog::Index

        Represents an event of a user going through a door.
{
// The internal ID of the entity
// Cannot be null
"id": 976, // Related user
// Cannot be null
"user": User::Lookup, // Related door
// Cannot be null
"door": Door::Lookup, // Timestamp
// Cannot be null
"timestamp": "Some string", // Status of the entity
// Cannot be null
"status": "Some string", // Message for the entity
// Cannot be null
"message": "Some string", // Timestamp in Club timezone
// Cannot be null
"club_timestamp": "Some string", // ID of lead client
// Cannot be null
"lead_client_id": 377, // Timestamp of Door Access Override
// Cannot be null
"overridden_till": "2025-04-24T03:41:21Z" }

Door::Lookup

        Represents the stripped version
{
// The internal ID of the entity
// Cannot be null
"id": 323, // The name of the entity
// Cannot be null
"title": "Some string", // Door Type
// Cannot be null
"door_type": "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" }

IdentitiesType::Model

This entity represents an identites type

{
// ID
// Cannot be null
"id": 916, // String with type of identity (AccessCard, ThirdParty, etc)
// Cannot be null
"entity_type": "Some string", // String with type name of identity type
// Cannot be null
"display_name": "Some string", // Limit for identities of such type for single user
// Cannot be null
"max_per_client": 722, // Number of days before client can change the identity
// Cannot be null
"min_days_between_changes": 377, // Id with associated club
// Cannot be null
"club_id": 945, // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

TopupProduct::Index

Represents a Topup Product entities, which are add amount to Wallet after purchase.

{
// Unique persistent id of the entity
// Cannot be null
"id": 549, // Title of the Topup Product
// Cannot be null
"name": "Some string", // Regular price of the top-up product; Will be added to wallet balance
// Cannot be null
"price": , // Bonus amount that user receive after purchase
// Can be null
"bonus_amount": }

TopupProduct::Index

Represents a Topup Product entities, which are add amount to Wallet after purchase.

{
// Unique persistent id of the entity
// Cannot be null
"id": 912, // Title of the Topup Product
// Cannot be null
"name": "Some string", // Is Topup Product disabled
// Cannot be null
"disabled": true, // Regular price of the top-up product; Will be added to wallet balance
// Cannot be null
"price": , // Bonus amount that user receive after purchase
// Can be null
"bonus_amount": }

FeedSubscription::Model

This entity represents a club feed subscription to a content provider

{
// ID
// Cannot be null
"id": 163, // Content provider club identificator
// Cannot be null
"content_provider_club_id": 430, // Subscribed club identificator
// Cannot be null
"club_id": 956, // Subscribed to announcements feed?
// Cannot be null
"get_announcements": true, // Subscribed to workouts feed?
// Cannot be null
"get_workouts": true, // Subscribed to products feed?
// Cannot be null
"get_products": true, // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

FeedCollection::Lookup

        Represents a content collection lookup.
{
// Persistent identifier of the entity
// Cannot be null
"id": 210, // The name of collection
// Cannot be null
"title": "Some string" }

FeedCollection::Index

        Represents a content collection.
{
// Persistent identifier of the entity
// Cannot be null
"id": 464, // The name of collection
// Cannot be null
"title": "Some string", // Wheter the collection is enabled or not
// Cannot be null
"enabled": true, // A list of content items in collection
// Cannot be null
"feed_items": [ FeedItem::Lookup ], // Timestamp of entity creation
// Cannot be null
"created_at": "2025-04-24T03:41:21Z" }

FeedItem::Lookup

        Represents Feed::Item lookup model.
{
// The internal ID of the entity
// Cannot be null
"id": 894, // The title of the entity
// Cannot be null
"title": "Some string", // Keeps the feed item type
// Cannot be null
"description": "Some string", // Image URL of the entity
// Cannot be null
"image_url": "Some string" }

FeedCollection::Form

        Represents a content collection.
{
// Persistent identifier of the entity
// Cannot be null
"id": 825, // The name of collection
// Cannot be null
"title": "Some string", // Wheter the collection is enabled or not
// Cannot be null
"enabled": true, // A list of content items in collection
// Cannot be null
"feed_items": [ FeedItem::Lookup ], // A set of errors occurred during password change request
// Cannot be null
"errors": [ Error::Index ] }

FeedIntervalDay::Model

        Represents a content timeline interval day.
{
// Persistent identifier of the entity
// Cannot be null
"id": 274, // Number of the day
// Cannot be null
"number": 974, // Number of the interval
// Cannot be null
"interval_number": 22, // List of join models to feed collections
// Cannot be null
"feed_collection_interval_days": [ FeedCollectionIntervalDay::Model ], // A set of errors occurred during operation
// Cannot be null
"errors": [ Error::Index ] }

FeedCollectionIntervalDay::Model

        Represents a content timeline interval day.
{
// Persistent identifier of the entity
// Cannot be null
"id": 688, // Feed collection lookup
// Can be null
"feed_collection": FeedCollection::Lookup, // Timestamp to deliver the content at
// Cannot be null
"deliver_at": "2025-04-24T03:41:21Z", // A set of errors occurred during operation
// Cannot be null
"errors": [ Error::Index ] }

FeedTimeline::Lookup

        Represents a content timeline as a light-weighted lookup.
{
// Persistent identifier of the entity
// Cannot be null
"id": 28, // The name of timeline
// Cannot be null
"title": "Some string" }

FeedTimeline::Form

        Represents a content timeline.
{
// Persistent identifier of the entity
// Cannot be null
"id": 421, // The name of timeline
// Cannot be null
"title": "Some string", // Wheter the timeline is enabled or not
// Cannot be null
"enabled": true, // The Alt ID of timeline
// Cannot be null
"alt_id": 85, // Interval type
// Cannot be null
"interval_type": "Some string", // Number of intervals
// Cannot be null
"number_of_intervals": 857, // Interval visibility duration
// Cannot be null
"visibility_period": 154, // Send notifications or not
// Cannot be null
"send_notifications": true, // Timestamp of audience mapping lock
// Can be null
"locked_at": "2025-04-24T03:41:21Z", // Role Access Bitmap
// Cannot be null
"human_user_visibility": 673, // A set of errors occurred during password change request
// Cannot be null
"errors": [ Error::Index ] }

FeedTimeline::Index

        Represents a content timeline.
{
// Persistent identifier of the entity
// Cannot be null
"id": 719, // The name of timeline
// Cannot be null
"title": "Some string", // Wheter the timeline is enabled or not
// Cannot be null
"enabled": true, // Interval type
// Cannot be null
"interval_type": "Some string", // Number of intervals
// Cannot be null
"number_of_intervals": 801, // Interval visibility period
// Cannot be null
"visibility_period": 385, // Timestamp of entity creation
// Cannot be null
"created_at": "2025-04-24T03:41:21Z", // Timestamp of audience mapping lock
// Can be null
"locked_at": "2025-04-24T03:41:21Z" }

FeedTimelineSubscription::Model

        Represents a feed timeline club subscription.
{
// Persistent identifier of the entity
// Cannot be null
"id": 839, // Target type: 0 - for clubs, 1 - for users and/or groups
// Can be null
"target_type": 521, // Target club lookup
// Can be null
"target_club": Club::Lookup, // Feed timeline lookup
// Can be null
"feed_timeline": FeedTimeline::Lookup, // The list of target users
// Can be null
"target_users": [ User::Lookup ], // The list of target groups
// Can be null
"target_groups": [ Group::Lookup ], // The list of target packages
// Can be null
"target_packages": [ ServicePackage::Lookup ], // Subscription start date
// Can be null
"start_date": "2025-04-24", // Subscription end date
// Can be null
"end_date": "2025-04-24", // The contract duration in weeks
// Can be null
"contract_length_in_weeks": 759, // Subscription start
// Can be null
"subscription_start": "Some string", // Timestamp of entity creation
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Whether the item is enabled or not
// Cannot be null
"enabled": true, // A set of errors occurred
// Cannot be null
"errors": [ Error::Index ] }

Club::Lookup

        Represents the stripped version of the entity
{
// The internal ID of the entity
// Cannot be null
"id": 590, // 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", // Access control enabled of the entity
// Cannot be null
"access_control_enabled": true }

Group::Lookup

        The lookup representation of the group.
{
// Persistent identifier of the entity
// Cannot be null
"id": 835, // The name of the entity
// Cannot be null
"title": "Some string" }

ServicePackage::Lookup

Represents a service package entity, which is effectively a collection of services grouped together in one purchasable unit.

{
// Unique persistent id of the entity
// Cannot be null
"id": 460, // Title of the service package
// Cannot be null
"title": "Some string", // Title of the service package
// Cannot be null
"description": "Some string", // The alt ID of Package
// Cannot be null
"alt_id": "Some string" }

Order::Purchase

This entity represents Order's Purchase entity that is sent with order creation request

{
// ID of the product
// Cannot be null
"product_id": 699, // Type of the product entity. Allowed types: service, service_package, external_product, content_provider_product, product
// Cannot be null
"product_type": "Some string", // Quantity of products to purchase
// Cannot be null
"quantity": 998, // List of existing discounts
// Cannot be null
"discount_internal_payments_attributes": [ Order::DiscountInternalPayments ], // List of new discounts
// Cannot be null
"discounts_attributes": [ Order::Discounts ], // Contains information about purchase options
// Can be null
"purchase_options": {
// Date the package is recorded as assigned to the client. Defaults to now. Advised not to set except in special circumstances. Use paid_at instead
// Can be null
"assigned_at": "2025-04-24", // Start date of package. This date controls when the credits can start to be used. Defaults to now.
// Can be null
"starts_at": "2025-04-24", // Date the package was paid for. Defaults to now. Set this to a date in the past if loading historic purchases
// Can be null
"paid_at": "2025-04-24", // Type of payment; choice of; 0=Full Payment (Default), 1=Deposit, 2=Installment
// Can be null
"payment_type": 566 }

}

Order::DiscountInternalPayments

This entity represents a link to an existing Order's Purchase Discount that is sent with order creation request

{
// The discount ID
// Cannot be null
"discount_id": 570, // The ID of applied promocode
// Cannot be null
"promocode_id": 432 }

Order::Discounts

This entity represents a new Order's Purchase Discount that is sent with order creation request

{
// Optional: Name of the discount. A new discount will be created with this name. If left empty then free_text must be true.
// Can be null
"name": "Some string", // Boolean: True=If the name of the discount is empty then use the title 'Free Text' for the discount. False (Default)=If the name is empty then the discount will be rejected.
// Can be null
"free_text": true, // Absolute monetary value in cents (or equivalent) to be removed from cost of purchase. Must be a positive integer. Must provide either amount_off or percentage_off. If both are provided then percentage_off will be used. If the amount_off is greater than cost of product then the amount charged will be 0.
// Can be null
"amount_off": 780, // Percentage discount to be applied to the cost of the purchase. Must be a positive value between 0 and 100. Must provide either amount_off or percentage_off. If both are provided then percentage_off will be used.
// Can be null
"percentage_off": 69.5 }

Order::Create

This entity represents Order creation result

{
// ID of the order
// Cannot be null
"id": 995 }

Order::Purchased

          Represents the order that has been purchased (probably not successfully).
{
// Persistent identifier of the entity
// Cannot be null
"id": 393, // Whether the order has been completed successfully
// Cannot be null
"completed": true, // Holds the array of workouts assigned to the user as a result of the purchase
// Cannot be null
"workouts": [ Workout::Show ], // Holds the array of workouts assigned to the user as a result of the purchase
// Cannot be null
"announcements": [ Announcement::Show ], // Holds the array of workouts assigned to the user as a result of the purchase
// Cannot be null
"client_service_packages": [ ClientServicePackage::Show ] }

Workout::Show

        An extended version of workout entity, containing the list of exercises associated to the workout.
{
// Persistent identifier of the entity
// Cannot be null
"id": 325, // The name of the workout
// Cannot be null
"title": "Some string", // An optional additional name of the workout
// Can be null
"sub_title": "Some string", // Name of the workout's category
// Can be null
"category_name": "Some string", // The type of the workout
// Allowed values are: :timer, :preview, and :video
// Cannot be null
"item_type": "Some string", // The description of the workout
// Can be null
"description": "Some string", // The visibility of the workout (private means this workout is not publicaly accessible)
// Allowed values are: "public" and "private"
// Cannot be null
"visibility": "Some string", // Whether the current user has marked this workout as a favourite
// Cannot be null
"starred": true, // Total time (in seconds) the workout would take to complete
// Cannot be null
"total_time": 487, // The URL to the logo image of the workout
// Can be null
"logo_url": "Some string", // The URL to the video of the workout
// Can be null
"video_url": "Some string", // The video of the Workout
// Can be null
"video": "Some string", // The URL to the landing image of the workout
// Can be null
"landing_image_url": "Some string", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // A list of exercises included into the workout
// Can be null
"excercises": [ Excercise::Show ] }

Announcement::Show

        An extended version of announcement entity, which contains the URL to the media content.
{
// Persistent identifier of the entity
// Cannot be null
"id": 470, // Title of the announcement entity
// Cannot be null
"name": "Some string", // Subtitle of the announcement entity
// Can be null
"sub_title": "Some string", // The URL to the thumbnail image of the content, if available
// Can be null
"thumbnail_url": "Some string", // The URL to the announcement image, if available
// Can be null
"announcement_image_url": "Some string", // Description of the announcement
// Can be null
"description": "Some string", // The type of media kind, either pdf or a video
// Allowed values are: "video", "pdf", and "text"
// Cannot be null
"kind": "Some string", // The URL to the web-based player with the video in question
// Can be null
"source_url": "Some string", // The URL to the media content. In case of video, it's not a direct link to the video file, but an URL to the web-based player with the video in question
// Can be null
"url": "Some string", // The URL to the media content. In case of video it is an Embedded, it is an Embedded code
// Can be null
"video": "Some string", // Source url of the announcement
// Can be null
"media_file_url": "Some string", // Whether the current user marked this announcement as a favourite
// Cannot be null
"starred": true, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // List of announcement category ids
// Can be null
"announcement_category_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

ClientServicePackage::Show

Represents a client service package entity, which is a service package link to a specific user containing usage details of the package.

{
// Unique persistent id of the entity
// Cannot be null
"id": 335, // Timestamp when the package was assigned
// Cannot be null
"assigned_at": "2025-04-24T03:41:21Z", // Timestamp when the package will expire
// Can be null
"expires_at": "2025-04-24T03:41:21Z", // Total amount of credits within the package
// Cannot be null
"total_credits": 213, // Total amount of credits within the package
// Cannot be null
"used_credits": 38, // Whether this client service package has been refunded and has no effect now
// Cannot be null
"refunded": true, // Discount of the package; nil if client has no discount
// Cannot be null
"cost_discount": , // Balance for the package
// Can be null
"balance": , // The number used pauses (weeks)
// Cannot be null
"pause_allowance_used": 902, // Whether this package is in paused
// Cannot be null
"paused": true, // The start date of pause
// Can be null
"pause_start_on": "2025-04-24", // The end date of pause
// Can be null
"pause_end_on": "2025-04-24", // A list installment dates
// Can be null
"future_installment_dates": [ "An", "Array", "Of", "Strings/Integers" ], // Service package model
// Cannot be null
"service_package": ServicePackage::Show }

Excercise::Show

        Represents a signle workout exercise entity. It encapsulates the timing information about the execrice, as well
        as attached media information.

        The timing information is supposed to be interpreted as follows:
          * The exercise is composed of multiple sessions, which are composed of multiple cycles
          * The number of sessions is held in "sessions" field
          * The number of cycles is held in "cycles" field
          * Each cycle is a sequence of work phase, followed by rest phase
          * The number of seconds allocated to work phase is held in "work" field
          * The number of seconds allocated to rest phase is held in "rest" field
          * Each session starts with a preparation time
          * The number of seconds for the preparation phase is contained in "prepare" field

        The media information is represented by "loop_video" and "preview_video" fields. It is supposed
        to be interpreted as follows:
          * Loop video ("loop_video") is supposed to be played during the exercise. These are usually short video clips containing video demonstration to guide through exercise execution.
          * Preview video ("preview_video") is usually a long instructional video used to teach people how to perform a specific exercise.
          * Each object contains player_url, which is a URL to the web-based player configured to play the video file
          * Each object might contain file_url, which is a direct URL to the video file
{
// Persistent identifier of the entity
// Cannot be null
"id": 855, // Name of the exercise
// Cannot be null
"name": "Some string", // Type of the exercise
// Allowed values are: "Tabata", "Time", and "Sets/Reps"
// Cannot be null
"kind": "Some string", // Optional information supplied along with the exercise model (like weight to be used)
// Can be null
"notes": "Some string", // Optional info about current exercise (note)
// Can be null
"note": "Some string", // Optional info about current exercise (code)
// Can be null
"code": "Some string", // The number of cycles
// Cannot be null
"cycles": 348, // The number of sessions
// Cannot be null
"sessions": 725, // The duration of the prepare phase (seconds)
// Cannot be null
"prepare": 218, // The duration of the work phase (seconds)
// Cannot be null
"work": 403, // The duration of the rest phase (seconds)
// Cannot be null
"rest": 653, // The kcals for that exercise
// Cannot be null
"kcals": 435, // The URL to the thumbnail image for this exercise
// Can be null
"thumbnail_url": "Some string", // Total time (in seconds) the exercise would take to complete
// Cannot be null
"total_time": 96, // Section title associated with the exercise
// Can be null
"section_title": "Some string", // Description of the exercise
// Can be null
"description": "Some string", // Sub title of the exercise
// Can be null
"sub_title": "Some string", // Loop video media settings
// Can be null
"loop_video": {
// The URL to the web-based player configured to play the video file
// Can be null
"player_url": "Some string", // Direct URL to the video file
// Can be null
"file_url": "Some string", // Media file's subtitle
// Can be null
"sub_title": "Some string", // Media file's description
// Can be null
"description": "Some string", // Media file's file type
// Can be null
"kind": "Some string", // Media file's file url (if image)
// Can be null
"url": "Some string" } ,

// Preview video media settings
// Can be null
"preview_video": {
// The URL to the web-based player configured to play the video file
// Can be null
"player_url": "Some string", // Direct URL to the video file
// Can be null
"file_url": "Some string", // Media file's subtitle
// Can be null
"sub_title": "Some string", // Media file's description
// Can be null
"description": "Some string", // Media file's file type
// Can be null
"kind": "Some string", // Media file's file url (if image)
// Can be null
"url": "Some string" } ,

// Contains the URL to prepare audio cue
// Can be null
"prepare_audio_file_url": "Some string", // Contains the URL to rest audio cue
// Can be null
"rest_audio_file_url": "Some string", // Contains the URL to work audio cue
// Can be null
"work_audio_file_url": "Some string", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

ServicePackage::Show

Represents a service package entity, which is effectively a collection of services grouped together in one purchasable unit.

{
// Unique persistent id of the entity
// Cannot be null
"id": 78, // Title of the service package
// Cannot be null
"name": "Some string", // Description of the service package
// Can be null
"description": "Some string", // The url to the logo file associated with the service package
// Can be null
"logo_url": "Some string", // The url to the image file associated with the service package
// Can be null
"service_package_image_url": "Some string", // Video associated with the package
// Can be null
"video": {
// The URL to the web-based player configured to play the video file
// Can be null
"player_url": "Some string", // Direct URL to the video file
// Can be null
"file_url": "Some string" } ,

// Regular price of the package; nil if the package is free
// Can be null
"price": , // Client-specific price of the package; nil if the package is free
// Can be null
"custom_price": , // Whether the package is a one-off: gets disabled after expiration and is not renewed
// Cannot be null
"single": true, // Whether the package would be disabled after a certain time span (=expiration period)
// Cannot be null
"expirable": true, // Units expires_in value is expressed with
// Allowed values are: "day", "week", and "month"
// Can be null
"expires_period_type": "Some string", // The duration of a single expiration period in the units specified with expires_period_type
// Can be null
"expires_in": 752, // The duration of the whole subscription (=total duration the package can be active including all expiration iterations)
// Can be null
"expires_ends_in": 652, // The total number of credits this package allows to use. Please note it can be lower than a sum of all credits included and works as a hard limit on package usage to implement various "Fair Use" policies
// Can be null
"bookings_limit": 703, // Id of the product which contents is this service package; purchase use only
// Cannot be null
"product_id": 787, // The services and their amount included into the package
// Cannot be null
"service_package_services": [ ServicePackageService::Index ], // Whether the service package is disabled
// Cannot be null
"disabled": true, // Marks packages with not fully processed payments yet.
// Can be null
"pending": true, // Is client already subscribed to subscription
// Cannot be null
"subscribed": true, // Whether the service package is subscribable
// Cannot be null
"subscribable": true, // Whether client can pause package
// Cannot be null
"pause_allowance_enabled": true, // The type of pause allowance: endless or limited
// Can be null
"pause_allowance_type": "Some string", // Number of weeks available for pause (if pause_allowance_type is limited)
// Can be null
"pause_allowance_limit": 332, // Whether Client must complete Assessment to purchase or not
// Cannot be null
"clients_require_assessment": true, // Roles this service package is visible to
// Cannot be null
"user_visibility": [ UserVisibility::Index ], // Subscription Payment Type
// Can be null
"subscription_payment_type": "Some string", // Is package restricted to single trainer
// Can be null
"restrict_bookings_to_payee": true, // Id of package payee
// Can be null
"payee_id": 956, // The list of tag entities used as restictions for relation service_packages and occurrences
// Cannot be null
"tags": [ Tag::Index ], // The list of tag entities for possible search by tags
// Cannot be null
"service_package_tags": [ Tag::Index ] }

ServicePackageService::Index

Represents a pair of a service and an amount being a part of the service package offering.

{
// Unique persistent id of the entity
// Cannot be null
"id": 602, // The number of service's credits included into the package
// Cannot be null
"amount": 84, // Service model
// Cannot be null
"service": Service::Index }

UserVisibility::Index

        This enum represents possible values for user visibiltiy settings.
{
// Visible to users with Client role
// Cannot be null
"Client" // Visible to users with Trainer role
// Cannot be null
"Trainer" // Visible to users with Manager role
// Cannot be null
"Manager" // Visible to users with Independent Trainer role
// Cannot be null
"IndependentTrainer" // Visible to users with Content Provider role
// Cannot be null
"ContentProvider" // Visible to users with Content User role
// Cannot be null
"ContentUser" // Visible to users with SjdAccountant role
// Cannot be null
"SjdAccountant" // Visible to users with Administrator role
// Cannot be null
"Administrator" // Visible to users with FOHM role
// Cannot be null
"FrontHouseManager" // Visible to users with PT Manager role
// Cannot be null
"PtManager" }

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": 8, // Maximum number of attendees
// Cannot be null
"group_size": 100, // The hour part of service duration
// Cannot be null
"duration_in_hours": 805, // The minute part of service duration
// Cannot be null
"duration_in_minutes": 121, // 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 ] }

System::PaymentProcessors::PaymentIntent

This entity describes the payment intent prepared on Fisikal side and (generally) ready to be completed. It features "flow" field which describes what form of payment the system will accept: it can be either API (for internal use), Stripe or Redirect.

Redirect is a generic flow which assumes the user will visit the given URL to complete the order. This can be, for instance, a PayPal payment page, where the user has to fill in some form and proceed.

The Stripe flow assumes the client is responsible for collecting Stripe card token and passing it over to the relevant API.

{
// The redirect url to point the user to to complete the purchase (if the flow requires it)
// Can be null
"redirect_url": "Some string", // Type of the purchase flow to use
// Allowed values are: "redirect", "api", "stripe", and "gocardless"
// Cannot be null
"flow": "Some string", // The id of the order for this specific payment intent
// Cannot be null
"order_id": 640, // The collection of payment layouts available for the current order
// Cannot be null
"payment_layouts": [ ::System::PaymentProcessors::PaymentLayout ] }

System::PaymentProcessors::PaymentLayout

Represents a specific payment layout for a specific provider variant.

{
// The redirect url to point the user to to complete the purchase (if the flow requires it)
// Can be null
"redirect_url": "Some string", // Type of the purchase flow to use
// Allowed values are: "redirect", "api", "stripe", "gocardless", and "spreedly"
// Cannot be null
"flow": "Some string", // Payment Provider of the purchase flow to use
// Allowed values are: "stripe", "gocardless", "spreedly_globalpayments", and "spreedly_checkout"
// Cannot be null
"payment_provider": "Some string", // Saved Credit Card which can be used
// Can be null
"credit_card_id": 497, // Flag indicating whether the payment layout is valid for the purchase
// Cannot be null
"valid": true, // Custom ToS of the purchase flow (if present)
// Can be null
"tos": "Some string" }

Country::Index

        This entity represents country entity.
{
// Persistent identifier of the entity
// Cannot be null
"id": 585, // Full name of the country
// Cannot be null
"name": "Some string", // ISO country code
// Can be null
"abbr": "Some string", // Phone code for the country
// Can be null
"dialing_code": "Some string" }

User::Password

        Represents password change user model.
{
// Current password of the user
// Can be null
"current_password": "Some string", // New password of the user
// Can be null
"password": "Some string", // New password, one more time
// Can be null
"password_confirmation": "Some string", // A set of errors occurred during password change request
// Cannot be null
"errors": [ Error::Index ] }

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": 961, // Users's alt ID.
// Cannot be null
"alt_id": "Some string", // User's club ID.
// Cannot be null
"club_id": 983, // 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": 74, // 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": 977, // 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": 97, // 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" }

Diary::Index

        Diaries are rich media content items, which combine a document along with a description.
{
// Persistent identifier of the entity
// Cannot be null
"id": 705, // Title of the diary category
// Cannot be null
"category": "Some string", // Description of the diary entity
// Can be null
"description": "Some string", // Deleted or active status
// Can be null
"deleted": true, // Created at field
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Exercise id if category is Exercise Record
// Can be null
"exercise_id": 163, // Workout id if category is Exercise Record
// Can be null
"workout_id": 278, // Sets if category is Exercise Record
// Can be null
"exercise_sets": 531, // Reps if category is Exercise Record
// Can be null
"exercise_reps": 918, // Weight if category is Exercise Record
// Can be null
"exercise_weight": 373 }

Announcement::Index

        Announcements are rich media content items, which combine a video or a document along with a description.
{
// Persistent identifier of the entity
// Cannot be null
"id": 434, // Title of the announcement entity
// Cannot be null
"name": "Some string", // Subtitle of the announcement entity
// Can be null
"sub_title": "Some string", // The URL to the thumbnail image of the content, if available
// Can be null
"thumbnail_url": "Some string", // The URL to the announcement image, if available
// Can be null
"announcement_image_url": "Some string", // The type of media kind, either pdf or a video
// Allowed values are: "video", "pdf", and "text"
// Cannot be null
"kind": "Some string", // The URL to the media content. In case of video, it's not a direct link to the video file, but an URL to the web-based player with the video in question
// Can be null
"url": "Some string", // Description of the announcement
// Can be null
"description": "Some string", // Source url of the announcement
// Can be null
"media_file_url": "Some string", // The URL to the media content. In case of video it is an Embedded, it is an Embedded code
// Can be null
"video": "Some string", // Whether the current user marked this announcement as a favourite
// Cannot be null
"starred": true, // Creation date of the announcement
// Can be null
"timestamp": "2025-04-24T03:41:21Z", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // List of announcement category ids
// Can be null
"announcement_category_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

MediaFile::Lookup

        The lookup represents of media file.
{
// Persistent identifier of the entity
// Cannot be null
"id": 430, // The name of the entity
// Cannot be null
"title": "Some string", // The subname of the entity
// Cannot be null
"sub_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" }

MediaFile::Show

        Representation of the media file.
{
// Persistent identifier of the entity
// Cannot be null
"id": 75, // The name of the entity
// Cannot be null
"title": "Some string", // The subname of the entity
// Cannot be null
"sub_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", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

AnnouncementCategory::Index

        Announcement categories are grouping entities which group multiple announcements together.
{
// Persistent identifier of the entity
// Cannot be null
"id": 720, // Title of the announcement category
// Cannot be null
"title": "Some string", // Description of the announcement category
// Can be null
"description": "Some string", // Color of the announcement category
// Can be null
"colour": "Some string", // Whether the category is disabled
// Cannot be null
"disabled": true, // Whether the category is All Announcements one
// Cannot be null
"is_overall_category": true, // The prioroty of the announcement category
// Cannot be null
"priority": 594, // The url to the announcement category image
// Can be null
"logo_url": "Some string", // Whether the current user has marked the announcement category as a favourite
// Cannot be null
"starred": true, // Maximum timestamp of the contained announcement
// Can be null
"timestamp": "2025-04-24T03:41:21Z", // Identificator of the item's club
// Cannot be null
"club_id": 493 }

Communication::Show

        Represents a message.
{
// Persistent identifier of the entity
// Cannot be null
"id": 231, // Subject of the message
// Cannot be null
"subject": "Some string", // Body of the message
// Cannot be null
"body": "Some string", // Deeplink Url of the message
// Cannot be null
"deeplink_url": "Some string", // Date and time of delivery of message
// Can be null
"deliver_at": "2025-04-24" }

Workout::Form

        The workout entity is used to group multiple exercises together to provide a set of the latter in a form of a workout plan.
{
// Persistent identifier of the entity
// Cannot be null
"id": 663, // The kind of the workout
// Allowed values are: "Tabata"
// Cannot be null
"kind": "Some string", // The category of the workout
// Allowed values are: "Plan"
// Cannot be null
"category": "Some string", // The type of the workout
// Allowed values are: [:timer, 0], [:preview, 1], and [:video, 2]
// Cannot be null
"item_type": "Some string", // The name of the workout
// Cannot be null
"title": "Some string", // An optional additional name of the workout
// Can be null
"sub_title": "Some string", // The description of the workout
// Can be null
"description": "Some string", // Workout Category ID
// Cannot be null
"workout_category_id": 842, // Returns true if the Workout is readonly
// Cannot be null
"readonly": true, // Represents FeedItem object
// Cannot be null
"feed_item": FeedItem::Form, // Represents Excercise object
// Can be null
"excercises": [ Excercise::Index ], // The logo of the Workout
// Can be null
"logo": , // The landing image of the Workout
// Can be null
"landing_image": , // The video of the Workout
// Can be null
"video": "Some string", // Whether Workout has marked as a disabled
// Cannot be null
"disabled": true, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

FeedItem::Form

        Represents Feed::Item form model.
{
// The internal ID of the entity
// Cannot be null
"id": 118, // Role Access Bitmap
// Cannot be null
"human_user_visibility": [ "An", "Array", "Of", "Strings/Integers" ], // Spread the content to all subscriptions or specific only?
// Cannot be null
"target_subscribed_clubs_mode": "Some string", // Spread the content to all users or to filtered by role or to specific only?
// Cannot be null
"target_explicit_receivers_mode": "Some string", // Explicit list of users to deliver to
// Cannot be null
"explicit_users": [ User::Lookup ], // Explicit list of groups to deliver to
// Cannot be null
"explicit_groups": [ Group::Lookup ], // Explicit list of clubs to deliver to
// Cannot be null
"explicit_clubs": [ Club::Lookup ], // Determines is this item will be shown for all or only who subscribed to timeline
// Cannot be null
"private_timeline_audience": true, // Public or disabled?
// Cannot be null
"enabled": true, // The last date of being public
// Can be null
"visible_until": "2025-04-24T03:41:21Z", // The first date of being public
// Can be null
"deliver_at": "2025-04-24T03:41:21Z", // Send notifications?
// Cannot be null
"send_notifications": true, // A set of errors occurred during password change request
// Cannot be null
"errors": [ Error::Index ] }

Excercise::Index

Represents exercise entity for lists and lookups

{
// Persistent identifier of the entity
// Cannot be null
"id": 669, // Name of the exercise
// Cannot be null
"name": "Some string", // Name of the exercise
// Cannot be null
"title": "Some string", // Code of the exercise
// Cannot be null
"code": "Some string", // Description of the exercise
// Can be null
"description": "Some string", // Sub title of the exercise
// Can be null
"sub_title": "Some string", // Type of the exercise
// Allowed values are: "Tabata", "Time", and "Sets/Reps"
// Cannot be null
"kind": "Some string", // Section title associated with the exercise
// Can be null
"section_title": "Some string", // Note of the exercise
// Can be null
"note": "Some string", // Name of the source club
// Cannot be null
"club_name": "Some string", // Optional information supplied along with the exercise model (like weight to be used)
// Can be null
"notes": "Some string", // The number of cycles
// Cannot be null
"cycles": 172, // The number of sessions
// Cannot be null
"sessions": 890, // The duration of the prepare phase (seconds)
// Cannot be null
"prepare": 57, // The duration of the work phase (seconds)
// Cannot be null
"work": 367, // The duration of the rest phase (seconds)
// Cannot be null
"rest": 9, // The kcals for that exercise
// Cannot be null
"kcals": 480, // Whether the exercise is editable by current user
// Cannot be null
"readonly": true, // Associated exercise categroy
// Can be null
"exercise_category": ExerciseCategory::Lookup, // Primary video file of the exercise
// Can be null
"media_file": MediaFile::Lookup, // Loop video file of the exercise
// Can be null
"looped_media_file": MediaFile::Lookup, // Prepare audio of the exercise
// Can be null
"prepare_audio_file": MediaFile::Lookup, // Work audio file of the exercise
// Can be null
"work_audio_file": MediaFile::Lookup, // Rest audio file of the exercise
// Can be null
"rest_audio_file": MediaFile::Lookup, // Contains translations data
// Cannot be null
"translations": {
}

}

Group::Lookup

        Represents the stripped version of the group entity
{
// The internal ID of the entity
// Cannot be null
"id": 32, // 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" }

ExerciseCategory::Lookup

Serializes exercise category in a form of a lookup model

{
// Persistent identifier of the entity
// Cannot be null
"id": 950, // Name of the exercise category
// Cannot be null
"title": "Some string" }

MediaFile::Lookup

Represents media file entity

{
// The internal ID of the entity
// Cannot be null
"id": 173, // Media file title
// Cannot be null
"title": "Some string", // Media file subtitle
// Can be null
"sub_title": "Some string", // Media file subtitle
// Can be null
"description": "Some string", // Type of the file
// Can be null
"kind": "Some string", // Thumbnail image
// Can be null
"image_url": "Some string", // Thumbnail image
// Can be null
"thumbnail_url": "Some string", // Media file target URL
// Can be null
"url": "Some string", // Vimeo player URL
// Can be null
"vimeo_video_id": 733, // Video player URL
// Can be null
"video_id": 737, // Video provider
// Can be null
"provider": "Some string" }

Workout::Index

        Represents Workout entity for lists and lookups
{
// Persistent identifier of the entity
// Cannot be null
"id": 846, // The name of the workout
// Cannot be null
"title": "Some string", // An optional additional name of the workout
// Can be null
"sub_title": "Some string", // The description of the workout
// Can be null
"description": "Some string", // The type of the workout
// Allowed values are: [:timer, 0], [:preview, 1], and [:video, 2]
// Cannot be null
"item_type": "Some string", // Returns true if the Workout is disabled
// Cannot be null
"disabled": true, // Returns count of Exercises
// Cannot be null
"excercises_count": 438, // Whether the current user has marked this workout as a favourite
// Cannot be null
"starred": true, // The URL to image of the Workout
// Can be null
"image_url": "Some string", // The URL to landing image of the Workout
// Can be null
"landing_image_url": "Some string", // The URL of the video of the Workout
// Can be null
"video_url": "Some string" }

WorkoutCategory::Index

        Workout categories
{
// Persistent identifier of the entity
// Cannot be null
"id": 724, // Name of the workout category
// Cannot be null
"name": "Some string", // Description of the workout category
// Can be null
"description": "Some string", // Color of the workout category
// Can be null
"colour": "Some string", // Whether the category is hidden
// Cannot be null
"hidden": true, // The url to the workout category image
// Can be null
"logo_url": "Some string", // Whether the current user has marked the workout category as a favourite
// Cannot be null
"starred": true, // Array of Fisikal Group IDs the category is assocated to
// Can be null
"group_ids": [ "An", "Array", "Of", "Strings/Integers" ] }

Excercise::Form

Represents exercise entity for lists and lookups

{
// Name of the exercise
// Can be null
"name": "Some string", // Sub title of the exercise
// Can be null
"sub_title": "Some string", // Type of the exercise
// Can be null
"kind": "Some string", // Description the exercise
// Can be null
"description": "Some string", // Note of the exercise
// Can be null
"note": "Some string", // Code of the exercise
// Can be null
"code": "Some string", // Section title associated with the exercise
// Can be null
"section_title": "Some string", // Duration of work period, seconds
// Can be null
"work": 753, // Duration of rest period, seconds
// Can be null
"rest": 533, // Kcals of exercise
// Can be null
"kcals": 953, // Duration of prepare period, seconds
// Can be null
"prepare": 863, // Number of sessions
// Can be null
"sessions": 235, // Number of cycles
// Can be null
"cycles": 848, // Custom notes
// Can be null
"notes": "Some string", // Id of the media file for primary video
// Can be null
"media_file_id": 415, // Id of the looped media file
// Can be null
"looped_media_file_id": 404, // Id of the prepare audio
// Can be null
"prepare_audio_file_id": 819, // Id of the work audio
// Can be null
"work_audio_file_id": 51, // Id of the rest audio
// Can be null
"rest_audio_file_id": 92, // Delivery settings of the exercise
// Cannot be null
"feed_item": FeedItem::Form, // Associated exercise categroy
// Can be null
"exercise_category": ExerciseCategory::Lookup, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // Contains translations data
// Cannot be null
"translations": {
}

}

Excercise::Show

Represents exercise entity and all associated fields

{
// Persistent identifier of the entity
// Cannot be null
"id": 809, // Name of the exercise
// Cannot be null
"name": "Some string", // Name of the exercise
// Can be null
"sub_title": "Some string", // Description of the exercise
// Can be null
"description": "Some string", // Note of the exercise
// Can be null
"note": "Some string", // Code of the exercise
// Can be null
"code": "Some string", // Section title associated with the exercise
// Can be null
"section_title": "Some string", // Type of the exercise
// Allowed values are: "Tabata", "Time", and "Sets/Reps"
// Cannot be null
"kind": "Some string", // Optional information supplied along with the exercise model (like weight to be used)
// Can be null
"notes": "Some string", // The number of cycles
// Cannot be null
"cycles": 122, // The number of sessions
// Cannot be null
"sessions": 376, // The duration of the prepare phase (seconds)
// Cannot be null
"prepare": 749, // The duration of the work phase (seconds)
// Cannot be null
"work": 369, // The duration of the rest phase (seconds)
// Cannot be null
"rest": 50, // The kcals for that exercise
// Cannot be null
"kcals": 413, // Primary video file of the exercise
// Can be null
"media_file": MediaFile::Lookup, // Loop video file of the exercise
// Can be null
"looped_media_file": MediaFile::Lookup, // Prepare audio of the exercise
// Can be null
"prepare_audio_file": MediaFile::Lookup, // Work audio file of the exercise
// Can be null
"work_audio_file": MediaFile::Lookup, // Rest audio file of the exercise
// Can be null
"rest_audio_file": MediaFile::Lookup, // Rest audio file of the exercise
// Can be null
"feed_item": FeedItem::Form, // Associated exercise categroy
// Can be null
"exercise_category": ExerciseCategory::Lookup, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // Contains translations data
// Cannot be null
"translations": {
}

}

ExerciseCategory::Show

Serializes exercise category in a form of a full model

{
// Persistent identifier of the entity
// Cannot be null
"id": 581, // Name of the exercise category
// Can be null
"name": "Some string", // Whether the category is hidden
// Can be null
"hidden": true, // Description of the exercise category
// Can be null
"description": "Some string", // Sorting order of the category
// Can be null
"priority": 590, // Color of the category
// Can be null
"colour": "Some string", // Color of the category
// Cannot be null
"delivered_content": true, // Associated logo
// Can be null
"logo": MediaFile::Lookup, // Contains translations data
// Cannot be null
"translations": {
}

}

Note::Index

        Represents note entities
{
// Persistent identifier of the entity.
// Cannot be null
"id": 105, // Persistent identifier of the client entity.
// Cannot be null
"client_id": 9, // Whether the Note is disabled.
// Can be null
"disabled": true, // Text of the note
// Cannot be null
"body": "Some string", // The type of the note
// Cannot be null
"note_type": "Some string", // Timestamp of entity creation
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Timestamp of entity creation
// Can be null
"updated_at": "2025-04-24T03:41:21Z", // Attachments size
// Can be null
"file_size": 416, // Attachments content type
// Can be null
"file_content_type": "Some string", // Attachments url
// Can be null
"file_url": "Some string" }

Note::Form

        Represents note entity
{
// Persistent identifier of the client entity.
// Cannot be null
"client_id": 291, // Whether the Note is disabled.
// Can be null
"disabled": true, // Text of the note
// Cannot be null
"body": "Some string", // The type of the note
// Cannot be null
"note_type": "Some string", // Timestamp of entity creation
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Timestamp of entity creation
// Can be null
"updated_at": "2025-04-24T03:41:21Z", // Attachments size
// Can be null
"file_size": 645, // Attachments content type
// Can be null
"file_content_type": "Some string", // Attachments url
// Can be null
"file_url": "Some string", // A set of errors occurred during note update
// Cannot be null
"errors": [ Error::Index ] }

Note::Show

        Represents note entity
{
// Persistent identifier of the entity.
// Cannot be null
"id": 165, // Persistent identifier of the client entity.
// Cannot be null
"client_id": 109, // Whether the Note is disabled.
// Can be null
"disabled": true, // Text of the note
// Can be null
"body": "Some string", // The type of the note
// Can be null
"note_type": "Some string", // Timestamp of entity creation
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Timestamp of entity creation
// Can be null
"updated_at": "2025-04-24T03:41:21Z", // Attachments size
// Can be null
"file_size": 169, // Attachments content type
// Can be null
"file_content_type": "Some string", // Attachments url
// Can be null
"file_url": "Some string" }

Group::Index

        Represents a group.
{
// Persistent identifier of the entity
// Cannot be null
"id": 42, // The name of the group
// Cannot be null
"name": "Some string", // Status of the group, true goes for inactive group.
// Can be null
"disabled": true, // Array of user ids to include in the group
// Can be null
"user_ids": "Some string" }

UserUiPreference::Lookup

        Represents User UI Preference
{
// User UI Preference Type
// Cannot be null
"preference_type": "Some string", // User UI Preference value
// Cannot be null
"preference_value": "Some string" }

Profile::Form

        This entity encapsulates all the accessible client's profile information, such as
        name, title, email, avatar, phone numbers etc.
{
// Persistent identifier of the entity
// Cannot be null
"id": 146, // Alt ID of the user
// Can be null
"alt_id": "Some string", // Preferred title of the user
// Can be null
"title": "Some string", // Full name of the user
// Can be null
"name": "Some string", // E-mail address of the user
// Can be null
"email": "Some string", // Town the user resides in
// Can be null
"town": "Some string", // Address line 1
// Can be null
"address_1": "Some string", // Address line 2
// Can be null
"address_2": "Some string", // Address line 3
// Can be null
"address_3": "Some string", // Landline phone number
// Can be null
"phone_no": "Some string", // Mobile phone number
// Can be null
"mobile_no": "Some string", // Work phone number
// Can be null
"work_no": "Some string", // Postcode associated with user's place of residence
// Can be null
"postcode": "Some string", // User's qualifications text
// Can be null
"qualifications": "Some string", // User's biography text
// Can be null
"description": "Some string", // Gender of the user (true for male, false for female)
// Can be null
"sex": true, // Height of the user, cm
// Can be null
"height": 794, // Weight of the user, kg
// Can be null
"weight": 430, // User's country of residense
// Can be null
"country_id": 624, // User's date of birth
// Can be null
"dob": "2025-04-24", // User language
// Can be null
"locale": "Some string", // Livestream enabled or not
// Can be null
"livestream_enabled": true, // Replace occurrence livestream url Automatically or not
// Can be null
"livestream_automatic_link_posting_enabled": true, // Livestream platform
// Can be null
"livestream_platform": "Some string", // Livestream URL
// Can be null
"livestream_url": "Some string", // Next of kin
// Can be null
"next_of_kin": "Some string", // Emergency contact number
// Can be null
"emergency_contact_number": "Some string", // Avatar image of the user
// Can be null
"image": , // Cover photo of the user
// Can be null
"cover_photo": , // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

Trainer::Index

        The lookup representation of the trainer.
{
// Persistent identifier of the entity
// Cannot be null
"id": 224, // 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::Form

        This entity encapsulates all the accessible trainer's profile information, such as
        name, title, email, avatar, phone numbers etc.
{
// Persistent identifier of the entity
// Can be null
"id": 813, // ALT ID of the user
// Can be null
"alt_id": "Some string", // Preferred title of the user
// Can be null
"title": "Some string", // Full name of the user
// Can be null
"name": "Some string", // Select type of trainer one of two (employed or self_employed)
// Can be null
"type": "Some string", // E-mail address of the user
// Can be null
"email": "Some string", // Town the user resides in
// Can be null
"town": "Some string", // Address line 1
// Can be null
"address_1": "Some string", // Address line 2
// Can be null
"address_2": "Some string", // Address line 3
// Can be null
"address_3": "Some string", // Landline phone number
// Can be null
"phone_no": "Some string", // Mobile phone number
// Can be null
"mobile_no": "Some string", // Work phone number
// Can be null
"work_no": "Some string", // Postcode associated with user's place of residence
// Can be null
"postcode": "Some string", // User's qualifications text
// Can be null
"qualifications": "Some string", // User's biography text
// Can be null
"description": "Some string", // Gender of the user (true for male, false for female)
// Can be null
"sex": true, // User's country of residense
// Can be null
"country_id": 511, // User's date of birth
// Can be null
"dob": "2025-04-24", // Array of Fisikal Group IDs the user is assocated to
// Can be null
"group_ids": [ "An", "Array", "Of", "Strings/Integers" ], // ID of Home Location
// Cannot be null
"home_location_id": 707, // Avatar image of the user
// Can be null
"image": , // Cover photo of the user
// Can be null
"cover_photo": , // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

Trainer::Show

        Full representations of the trainer.
{
// Persistent identifier of the entity
// Cannot be null
"id": 272, // ALT ID of the user
// Can be null
"alt_id": "Some string", // Preferred title of the user
// Can be null
"title": "Some string", // The name of the entity
// Cannot be null
"name": "Some string", // E-mail
// Cannot be null
"email": "Some string", // Type of trainer
// Cannot be null
"type": "Some string", // The link to the image of the entity
// Cannot be null
"image_url": "Some string", // The URL to the presentation video of the trainer
// Cannot be null
"video_url": "Some string", // Date of birth of the trainer
// Cannot be null
"dob": "Some string", // Gender of the trainer, true stands for male.
// Allowed values are: "true" and "false"
// Can be null
"sex": true, // A short description about profession area
// Cannot be null
"description": "Some string", // A long description to get client attention
// Cannot be null
"experience": "Some string", // A long description of the qualifications
// Cannot be null
"qualifications": "Some string", // Club id the trainer is associated to
// Cannot be null
"club_id": "Some string", // Mobile number
// Cannot be null
"mobile_no": "Some string", // Phone number
// Cannot be null
"phone_no": "Some string", // Work phone number
// Cannot be null
"work_no": "Some string", // Sets to true when the trainer is inactive
// Cannot be null
"disabled": "Some string", // Indicates if the trainer should be activated at the selected date
// Cannot be null
"disabled_until": "Some string", // Indicates why the trainer was inactive
// Cannot be null
"disabled_description": "Some string", // Created at timestamp
// Cannot be null
"created_at": "Some string", // Updated at timestamp
// Cannot be null
"updated_at": "Some string", // Address 1
// Cannot be null
"address_1": "Some string", // Address 2
// Cannot be null
"address_2": "Some string", // Address 3
// Cannot be null
"address_3": "Some string", // Town of residence
// Cannot be null
"town": "Some string", // Postcode
// Cannot be null
"postcode": "Some string", // An associated payment setting object
// Can be null
"payment_settings": [ PaymentSetting::Index ], // An associated country object
// Can be null
"country": Country::Index, // An associated location object
// Can be null
"home_location": Location::Index, // An associated locations object
// Can be null
"locations": [ Location::Index ], // An associated groups object
// Can be null
"groups": [ Group::Lookup ], // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

PaymentSetting::Index

        The lookup representation of the payment setting.
{
// Persistent identifier of the entity
// Cannot be null
"id": 294, // Type of the payment provider a package can be purchased with. Allowed values are: "stripe" and "paypal"
// Cannot be null
"payment_provider": "Some string", // DPS User id
// Cannot be null
"dps_user_id": "Some string", // DPS key
// Cannot be null
"dps_key": "Some string", // Paypal email
// Cannot be null
"paypal_email": "Some string", // Paychoice username
// Cannot be null
"paychoice_username": "Some string", // Stripe provider
// Cannot be null
"stripe_provider": "Some string", // Stripe uid
// Cannot be null
"stripe_uid": "Some string", // Smartpay account name
// Cannot be null
"smartpay_account_name": "Some string", // Gocardless organization id
// Cannot be null
"gocardless_organisation_id": "Some string", // Shipping fee
// Cannot be null
"shipping_fee": "Some string", // Receipt format
// Cannot be null
"receipt_format": "Some string", // Receipts enabled
// Cannot be null
"receipts_enabled": "Some string", // Offline-only warning message
// Cannot be null
"offline_message": "Some string" }

Client::Index

        Represents a client.
{
// Persistent identifier of the entity
// Cannot be null
"id": 360, // Name of the client
// Cannot be null
"name": "Some string", // Email of the client
// Cannot be null
"email": "Some string", // Title of the client
// Can be null
"title": "Some string", // Phone number
// Can be null
"phone_no": "Some string", // Mobile phone number
// Can be null
"mobile_no": "Some string", // Work phone number
// Can be null
"work_no": "Some string", // Gender, where TRUE represents male and FALSE represents female
// Can be null
"sex": true, // Date of birth
// Cannot be null
"dob": "Some string", // Postcode
// Can be null
"postcode": "Some string", // Town of residence
// Can be null
"town": "Some string", // Address line one
// Can be null
"address_1": "Some string", // Address line two
// Can be null
"address_2": "Some string", // Address line three
// Can be null
"address_3": "Some string", // Represents a flag if client is in active flag
// Cannot be null
"disabled": true, // A date time until when the client should remain inactive, should be coupled with status='frozen'
// Can be null
"disabled_until": "2025-04-24", // A text description of the reason the client is inactive
// Can be null
"disabled_description": "Some string", // Alt id of the client, represents ID in the 3rd party system
// Can be null
"alt_id": "Some string", // A flag representing that this client is visible to specific trainers only
// Can be null
"allocated_trainers": true, // Appointment permission code
// Can be null
"appointment_permission_code": "Some string", // An array of internal IDs of the disabilities of the client
// Cannot be null
"disability_ids": "Some string", // Nomical user ID
// Cannot be null
"nomical_user_id": "Some string", // Access PIN of the client
// Can be null
"access_pin": "Some string", // Network Membership Number of the client
// Can be null
"network_membership_number": "Some string", // Deleted flag
// Cannot be null
"deleted": "Some string", // Wallet enabled
// Can be null
"wallet_enabled": true, // ID of Home Location
// Cannot be null
"home_location_id": 361, // ID of Default Location
// Cannot be null
"default_location_id": 250, // Avatar image of the user
// Can be null
"image": , // Cover photo of the user
// Can be null
"cover_photo": , // A datetime field to represent clients update_at
// Can be null
"updated_at": "2025-04-24T03:41:21Z", // An associated country object
// Can be null
"country": Country::Index, // An associated trainers object
// Can be null
"allocated_to": [ User::Lookup ], // Main Hand
// Cannot be null
"main_hand": "Some string", // Receive Newsletters
// Cannot be null
"receive_newsletter": true, // Leadbetter Student Type
// Cannot be null
"lga_student_type": "Some string" }

Client::Show

        This entity encapsulates all the accessible client's profile information, such as
        name, title, email, avatar, phone numbers etc.
{
// Persistent identifier of the entity
// Can be null
"id": 253, // Preferred title of the user
// Can be null
"title": "Some string", // Full name of the user
// Can be null
"name": "Some string", // E-mail address of the user
// Can be null
"email": "Some string", // Town the user resides in
// Can be null
"town": "Some string", // Address line 1
// Can be null
"address_1": "Some string", // Address line 2
// Can be null
"address_2": "Some string", // Address line 3
// Can be null
"address_3": "Some string", // Landline phone number
// Can be null
"phone_no": "Some string", // Mobile phone number
// Can be null
"mobile_no": "Some string", // Work phone number
// Can be null
"work_no": "Some string", // Postcode associated with user's place of residence
// Can be null
"postcode": "Some string", // User's qualifications text
// Can be null
"qualifications": "Some string", // User's biography text
// Can be null
"description": "Some string", // Flag which indicates that user has critical notes
// Can be null
"has_critical_notes": true, // Gender of the user (true for male, false for female)
// Can be null
"sex": true, // Height of the user, cm
// Can be null
"height": 64, // Weight of the user, kg
// Can be null
"weight": 743, // User's country of residense
// Can be null
"country_id": 896, // User's date of birth
// Can be null
"dob": "2025-04-24", // User's last login date
// Can be null
"last_login_at": "2025-04-24", // Client has had their booking permissions removed from
// Can be null
"strike_out_from": "2025-04-24T03:41:21Z", // Client has had their booking permissions removed from
// Can be null
"strike_out_till": "2025-04-24T03:41:21Z", // Array of Fisikal Group IDs the user is assocated to
// Can be null
"group_ids": [ "An", "Array", "Of", "Strings/Integers" ], // ID of Home Location
// Cannot be null
"home_location_id": 359, // ID of Home Location
// Cannot be null
"default_location_id": 747, // A flag representing that this client is visible to specific trainers only
// Can be null
"allocated_trainers": true, // National ID
// Can be null
"national_id": "Some string", // Next of kin
// Can be null
"next_of_kin": "Some string", // Emergency contact number
// Can be null
"emergency_contact_number": "Some string", // Nickname
// Can be null
"nickname": "Some string", // Source
// Can be null
"source": "Some string", // Wallet enabled
// Can be null
"wallet_enabled": true, // Alt id of the client, represents ID in the 3rd party system
// Can be null
"alt_id": "Some string", // Array of trainer IDs who can see client
// Can be null
"allocated_to_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Avatar image of the user
// Can be null
"image": , // Cover photo of the user
// Can be null
"cover_photo": , // Main Hand
// Cannot be null
"main_hand": "Some string", // Receive Newsletters
// Cannot be null
"receive_newsletter": true, // Leadbetter Student Type
// Cannot be null
"lga_student_type": "Some string", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // An associated groups object
// Can be null
"groups": [ Group::Lookup ], // An associated generic groups object
// Can be null
"generic_groups": [ Group::Lookup ], // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

Discount::Show

Represents a discount entity, optionally for an arbitrary amount of percentage.

{
// ID discount
// Cannot be null
"id": 858, // Defines custom duscount. Should always be true
// Cannot be null
"free_text": true, // Discount name
// Cannot be null
"name": "Some string", // Absolute amount of discount in cents
// Can be null
"amount_off": 440, // Percentage discount to be applied
// Can be null
"percentage_off": 899 }

CreditCard::Index

        This entity encapsulated credit card data.
{
// Persistent identifier of the entity
// Can be null
"id": 16, // Title of the credit card
// Can be null
"title": "Some string" }

Service::All

        Represents a service.
{
// Persistent identifier of the entity
// Cannot be null
"id": 639, // Group size
// Cannot be null
"group_size": 321, // Duration in hours
// Cannot be null
"duration_in_hours": 740, // Duration in minutes
// Cannot be null
"duration_in_minutes": 887, // Default rate
// Cannot be null
"default_rate": "Some string", // Disabled
// Cannot be null
"disabled": "Some string", // Description
// Cannot be null
"declaration": "Some string", // Logo url
// Cannot be null
"logo_url": "Some string", // Service image url
// Cannot be null
"service_image_url": "Some string", // Service title
// Cannot be null
"service_title": "Some string", // Activity category name
// Cannot be null
"activity_category_name": "Some string", // Service category name
// Cannot be null
"service_category_name": "Some string", // Auto sweep
// Cannot be null
"do_auto_sweep": true }

Service::Colors

        Response colors for services
{
// Persistent identifier of the entity
// Cannot be null
"id": 650, // Activity category id
// Cannot be null
"activity_category_id": 386, // Schedule color for header
// Cannot be null
"schedule_color_header": 873, // Schedule color for header text
// Cannot be null
"schedule_color_header_text": 472, // Schedule color for body
// Cannot be null
"schedule_color_body": 267, // Schedule color for body text
// Cannot be null
"schedule_color_body_text": 876, // Use activity schedule colors (true/false)
// Cannot be null
"use_activity_schedule_colors": 533 }

Service::Index

        Represents a service.
{
// Persistent identifier of the entity
// Cannot be null
"id": 950, // Group size
// Cannot be null
"group_size": 20, // Duration in hours
// Cannot be null
"duration_in_hours": 145, // Duration in minutes
// Cannot be null
"duration_in_minutes": 556, // Default rate
// Cannot be null
"default_rate": "Some string", // Disabled
// Cannot be null
"disabled": "Some string", // Description
// Cannot be null
"declaration": "Some string", // Logo url
// Cannot be null
"logo_url": "Some string", // Service image url
// Cannot be null
"service_image_url": "Some string", // Service title
// Cannot be null
"service_title": "Some string", // Activity category name
// Cannot be null
"activity_category_name": "Some string", // Service category name
// Cannot be null
"service_category_name": "Some string", // Show free spaces
// Cannot be null
"show_free_spaces": true, // Auto sweep
// Cannot be null
"do_auto_sweep": true, // Trainer remains available
// Cannot be null
"trainer_availability": true, // A collection of trainer activities
// Can be null
"trainer_activities": [ TrainerActivity::Index ], // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

TrainerActivity::Index

        Represents a service.
{
// Persistent identifier of the entity
// Cannot be null
"id": 67, // Indicates if trainer activity is disabled
// Cannot be null
"disabled": "Some string", // Assocated trainer record
// Can be null
"trainer": Trainer::Lookup, // Assocated location record
// Can be null
"location": Location::Lookup, // Assocated service record
// Can be null
"service": Service::Lookup }

Trainer::Lookup

        The lookup representation of the trainer.
{
// Persistent identifier of the entity
// Cannot be null
"id": 202, // 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" }

Service::Lookup

        The lookup representation of the service.
{
// Persistent identifier of the entity
// Cannot be null
"id": 579, // 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" }

Service::Show

        Represents a service.
{
// Persistent identifier of the entity
// Cannot be null
"id": 713, // Group size
// Cannot be null
"group_size": 958, // Duration in hours
// Cannot be null
"duration_in_hours": 640, // Duration in minutes
// Cannot be null
"duration_in_minutes": 353, // Default rate
// Cannot be null
"default_rate": "Some string", // Disabled
// Cannot be null
"disabled": "Some string", // Description
// Cannot be null
"declaration": "Some string", // Logo url
// Cannot be null
"logo_url": "Some string", // Service image url
// Cannot be null
"service_image_url": "Some string", // Service title
// Cannot be null
"service_title": "Some string", // Activity category name
// Cannot be null
"activity_category_name": "Some string", // Service category name
// Cannot be null
"service_category_name": "Some string", // Show free spaces
// Cannot be null
"show_free_spaces": true, // Auto sweep
// Cannot be null
"do_auto_sweep": true, // Trainer remains available
// Cannot be null
"trainer_availability": true, // A collection of trainer activities
// Can be null
"trainer_activities": [ TrainerActivity::Index ], // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

ActivityCategory::Index

        Represents an activity category.
{
// Persistent identifier of the entity
// Cannot be null
"id": 99, // Name of the entity
// Cannot be null
"name": "Some string", // Description of the entity
// Can be null
"description": "Some string", // Returns true if entity is hidden
// Cannot be null
"hidden": true, // HEX-code of colour for header in the schedule
// Can be null
"schedule_color_header": "Some string", // HEX-code of colour for header text in the schedule
// Can be null
"schedule_color_header_text": "Some string", // HEX-code of colour for body in the schedule
// Can be null
"schedule_color_body": "Some string", // HEX-code of colour for body text in the schedule
// Can be null
"schedule_color_body_text": "Some string", // Logo url of activity category
// Can be null
"logo_url": "Some string" }

ActivityCategory::Show

        Represents an activity category.
{
// Persistent identifier of the entity
// Cannot be null
"id": 89, // Name of the entity
// Cannot be null
"name": "Some string", // Description of the entity
// Can be null
"description": "Some string", // Returns true if entity is hidden
// Cannot be null
"hidden": true, // HEX-code of colour for header in the schedule
// Can be null
"schedule_color_header": "Some string", // HEX-code of colour for header text in the schedule
// Can be null
"schedule_color_header_text": "Some string", // HEX-code of colour for body in the schedule
// Can be null
"schedule_color_body": "Some string", // HEX-code of colour for body text in the schedule
// Can be null
"schedule_color_body_text": "Some string", // Logo url of activity category
// Can be null
"logo_url": "Some string", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

ServiceCategory::Index

        Represents an service category.
{
// Persistent identifier of the entity
// Cannot be null
"id": 717, // Name of the entity
// Cannot be null
"name": "Some string", // Description of the entity
// Can be null
"description": "Some string", // Returns true if entity is disabled
// Cannot be null
"disabled": true, // Logo url of service category
// Can be null
"logo_url": "Some string", // Video url of service category
// Can be null
"video_url": "Some string" }

ServiceCategory::Show

        Represents an service category.
{
// Persistent identifier of the entity
// Cannot be null
"id": 805, // Name of the entity
// Cannot be null
"name": "Some string", // Description of the entity
// Can be null
"description": "Some string", // Returns true if entity is disabled
// Cannot be null
"disabled": true, // Logo url of service category
// Can be null
"logo_url": "Some string", // Video url of service category
// Can be null
"video_url": "Some string", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

ServicePackage::Show

Represents a service package entity, which is effectively a collection of services grouped together in one purchasable unit.

{
// Unique persistent id of the entity
// Cannot be null
"id": 235, // The alt ID of Package
// Cannot be null
"alt_id": "Some string", // Title of the service package
// Cannot be null
"name": "Some string", // Description of the service package
// Can be null
"description": "Some string", // The url to the logo file associated with the service package
// Can be null
"logo_url": "Some string", // The url to the image file associated with the service package
// Can be null
"service_package_image_url": "Some string", // Video associated with the package
// Can be null
"video": {
// The URL to the web-based player configured to play the video file
// Can be null
"player_url": "Some string", // Direct URL to the video file
// Can be null
"file_url": "Some string" } ,

// Regular price of the package; nil if the package is free
// Can be null
"price": , // Client-specific price of the package; nil if the package is free
// Can be null
"custom_price": , // Id of the product which contents is this service package; purchase use only
// Cannot be null
"product_id": 343, // Whether the service package is disabled
// Cannot be null
"disabled": true, // Service category id
// Can be null
"service_category_id": "Some string", // Price of the service package
// Can be null
"cost": "Some string", // Service category name
// Cannot be null
"service_category_name": "Some string", // Whether the service package is expirable
// Can be null
"expirable": true, // Type of expiration
// Allowed values are: "day", "week", and "month"
// Can be null
"expires_period_type": "Some string", // Value of expiration
// Can be null
"expires_in": 419, // Type of expiration for related credits
// Allowed values are: :default, :custom, and :unexpirable
// Cannot be null
"credits_expiration_type": "Some string", // Number of days when user can use credits after package expiration
// Can be null
"credits_expire_after_days": 20, // Is package restricted to single trainer
// Can be null
"restrict_bookings_to_payee": true, // Whether Client must complete Assessment to purchase or not
// Cannot be null
"clients_require_assessment": true, // Id of package payee
// Can be null
"payee_id": 940, // Roles this service package is visible to
// Cannot be null
"user_visibility": [ UserVisibility::Index ], // A collection of service package services
// Cannot be null
"service_package_services": [ ServicePackageService::Lookup ], // The list of tag entities used as restictions for relation service_packages and occurrences
// Cannot be null
"tags": [ Tag::Index ], // The list of tag entities for possible search by tags
// Cannot be null
"service_package_tags": [ Tag::Index ] }

ServicePackageService::Lookup

Represents a service package service entity.

{
// Unique persistent id of the entity
// Cannot be null
"id": 469, // Amount of credits to be added when assigning the package
// Cannot be null
"amount": "Some string", // Associated service object
// Cannot be null
"service": Service::Lookup }

ServicePackage::Index

Represents a service package entity, which is effectively a collection of services grouped together in one purchasable unit.

{
// Unique persistent id of the entity
// Cannot be null
"id": 382, // The alt ID of Package
// Cannot be null
"alt_id": "Some string", // Title of the service package
// Cannot be null
"name": "Some string", // Description of the service package
// Can be null
"description": "Some string", // The url to the logo file associated with the service package
// Can be null
"logo_url": "Some string", // The url to the image file associated with the service package
// Can be null
"service_package_image_url": "Some string", // Video associated with the package
// Can be null
"video": {
// The URL to the web-based player configured to play the video file
// Can be null
"player_url": "Some string", // Direct URL to the video file
// Can be null
"file_url": "Some string" } ,

// Regular price of the package; nil if the package is free
// Can be null
"price": , // Client-specific price of the package; nil if the package is free
// Can be null
"custom_price": , // Id of the product which contents is this service package; purchase use only
// Cannot be null
"product_id": 147, // Whether the service package is disabled
// Cannot be null
"disabled": true, // Service category id
// Can be null
"service_category_id": "Some string", // Price of the service package
// Can be null
"cost": "Some string", // Service category name
// Cannot be null
"service_category_name": "Some string", // Whether the service package is expirable
// Can be null
"expirable": true, // Type of expiration
// Allowed values are: "day", "week", and "month"
// Can be null
"expires_period_type": "Some string", // Value of expiration
// Can be null
"expires_in": 175, // Type of expiration for related credits
// Allowed values are: :default, :custom, and :unexpirable
// Cannot be null
"credits_expiration_type": "Some string", // Number of days when user can use credits after package expiration
// Can be null
"credits_expire_after_days": 92, // Is package restricted to single trainer
// Can be null
"restrict_bookings_to_payee": true, // Whether Client must complete Assessment to purchase or not
// Cannot be null
"clients_require_assessment": true, // Id of package payee
// Can be null
"payee_id": 199, // Roles this service package is visible to
// Cannot be null
"user_visibility": [ UserVisibility::Index ], // A collection of service package services
// Cannot be null
"service_package_services": [ ServicePackageService::Lookup ] }

Bundle::Index

        This entity represents a bundle.
{
// Persistent identifier of the entity
// Cannot be null
"id": 333, // The name of the entity
// Cannot be null
"name": "Some string", // A flag representing does the entity is inactive
// Cannot be null
"disabled": true, // The description of the entity
// Can be null
"description": "Some string", // The price of the bundle
// Can be null
"cost": , // The packages and their amount included into the bundle
// Cannot be null
"items": [ BundleItem::Index ] }

BundleItem::Index

        This entity represents a bundle item.
{
// Persistent identifier of the entity
// Cannot be null
"id": 731, // The ID of the item
// Cannot be null
"item_id": 470, // The type of the item
// Cannot be null
"item_type": "Some string", // The name of the item
// Cannot be null
"title": "Some string", // The renewal frequency of item.
// Can be null
"freq": "Some string", // Whether the item is endless
// Can be null
"endless": true, // The duration of life of item.
// Can be null
"duration": "Some string", // The number of items to purchase
// Can be null
"quantity": 504, // Custom ToS for item
// Can be null
"tos": "Some string", // Whether the item has custom ToS
// Can be null
"custom_tos": true, // The default price of the bundle item
// Can be null
"cost": , // The default price with discounts applied
// Can be null
"bundle_cost": , // Represents discounts entities
// Cannot be null
"discounts": [ Discount::Show ] }

Discount::Show

Represents a discount entity, optionally for an arbitrary amount of percentage.

{
// ID discount
// Cannot be null
"id": 886, // Defines custom duscount. Should always be true
// Cannot be null
"free_text": true, // Discount name
// Cannot be null
"name": "Some string", // Absolute amount of discount in cents
// Can be null
"amount_off": 291, // Percentage discount to be applied
// Can be null
"percentage_off": 240 }

ClientServicePackage::Index

        Represents a group.
{
// Persistent identifier of the entity
// Cannot be null
"id": 437, // Name of the Service Package
// Cannot be null
"name": "Some string", // Description of the Service Package
// Can be null
"description": "Some string", // Name of Payee
// Can be null
"payee": "Some string", // The purchase method that was used to purchase the package
// Cannot be null
"payment_method": "Some string", // A date time when Service Package was assigned
// Can be null
"assigned_at": "2025-04-24", // A date time when Service Package expires
// Can be null
"expires_at": "2025-04-24", // A date time when Service Package terminates
// Can be null
"terminated_at": "2025-04-24", // Total number of credits
// Can be null
"total_credits": 952, // Number of credits used
// Can be null
"used_credits": 525, // Balance for the package
// Can be null
"balance": , // Cost of Service Package
// Can be null
"custom_cost": }

InternalPayment::Show

          Represents a payment.
{
// Persistent identifier of the entity
// Cannot be null
"id": 508 }

ServiceWorkingTime::Lookup

        Represents lookup variant of service working time entity.
{
// The internal ID of the entity
// Cannot be null
"id": 851, // 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": 299, // 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 ] }

ServiceWorkingTime::Form

        An extended service working time model model with errors array (if any occurred during the operation)
{
// Persistent identifier of the entity
// Cannot be null
"id": 303, // The name of the entity
// Cannot be null
"title": "Some string", // The type of the payroll scheme
// Cannot be null
"color": "Some string", // A flag representing does the entity is inactive
// Cannot be null
"disabled": true, // Flag indicating the SDH refers to standard working times
// Cannot be null
"standard": true, // Permissions to edit the SDH-related working times
// Cannot be null
"edit": , // Contains translations data
// Cannot be null
"translations": {
} ,

// A list of service entities
// Cannot be null
"services": [ Service::Lookup ], // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

Occurrence::Index

        Represents an occurrence.
{
// Persistent identifier of the entity
// Cannot be null
"id": 134, // UTC time this occurrence starts at
// Cannot be null
"occurs_at": "2025-04-24T03:41:21Z", // Hours part of the duration
// Cannot be null
"duration_in_hours": 51, // Minutes part of the duration
// Cannot be null
"duration_in_minutes": 992, // Optional notes attached to the occurrence
// Can be null
"notes": "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", // 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": 786, // A comma-separated list of client names
// Cannot be null
"active_clients": [ User::Lookup ], // Trainer name
// Cannot be null
"trainer_name": "Some string", // Activity ID
// Cannot be null
"activity_category_id": 149, // Number of free slots
// Cannot be null
"spare_slots": 754, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // The list of tag entities
// Cannot be null
"service_tags": [ Tag::Index ] }

Occurrence::Show

        Shows an occurrence.
{
// Persistent identifier of the entity
// Cannot be null
"id": 413, // UTC time this occurrence starts at
// Cannot be null
"occurs_at": "2025-04-24T03:41:21Z", // Hours part of the duration
// Cannot be null
"duration_in_hours": 335, // Minutes part of the duration
// Cannot be null
"duration_in_minutes": 101, // Optional notes attached to the occurrence
// Can be null
"notes": "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", // 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": 103, // A comma-separated list of client names
// Cannot be null
"active_clients": [ User::Lookup ], // Trainer name
// Cannot be null
"trainer_name": "Some string", // Trainer photo
// Cannot be null
"trainer_image": "Some string", // Activity ID
// Cannot be null
"activity_category_id": 569, // Number of free slots
// Cannot be null
"spare_slots": 230, // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ], // The list of tag entities
// Cannot be null
"service_tags": [ Tag::Index ] }

Occurrence::RoomMap

        Represents an occurrence with Room Map.
{
// Persistent identifier of the entity
// Cannot be null
"id": 427, // Version of occurrence
// Cannot be null
"lock_version": 855, // Represents a trainer entity
// Cannot be null
"trainer": User::Lookup, // Represents a join entity for OccurrenceClient and Room Map Spot
// Cannot be null
"occurrence_client_spots": [ OccurrenceClientSpot::Index ], // Represents a Room Map entity
// Cannot be null
"room_map": RoomMap::Index, // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

OccurrenceClientSpot::Index

        This entity represents a join entity for Occurrence Client and Room Map Spot.
{
// Persistent identifier of the entity
// Cannot be null
"id": 890, // true if spot is disabled
// Cannot be null
"disabled": true, // Represents a client entity
// Cannot be null
"client": User::Lookup, // Represents a Room Map Spot entity
// Cannot be null
"room_map_spot": RoomMapSpot::Index }

RoomMap::Index

Represents a Room map entity

{
// Unique persistent id of the entity
// Cannot be null
"id": 385, // The alt ID of Room map
// Cannot be null
"alt_id": "Some string", // Title of the service package
// Cannot be null
"title": "Some string", // Description of the Room map
// Can be null
"description": "Some string", // Layout of Room Map
// Cannot be null
"layout": "Some string", // Arc height if layout is arc
// Cannot be null
"arc_height": 586, // Rows
// Cannot be null
"rows": [ RoomMap::Row ], // Colours
// Cannot be null
"colours": {
// Colour of border for unavailable spot
// Cannot be null
"unavailable_border": "Some string", // Colour of background for unavailable spot
// Cannot be null
"unavailable_fill": "Some string", // Colour of text for unavailable spot
// Cannot be null
"unavailable_text": "Some string", // Colour of border for available spot
// Cannot be null
"available_border": "Some string", // Colour of background for available spot
// Cannot be null
"available_fill": "Some string", // Colour of text for available spot
// Cannot be null
"available_text": "Some string", // Colour of border for selected spot
// Cannot be null
"selected_border": "Some string", // Colour of background for selected spot
// Cannot be null
"select_fill": "Some string", // Colour of text for selected spot
// Cannot be null
"select_text": "Some string" } ,

// Whether the Room map is disabled
// Can be null
"disabled": true, // Represents a Room Map Spot entity
// Cannot be null
"spots": [ RoomMapSpot::Index ] }

RoomMapSpot::Index

        This entity represents a Room Map Spot.
{
// Persistent identifier of the entity
// Cannot be null
"id": 489, // Number of Room Map Spot
// Cannot be null
"number": 0, // Side of Room Map Spot (left, center, right)
// Cannot be null
"side": "Some string", // Row of Room Map Spot
// Cannot be null
"row": 940, // true if spot is disabled
// Cannot be null
"disabled": true }

RoomMap::Row

Represents a Room Map row entity

{
// Number of spots in left side
// Can be null
"left": 454, // Number of spots in center side
// Can be null
"center": 833, // Number of spots in right side
// Can be null
"right": 936 }

Occurrence::Edit

        Represents an occurrence.
{
// Persistent identifier of the entity
// Cannot be null
"id": 258, // UTC time this occurrence starts at
// Cannot be null
"occurs_at": "2025-04-24T03:41:21Z", // Hours part of the duration
// Cannot be null
"duration_in_hours": 690, // Minutes part of the duration
// Cannot be null
"duration_in_minutes": 850, // The size of the group
// Cannot be null
"group_size": 251, // Attendees count
// Can be null
"attendees_size": 137, // True if occurrence has Room Map
// Cannot be null
"with_room_map": true, // Optional notes attached to the occurrence
// Can be null
"notes": "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", // 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", // Permissions set up for current user
// Cannot be null
"service_permissions": [ "An", "Array", "Of", "Strings/Integers" ], // List of occurrence clients within this appointment
// Cannot be null
"occurrence_clients": [ OccurrenceClient::Edit ], // Waiting list of clients within this appointment
// Cannot be null
"waiting_list_clients": [ WaitingListClient::Edit ], // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

OccurrenceClient::Edit

        Represents an occurrence client.
{
// Occurrence ID
// Can be null
"id": 774, // A boolean flag to represent billing status
// Can be null
"is_billed": true, // A boolean flag to represent refund status
// Can be null
"is_refunded": true, // A boolean flag to represent cancellation status
// Can be null
"is_cancelled": true, // A boolean flag to represent attendance status
// Can be null
"is_attended": true, // A string field to represent attendance status
// Can be null
"attendance": "Some string", // Returns true if this is first booking for service
// Cannot be null
"is_service_first_booking": true, // A boolean field to represent first booking status
// Cannot be null
"is_first_booking": true, // A boolean flag to represent presence of Alert or Health notes
// Can be null
"has_critical_notes": true, // A boolean flag to represent whether the occurrence client was marked as one that should be prompted bypassing some of the rules or not
// Cannot be null
"force_prompt": true, // The user associated with this occurrence
// Cannot be null
"client": User::Lookup, // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

WaitingListClient::Edit

        Represents an occurrence client.
{
// Entity ID
// Can be null
"id": 7, // The user associated with this occurrence
// Cannot be null
"client": User::Lookup, // A set of errors occurred during profile update
// Cannot be null
"errors": [ Error::Index ] }

OccurrenceClient::Index

        Represents an occurrence client.
{
// Occurrence ID
// Can be null
"id": 454, // Client ID
// Can be null
"client_id": 306, // Occurrence ID
// Can be null
"occurrence_id": 827, // A boolean flag to represent billing status
// Can be null
"is_billed": true, // A boolean flag to represent refund status
// Can be null
"is_refunded": true, // A boolean flag to represent cancellation status
// Can be null
"is_cancelled": true, // A boolean flag to represent attendance status
// Can be null
"is_attended": true, // A string field to represent attendance status
// Can be null
"attendance": "Some string", // Trainer name
// Can be null
"trainer_name": "Some string", // Client name
// Can be null
"client_name": "Some string", // Location name
// Can be null
"location_name": "Some string", // Service title
// Can be null
"service_title": "Some string", // A string field to represent status of booking
// Can be null
"status": "Some string", // Date and Time of Occurrence
// Can be null
"occurs_at": "2025-04-24T03:41:21Z", // A boolean flag to represent presence of Alert or Health notes
// Can be null
"has_critical_notes": true, // A boolean flag to represent whether the occurrence client was marked as one that should be prompted bypassing some of the rules or not
// Cannot be null
"force_prompt": true }

TagCategory::Show

        This entity represents a tag category
{
// Persistent identifier of the entity
// Cannot be null
"id": 682, // 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", // The list of tag entities
// Cannot be null
"tags": [ Tag::Index ] }

PayrollScheme::Index

        This entity represents a single payroll scheme.
{
// Persistent identifier of the entity
// Cannot be null
"id": 174, // The name of the entity
// Cannot be null
"title": "Some string", // The type of the payroll scheme
// Cannot be null
"type": "Some string", // A flag representing does the entity is inactive
// Cannot be null
"disabled": true }

PayrollScheme::Form

        An extended payroll scheme model with errors array (if any occurred during the operation)
{
// Persistent identifier of the entity
// Can be null
"id": 389, // The name of the payroll scheme
// Cannot be null
"title": "Some string", // The type of the payroll scheme
// Cannot be null
"type": "Some string", // A flag representing does the entity is inactive
// Can be null
"disabled": true, // A flag representing does the entity is connected with all locations
// Cannot be null
"all_locations": true, // A flag representing that the count must have been completed by the trainer that took the session
// Can be null
"count_required": true, // A flag representing that the session must have been verified
// Can be null
"verification_required": true, // A flag representing that the attendees count of session must be greater than zero
// Can be null
"count_must_positive": true, // A list of commission tiers
// Cannot be null
"commission_tiers": [ PayrollScheme::CommissionTier ], // A list of scheme service entities
// Cannot be null
"scheme_services": [ PayrollScheme::SchemeService ], // A list of scheme locations entities
// Cannot be null
"locations": [ Location::Lookup ], // Array of location ids
// Can be null
"location_ids": [ "An", "Array", "Of", "Strings/Integers" ], // Array of trainers ids
// Cannot be null
"trainer_ids": [ "An", "Array", "Of", "Strings/Integers" ], // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

PayrollScheme::CommissionTier

        This entity represents a single commission tier.
{
// Persistent identifier of the entity
// Can be null
"id": 132, // The type of the commission tier
// Cannot be null
"type": "Some string", // The minimum number of sessions a tier will start to take effect
// Cannot be null
"from": 447, // The maximim number of sessions a tier will start to take effect. It could be nil for the last tier in the scheme
// Can be null
"to": 692, // The percentage to be paid for that level of tier
// Cannot be null
"value": 52.8, // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

PayrollScheme::SchemeService

        This entity represents a single payroll scheme scheme join model.
{
// Persistent identifier of the entity
// Can be null
"id": 997, // The idintificator of service scheme is attached for
// Cannot be null
"service_id": 59, // The gross value of the service
// Cannot be null
"gross": 54.2, // The VAT value for the service
// Cannot be null
"vat": 86.5, // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }

NotificationSettingsSet::Index

Serializes Notification Settings Set for index actions

{
// Persistent identifier of the entity
// Can be null
"id": 409, // Club Id
// Can be null
"club_id": 763, // User Id
// Can be null
"user_id": 6, // Timestamp of entity creation
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Timestamp of entity update
// Can be null
"updated_at": "2025-04-24T03:41:21Z", // Lead Client Name
// Can be null
"lead_client_name": "Some string", // Show if child client is related and linked through emails permissions with lead/parent child
// Can be null
"global_notifications_enabled_by_lead_client": true, // Notification settings
// Can be null
"notification_settings": [ NotificationSetting::Index ] }

NotificationSetting::Index

Serializes Notification Settings Set

{
// Persistent identifier of the entity
// Can be null
"id": 465, // NotificationSetting id linked with this setting
// Can be null
"notification_settings_set_id": 691, // Key for setting
// Cannot be null
"key": "Some string", // Timestamp of entity creation
// Can be null
"created_at": "2025-04-24T03:41:21Z", // Timestamp of entity update
// Can be null
"updated_at": "2025-04-24T03:41:21Z", // To client option
// Can be null
"to_client": true, // To trainer option
// Can be null
"to_trainer": true, // To manager option
// Can be null
"to_manager": true, // To front_house_manager option
// Can be null
"to_front_house_manager": true, // To system option
// Can be null
"to_system": true, // To administrator option
// Can be null
"to_administrator": true, // To self_employed option
// Can be null
"to_self_employed": true, // To independent_trainer option
// Can be null
"to_independent_trainer": true, // To sjd_accountant option
// Can be null
"to_sjd_accountant": true, // To content_provider option
// Can be null
"to_content_provider": true, // To accountant option
// Can be null
"to_accountant": true, // To content_user option
// Can be null
"to_content_user": true, // To pt_manager option
// Can be null
"to_pt_manager": true }

Identity::Model

This entity represents an identity of user

{
// ID
// Cannot be null
"id": 576, // Value (uid) of identity
// Cannot be null
"value": "Some string", // Timestamp of entity update
// Cannot be null
"updated_at": "2025-04-24T03:41:21Z", // Identity type
// Can be null
"identities_type": IdentitiesType::Model, // A list of errors associated with the entity as a result of an operation
// Cannot be null
"errors": [ Error::Index ] }