Introduction

This is the core API used for UBX public facing sites and systems. **If you are a third party developer wishing to utilise this api, please email `admin@12round.com` to have your IP's whitelisted, otherwise you will be rate-limited and/or blocked if there are too many requests from the same referrer / IP.**

Base URL

https://uapi.gymsystems.co/

Alternative Environments

https://uapi.gymsystems.co/ - Production API (live data)
https://uapi.stage.gymsystems.co/ - Staging API (uses live data, from test servers)
http://localhost:3100/dev/ - Local Dev

Authentication

The Universal API uses API key authentication via HTTP headers.

Include your API key in the X-API-Key header with each request.

Handle your API keys with care—they provide full access to your account! Never expose these keys in public repositories, client-side applications, or anywhere they could be compromised.

The API only accepts secure HTTPS connections. Plain HTTP requests are rejected, as are any requests missing proper authentication credentials.

Example Request

curl https://uapi.gymsystems.co/api/v1/clubs \
  -H "X-API-Key: YOUR_API_KEY"

General Contact Form

The API used for 'general contact' messages from the 12RND & UBX wesites, and other external facing services (such as the training camp etc).

Parameters

organisationId `string` (optional) The ID of the organisation you wish to get club data for - This is used to ensure that we only return clubs that are part of the same organisation. leadForwarding `string` (optional) Should we forward emails on to any lead managemt system (gymsales, gymleads etc)? Note setting to `onlyForwardIfConfigured` will forward leads on to any CRM - but not the club's primary email...

Request Body

General Contact Body

Endpoint

POST /api/v1/support/contact-submission

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/support/contact-submission \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Free Trial

Generates a 'free trial' landing page request for the specified club

Request Body

Free Trial Body

Endpoint

POST /api/v1/leads/free-trial

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/leads/free-trial \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Book a Workout

The API used for the 'book a workout' form from the 12RND & UBX wesites.

Request Body

Book a Workout body

Endpoint

POST /api/v1/leads/book-a-workout

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/leads/book-a-workout \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Training Camp Lead Submissions

Tracks submissions to register the user's interest for the Training Camp from our main websites - This information is then used to refer the user to the trainingcamp.com app/site and for clubs to opt-in the member to the training camp.

Request Body

Page Body

Endpoint

POST /api/v1/leads/training-camp

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/leads/training-camp \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Gets the meta-data for an individual club, or all clubs

This API will either return the club meta-data used to render a club page for an individual club, or all clubs in the database.

Parameters

organisationId `string` (optional) The ID of the organisation you wish to get club data for - This is used to ensure that we only return clubs that are part of the same organisation. club `string` (optional) The ID of the club you wish to get... *NB* You can omit this if you wish to return ALL clubs as a single JSON Object.

Endpoint

GET /api/v1/club/data

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/club/data \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Gets the meta-data for an individual club, or all clubs

This API will either return the club meta-data used to render a club page for an individual club, or all clubs in the database.

Parameters

organisationId `string` (optional) The ID of the organisation you wish to get club data for - This is used to ensure that we only return clubs that are part of the same organisation. club `string` (optional) The ID of the club you wish to get... *NB* You can omit this if you wish to return ALL clubs as a single JSON Object.

Endpoint

GET /api/v2/club/data

Example Request

curl -X GET https://uapi.gymsystems.co//api/v2/club/data \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Search for clubs by city and lat/lng

Perform a serch for Clubs nearby, based on your Latitude, Longitude, and Search Terms (such as a Suburb, Town, or City)

Parameters

geogroup `string` (optional) Returns a list of 'grouped' cities/states/countries that clubs reside in search `string` (optional) The term to search for - Generally this will be either a: Town, City, Suburb, or Postcode limit `string` (optional) Number of results to limit origin `string` (optional) The Latitude & Longitude to base your search from - This is critical when searching for towns/suburbs with the same name, but in different countries/cities where we have multiple clubs - I.e. `Southbank Brisbane` or `Southbank Melbourne` organisationId `string` (optional) The organisation ID to filter clubs by - This is used to ensure that we only return clubs that are part of the same organisation.

Endpoint

GET /api/v1/club/geosearch

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/club/geosearch \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Lists the pinned reviews for an individual club

This API will return the club's pinned reviews.

Parameters

club `string` (optional) The ID of the club you wish to get

Endpoint

GET /api/v2/club/reviews

Example Request

curl -X GET https://uapi.gymsystems.co//api/v2/club/reviews \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve configuration of an app set in the given club

Retrieve configuration of an app set in the given club

Parameters

clubID `string` (optional) The ID of the club you wish to get appID `string` (optional) The ID of the app you wish to get

Endpoint

GET /api/v1/club/apps/config

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/club/apps/config \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Latitude & Longitude based on the Users's IP

Returns the estimated latitude & longitude of a user's IP based on Maxmind's GeoIP Database.

Endpoint

GET /api/v1/geo/ip

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/geo/ip \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Parses an address string, and returns it as an object.

Convert the string of address to Object compose of street, city, state and postal code.

Request Body

Page Body

Endpoint

POST /api/v1/user/address-parser

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/user/address-parser \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Tracks email's subitted in our central database.

Track email's subitted to the various parts of our website _(i.e. internal API's, Mailchimp, Hubspot, etc)_ and/or third party API's in our central DynamoDB Table, allowing us to perform more detailed analysis and targeting of members from the 12RND & UBX Ecosystem.

Request Body

Page Body

Endpoint

POST /api/v1/analytics/track-email

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/analytics/track-email \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Beacons data to Graylog

Beacon's data from various front-end services to our internal Log Log Management system (Graylog).

Request Body

Page Body

Endpoint

POST /api/v1/analytics/beacon

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/analytics/beacon \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Checks a Myzone Belt ID is registered with a club

Returns a true or false response if a Myzone Belt ID is associated with the given Club ID.

Parameters

club `string` (optional) The ID of the Club to Query beltid `string` (optional) The ID of the Myzone Belt to Search

Endpoint

GET /api/v1/myzone/belt-registered

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/myzone/belt-registered \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Frequency of Visit Swipes

Retrieve a list of visit swipes by members during a certain period

Parameters

start_date `string` (optional) The period start date used to filter member visits end_date `string` (optional) The period end date used to filter member visits club `string` (optional) The specific club the member is subscribed with to filter which club the member swiped in email `string` (optional) The specific email used for the visit swipe

Endpoint

GET /api/v1/members/swipes/frequency

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/members/swipes/frequency \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Webhook for GymMaster checkin events

Webhook for GymMaster checkin events

Endpoint

POST /api/v1/webhooks/gymmaster/checkin

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/webhooks/gymmaster/checkin \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Register/Beacon Device ID

Stores the UUID, IP, and Screen ID (Device ID) of a coaching screen computer in the database allowing for association of the device via the Performance Hub.

Request Body

A JSON object should be posted to this endpoint containing information about the device, such as it's IP, and UUID

Endpoint

POST /api/v1/devices/dashkiosk/register

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/dashkiosk/register \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Sets the state of a duress button

Sets the state to either `true|false` of a duress button that is associated with a club. Note you can only change the state of a button that is registered with a club. This will not work for devices not yet setup.

Request Body

Duress Button Alarm State JSON Obect

Endpoint

POST /api/v1/devices/duress/setAlarmState

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/duress/setAlarmState \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Returns Duress Buttons associated with Club

Return an array of Duress Buttons associated with a club to scan for updates from..

Parameters

clubID `string` (required) ID of the club to query against

Endpoint

GET /api/v1/devices/duress/getDuressButtons/{clubID}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/devices/duress/getDuressButtons/{clubID} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Updates Device Metadata

Updates the device metadata for a UUID. Note no auth is required to post data to this function, so data should not contain any sensitive information.

Request Body

A JSON object should be posted to this endpoint containing information about the device, such as it's OS Info, Wifi Metrics, Etc...

Endpoint

POST /api/v1/devices/metadata/beacon

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/metadata/beacon \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Returns information about a display based on device UUID.

Gets the configuration for a device based on the devices UUID, and returns information such as which round is associated with the device and what content should be displayed.

Parameters

uuid `string` (required) UUID of device fetching config for

Endpoint

GET /api/v1/devices/displayconfig/{uuid}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/devices/displayconfig/{uuid} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Returns configuration information for a device based on UUID.

Fetches the configuration for a device from multiple tables (Coaching Screens, IoT Devices, CCTV Devices) using the device's UUID, and returns the relevant configuration details as JSON.

Parameters

uuid `string` (required) UUID of the device to fetch the configuration for

Endpoint

GET /api/v1/devices/config/{uuid}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/devices/config/{uuid} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Register a BLE Beacon Device

Saves BLE Beacon device info into our database

Request Body

BLE Beacon Device Data

Endpoint

POST /api/v1/devices/blebeacon/register

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/blebeacon/register \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Lists CCTV Devices associated with ClubID

Lists high level CCTV device details associated with a ClubID - Note only generic/high level information is returned via this API such as local IP Addresses of devices and if they are online|offline. The PerformancE Hub API must be used for advanced device details.

Parameters

clubID `string` (required) ID of the club to query against

Endpoint

GET /api/v1/devices/cctv/list-devices/{clubID}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/devices/cctv/list-devices/{clubID} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Register a CCTV Device

Saves CCTV device info into our database

Request Body

CCTV Device Data

Endpoint

POST /api/v1/devices/cctv/register

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/cctv/register \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Generates a signed URL to accept CCTV recording uploads

Generates a signed S3 URL to allow the client to directly upload a cctv recording to S3 for post-processing.

Request Body

Device metadata

Endpoint

POST /api/v1/devices/cctv/generate-upload-token

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/cctv/generate-upload-token \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Tells S3 that the multipart upload has been completed

Tells S3 that the multipart upload has been completed by the client

Request Body

Device metadata

Endpoint

POST /api/v1/devices/cctv/complete-upload

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/cctv/complete-upload \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Response

{}

Send Sonos command to club Sonos devices

Send Sonos command to club Sonos devices

Parameters

clubID `string` (required) ID of the club to query against

Endpoint

POST /api/v1/devices/audio-control/command/{clubID}

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/devices/audio-control/command/{clubID} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve club Audio Control settings

Retrieve club Audio Control settings

Parameters

clubID `string` (required) ID of the club to query against

Endpoint

GET /api/v1/devices/audio-control/config/{clubID}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/devices/audio-control/config/{clubID} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Create temporary access token

Create temporary access token

Endpoint

POST /api/v1/temporary-access/token

Example Request

curl -X POST https://uapi.gymsystems.co//api/v1/temporary-access/token \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Music Livestream Items

Retrieve Music Livestream Items

Endpoint

GET /api/v1/streams

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/streams \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Music Livestream Item Data

Retrieve Music Livestream Item Data

Parameters

id `string` (required) Unique id that identifies a stream item

Endpoint

GET /api/v1/streams/{id}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/streams/{id} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve FAQ Items

Retrieve FAQ Items

Parameters

location `string` (optional) The location on where you want the faq item to appear. ie: main website (website_main). categories `string` (optional) Categories for the faq item. status `string` (optional) The status of the item

Endpoint

GET /api/v1/faqs

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/faqs \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve FAQ Items

Retrieve FAQ Items

Parameters

category `string` (required) Categories filter

Endpoint

GET /api/v1/faqs/{category}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/faqs/{category} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Press Items

Retrieve Press Items

Parameters

location `string` (optional) The location on where you want the press item to appear. ie: main website (website_main). status `string` (optional) The status of the item

Endpoint

GET /api/v1/press

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/press \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Email Mapping

Retrieve Email Mapping

Endpoint

GET /api/v1/email-mapping

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/email-mapping \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Custom Tracking Codes

Retrieve Custom Tracking Codes

Parameters

clubID `string` (required) The club id or club location. ie: Milton

Endpoint

GET /api/v1/customtracking/{clubID}

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/customtracking/{clubID} \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve Landing Pages Items

Retrieve Landing Pages Items

Parameters

region `string` (optional) The region where a club belongs. ie: AU, NZ, US club `string` (optional) Club ID, unique identifier of the club slug `string` (optional) The last part of the URL address that serves as a unique identifier of the page

Endpoint

GET /api/v1/landing-pages

Example Request

curl -X GET https://uapi.gymsystems.co//api/v1/landing-pages \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Generates a signed URL to accept uploads on

Generates a signed S3 URL to allow the client to directly upload a file to S3 for post-processing.

Parameters

x-amz-meta-filekey `string` (optional) Optional ability to specify the UUID of the file you would like to create (otherwise the UUID will be created for you) X-API-Key `string` (optional) API Key required to access this function

Endpoint

POST /upload/v1/generate-upload-token

Example Request

curl -X POST https://uapi.gymsystems.co//upload/v1/generate-upload-token \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Checks the status of an upload's post processing

Gets the processing status of a UUID that was uploaded to the uploads S3 bucket (Via the upload API)

Parameters

uuid `string` (optional) The UUID of the upload to check X-API-Key `string` (optional) API Key required to access this function

Endpoint

GET /upload/v1/status

Example Request

curl -X GET https://uapi.gymsystems.co//upload/v1/status \
  -H "x-api-key: YOUR_API_KEY"

Response

{}

Retrieve List of Prerendered Workouts, Exercises, Mealplans, Recipes

Retrieve List of Prerendered Workouts, Exercises, Mealplans, Recipes on a particular scheduled date

Parameters

date `string` (optional) The date used to schedule the workout round `integer` (optional) The workout round used for the exercise and its associated assets id `integer` (optional) The calendar type id used to group workouts

Endpoint

GET /round-display/v1/prerenders

Example Request

curl -X GET https://uapi.gymsystems.co//round-display/v1/prerenders \
  -H "x-api-key: YOUR_API_KEY"

Response

{}