Introduction

The HUR SmartTouch AUX-API allows developers to interact with Hur SmartTouch data in their own applications, products and services. It is intended for selected companies directly cooperating with AB HUR Oy in order to incorporate gym data in third-party applications. Process of registering application to enable use of API is strictly controlled by HUR.

Prerequisites

In order to get a connection to AUX-API, developer must obtain from HUR following credentials:

  • Special user account (username and password) in HUR SmartTouch deployed server
  • Client ID and Client Secret (for third-party application) associated with this user account

Creating Client ID and Client Secret

  • Go to https://<site>/o/applications
  • Click "New Application"-button
  • Fill the form:
    • choose "confidential" in client type
    • choose "resource owner password-based" in authorization grant type image

Access to API

Aux-API is accessible upon OAuth2 authentication. To access individual resources request must provide access token in html header. Simple registration/token/request flow is required to obtain access token.

The following roles are presented in the system:

  • Resource Owner – is special user in HUR SmartTouch System allowed access to data provided by Aux-API
  • Resource server – is the Aux-API
  • Client – application requesting data from resource server in behave of user using created tokens.

Documentation of the Aux-API can be found in /docs/ page of HUR SmartTouch server.

API Flow Example

Below is the overview of how to get resources from HUR SmartTouch server.

As mentioned before HUR supplies: username, password and additional ClientID plus Client secret for this user.

Access Token

In order to get access token for particular scope one should send http get request in the form:

curl -X POST -d "grant_type=password&username=XXXX&password=XXXX&scope=XXXX" -u'clientid:clientsecret' https://<site>/o/token/

Example request

Parameter Value
site example.hursmarttouch.com
user example
password mypassword
client_id 1234
client_secret 9999
scope read write users
curl -k -X POST –d "grant_type=password&username=example&password=mypassword&scope=read write users" -u '1234:9999' https://example.hursmarttouch.com/o/token/

Example response

{

    "access_token":"nrlLtqJU6AE6SozTHYyMwdEB9k2nA0N",
    "token_type":"Bearer",
    "expires_in":36000,
    "refresh_token":"ovxtUXpAvEwvDHM4iAlSJv8VySCubw",
    "scope":"read write users"
}

Available scopes

Scope Description
read read scope
write write scope
users access to users
memberships access to memberships
trainings access to trainings, training activities
visits access to visits, visit activities
facilities access to facilities data, membership types
equipment access to equipment in facilities
activities access to available activities

Getting all users

Example request

Parameter Value
site example.hursmarttouch.com
curl -H "Authorization: Bearer iLWWgStzSOHF47OU7ZpHa8ZPicP0N5" https://example.hursmarttouch.com/aux-api/users/

Example response

{
  "count":378,
  "next":"https://dev.hur.fi/aux-api/users/?page=2",
  "previous":null,
  "results":[
    {
      "id":-1,
      "username":"AnonymousUser",
      "first_name":"",
      "last_name":"",
      "is_staff":false,
      "is_active":false,
      "last_login":null,
      "date_joined":"2016-02-02T08:38:37Z",
      "email":"",
      "membership":null,
      "profile":null,
      "physical_attributes":null,
      "contact":null,
      "cards":[

      ]
    },
    {
      "id":1,
      "username":"admin",
      "first_name":"Hur",
      "last_name":"Admin",
      "is_staff":true,
      "is_active":true,
      "last_login":"2020-03-25T08:42:12.665921Z",
      "date_joined":"2014-02-05T13:09:07Z",
      "email":"admin@wasari.com",
      "membership":{
        "id":394,
        "start_date":"2015-06-12",
        "end_date":null,
        "on_hold":false,
        "start_time":null,
        "end_time":null,
        "visit_count":null,
        "visits_left":null,
        "price":null,
        "payment_period":null,
        "last_payment_date":null,
        "facility":1,
        "membership_type":1,
        "personal_trainer":null
      },
      "profile":{
        "id":73,
        "mugshot":"",
        "privacy":"registered",
        "language":"en",
        "welcome_name":"admin",
        "gender":"M",
        "date_of_birth":"1970-01-01",
        "custom_id":null,
        "comments":null,
        "tags":[

        ]
      },
      "physical_attributes":{
        "id":171,
        "updated":"2015-11-03T08:12:40.301092Z",
        "height":null,
        "weight":null,
        "max_hr":null,
        "rest_hr":null,
        "body_fat":null,
        "waist":null,
        "hip":null,
        "blood_pressure_dia":null,
        "blood_pressure_sys":null
      },
      "contact":null,
      "cards":[

      ]
    }
  ]
}

Getting single user

User ID known

Example request

Parameter Value
site example.hursmarttouch.com
user_id 40
curl -H "Authorization: Bearer iLWWgStzSOHF47OU7ZpHa8ZPicP0N5" https://example.hursmarttouch.com/aux-api/users/40/

Example response

{
  "id":40,
  "username":"taneli_p",
  "first_name":"Taneli",
  "last_name":"Peltoniemi",
  "is_staff":true,
  "is_active":true,
  "last_login":"2020-02-20T10:24:56.679174Z",
  "date_joined":"2014-04-16T06:56:09Z",
  "email":"taneli.peltoniemi@hur.fi",
  "membership":{
    "id":24,
    "start_date":"2018-01-01",
    "end_date":"2026-04-01",
    "on_hold":false,
    "start_time":"06:00:00",
    "end_time":"23:59:00",
    "visit_count":25,
    "visits_left":241,
    "price":"100.00",
    "payment_period":3,
    "last_payment_date":null,
    "facility":1,
    "membership_type":1,
    "personal_trainer":null
  },
  "profile":{
    "id":24,
    "mugshot":"",
    "privacy":"registered",
    "language":"en",
    "welcome_name":"Taneli",
    "gender":"M",
    "date_of_birth":"1991-12-21",
    "custom_id":"",
    "comments":null,
    "tags":[
      "community client",
      "rehabilitation"
    ]
  },
  "physical_attributes":{
    "id":47,
    "updated":"2019-07-02T11:33:57.994056Z",
    "height":1840,
    "weight":99640,
    "max_hr":190,
    "rest_hr":32,
    "body_fat":"26.90",
    "waist":100,
    "hip":15,
    "blood_pressure_dia":122,
    "blood_pressure_sys":69
  },
  "contact":{
    "id":5,
    "updated":"2017-11-23T11:45:57.707805Z",
    "street_address":"Patamäentie 4",
    "post_code":"67100",
    "city":"Kokkola",
    "state":"",
    "country":"Finland",
    "phone":"",
    "email":""
  },
  "cards":[
    {
      "id":1212,
      "rfid_number":"ed45854f",
      "card_type":0,
      "expiry_date":null
    },
    {
      "id":1389,
      "rfid_number":"4a99bccd",
      "card_type":0,
      "expiry_date":null
    },
    {
      "id":1393,
      "rfid_number":"0dde6a07",
      "card_type":0,
      "expiry_date":null
    },
    {
      "id":1290,
      "rfid_number":"73eea0ff",
      "card_type":0,
      "expiry_date":null
    },
    {
      "id":1307,
      "rfid_number":"62f39d02",
      "card_type":0,
      "expiry_date":null
    }
  ]
}

RFID tag known

Example request

Parameter Value
site example.hursmarttouch.com
rfid_tag ed45854f
curl -H "Authorization: Bearer iLWWgStzSOHF47OU7ZpHa8ZPicP0N5" https://example.hursmarttouch.com/aux-api/users/?card__rfid_number=ed45854f

Example response

{
  "count":1,
  "next":null,
  "previous":null,
  "results":[
    {
      "id":40,
      "username":"taneli_p",
      "first_name":"Taneli",
      "last_name":"Peltoniemi",
      "is_staff":true,
      "is_active":true,
      "last_login":"2020-02-20T10:24:56.679174Z",
      "date_joined":"2014-04-16T06:56:09Z",
      "email":"taneli.peltoniemi@hur.fi",
      "membership":{
        "id":24,
        "start_date":"2018-01-01",
        "end_date":"2026-04-01",
        "on_hold":false,
        "start_time":"06:00:00",
        "end_time":"23:59:00",
        "visit_count":25,
        "visits_left":241,
        "price":"100.00",
        "payment_period":3,
        "last_payment_date":null,
        "facility":1,
        "membership_type":1,
        "personal_trainer":null
      },
      "profile":{
        "id":24,
        "mugshot":"",
        "privacy":"registered",
        "language":"en",
        "welcome_name":"Taneli",
        "gender":"M",
        "date_of_birth":"1991-12-21",
        "custom_id":"",
        "comments":null,
        "tags":[
          "community client",
          "rehabilitation"
        ]
      },
      "physical_attributes":{
        "id":47,
        "updated":"2019-07-02T11:33:57.994056Z",
        "height":1840,
        "weight":99640,
        "max_hr":190,
        "rest_hr":32,
        "body_fat":"26.90",
        "waist":100,
        "hip":15,
        "blood_pressure_dia":122,
        "blood_pressure_sys":69
      },
      "contact":{
        "id":5,
        "updated":"2017-11-23T11:45:57.707805Z",
        "street_address":"Patamäentie 4",
        "post_code":"67100",
        "city":"Kokkola",
        "state":"",
        "country":"Finland",
        "phone":"",
        "email":""
      },
      "cards":[
        {
          "id":1212,
          "rfid_number":"ed45854f",
          "card_type":0,
          "expiry_date":null
        },
        {
          "id":1389,
          "rfid_number":"4a99bccd",
          "card_type":0,
          "expiry_date":null
        },
        {
          "id":1393,
          "rfid_number":"0dde6a07",
          "card_type":0,
          "expiry_date":null
        },
        {
          "id":1290,
          "rfid_number":"73eea0ff",
          "card_type":0,
          "expiry_date":null
        },
        {
          "id":1307,
          "rfid_number":"62f39d02",
          "card_type":0,
          "expiry_date":null
        }
      ]
    }
  ]
}

Getting visits

First you will have to acquire the access token for visits endpoint. Check the Access Token section for more information.

Example request

Parameter Value
site example.hursmarttouch.com
user 40
curl -H "Authorization: Bearer ys2e3KwLvGTKVheuOHSZj8yJvHcCYn" https://example.hursmarttouch.com/aux-api/visits/?user__id=40

Example response


{
  "count":597,
  "next":"https://dev.hur.fi/aux-api/visits/?page=2&user__id=40",
  "previous":null,
  "results":[
    {
      "id":463,
      "user":40,
      "visit_type":1,
      "facility":1,
      "training_program":148,
      "training_program_name":"2sets",
      "login":"2014-09-24T08:00:10Z",
      "logout":"2014-09-24T08:29:11Z",
      "comments":"Created by FCM2",
      "activities":[
        {
          "id":2614,
          "activity":37,
          "activity_name":"Twist Left",
          "visit":463,
          "training_activity":717,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:00:15Z",
          "end_time":"2014-09-24T05:01:17Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":8000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":8000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "sets":[
              {
                "load":8000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":8000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2615,
          "activity":39,
          "activity_name":"Twist Right",
          "visit":463,
          "training_activity":718,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:01:44Z",
          "end_time":"2014-09-24T05:02:49Z",
          "status":"O",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":8000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":8000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "sets":[
              {
                "load":8000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":8000,
                "reps":9,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2608,
          "activity":4,
          "activity_name":"Abdomen",
          "visit":463,
          "training_activity":711,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:06:27Z",
          "end_time":"2014-09-24T05:07:37Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":19000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":19000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "actuators":[
              {
                "position":1338,
                "channel":0
              },
              {
                "position":0,
                "channel":1
              }
            ],
            "sets":[
              {
                "load":19000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":19000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2609,
          "activity":5,
          "activity_name":"Back",
          "visit":463,
          "training_activity":712,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:10:45Z",
          "end_time":"2014-09-24T05:12:16Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":15000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":15000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "actuators":[
              {
                "position":564,
                "channel":0
              },
              {
                "position":0,
                "channel":1
              }
            ],
            "sets":[
              {
                "load":15000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":15000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2610,
          "activity":9,
          "activity_name":"Leg Extension",
          "visit":463,
          "training_activity":713,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:19:22Z",
          "end_time":"2014-09-24T05:20:28Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":10000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":10000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "actuators":[
              {
                "position":1023,
                "channel":0
              },
              {
                "position":370,
                "channel":1
              },
              {
                "position":358,
                "channel":2
              }
            ],
            "sets":[
              {
                "load":10000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":10000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2611,
          "activity":8,
          "activity_name":"Leg Curl",
          "visit":463,
          "training_activity":714,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:20:57Z",
          "end_time":"2014-09-24T05:22:11Z",
          "status":"O",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":12000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":12000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "actuators":[
              {
                "position":1023,
                "channel":0
              },
              {
                "position":295,
                "channel":1
              },
              {
                "position":288,
                "channel":2
              }
            ],
            "sets":[
              {
                "load":12000,
                "reps":9,
                "max_hr":0,
                "update":500
              },
              {
                "load":12000,
                "reps":11,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2606,
          "activity":30,
          "activity_name":"Push Up",
          "visit":463,
          "training_activity":709,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:23:07Z",
          "end_time":"2014-09-24T05:24:21Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":10000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":10000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "actuators":[
              {
                "position":1384,
                "channel":0
              }
            ],
            "sets":[
              {
                "load":10000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":10000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2607,
          "activity":31,
          "activity_name":"Pull Down",
          "visit":463,
          "training_activity":710,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:24:50Z",
          "end_time":"2014-09-24T05:25:53Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":15000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":15000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "actuators":[
              {
                "position":1384,
                "channel":0
              }
            ],
            "sets":[
              {
                "load":15000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":15000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2612,
          "activity":36,
          "activity_name":"Abduction",
          "visit":463,
          "training_activity":715,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:27:08Z",
          "end_time":"2014-09-24T05:28:01Z",
          "status":"O",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":8000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":8000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "sets":[
              {
                "load":8000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":8000,
                "reps":10,
                "max_hr":0,
                "update":500
              }
            ]
          }
        },
        {
          "id":2613,
          "activity":35,
          "activity_name":"Adduction",
          "visit":463,
          "training_activity":716,
          "scheduled_activity":null,
          "start_time":"2014-09-24T05:28:15Z",
          "end_time":"2014-09-24T05:29:10Z",
          "status":"F",
          "supervised_by":null,
          "instruction":null,
          "settings":{
            "units":"kg",
            "prec":1,
            "rest":12,
            "sets":[
              {
                "HR":120,
                "load":10000,
                "reps":8,
                "update":500
              },
              {
                "HR":120,
                "load":10000,
                "reps":8,
                "update":500
              }
            ]
          },
          "comments":"",
          "supervisor_comments":"",
          "user_comments":"",
          "results":{
            "sets":[
              {
                "load":10000,
                "reps":8,
                "max_hr":0,
                "update":500
              },
              {
                "load":10000,
                "reps":8,
                "max_hr":0,
                "update":500
              }
            ]
          }
        }
      ]
    }
    ...
  ]
}

AUX-API nodes

The following resource nodes are present:

aux-api/users
aux-api/trainings
aux-api/trainings_activities
aux-api/visits
aux-api/visits_activities
aux-api/facilities
aux-api/equipment
aux-api/memberships
aux-api/membership_types
aux-api/available_activities

Filters

Requests for listing (GET-request) can be filtered.

Example

Parameter Value
site example.hursmarttouch.com
curl -H "Authorization: Bearer iLWWgStzSOHF47OU7ZpHa8ZPicP0N5" https://example.hursmarttouch.com/aux-api/users/?last_name__contains=ski

This request will return all the users that have "ski" in their last name

Users filters

{
  "last_name":[
    "exact",
    "contains"
  ],
  "first_name":[
    "exact",
    "contains"
  ],
  "username":[
    "exact"
  ],
  "is_staff":[
    "exact"
  ],
  "is_active":[
    "exact"
  ],
  "email":[
    "exact",
    "contains"
  ],
  "date_joined":[
    "lt",
    "gt"
  ],
  "last_login":[
    "lt",
    "gt"
  ],
  "profile__date_of_birth":[
    "lt",
    "gt"
  ],
  "profile__gender":[
    "exact"
  ],
  "profile__language":[
    "exact"
  ],
  "profile__welcome_name":[
    "exact",
    "contains"
  ],
  "profile__custom_id":[
    "exact",
    "contains"
  ],
  "profile__comments":[
    "exact",
    "contains"
  ],
  "physical_attributes__updated":[
    "lt",
    "gt"
  ],
  "physical_attributes__height":[
    "exact",
    "lt",
    "gt"
  ],
  "physical_attributes__weight":[
    "exact",
    "lt",
    "gt"
  ],
  "physical_attributes__max_hr":[
    "exact",
    "lt",
    "gt"
  ],
  "physical_attributes__rest_hr":[
    "exact",
    "lt",
    "gt"
  ],
  "physical_attributes__blood_pressure_dia":[
    "exact",
    "lt",
    "gt"
  ],
  "physical_attributes__blood_pressure_sys":[
    "exact",
    "lt",
    "gt"
  ],
  "membership__facility":[
    "exact"
  ],
  "membership__membership_type":[
    "exact"
  ],
  "membership__start_date":[
    "lt",
    "gt"
  ],
  "membership__end_date":[
    "lt",
    "gt"
  ],
  "membership__on_hold":[
    "exact"
  ],
  "membership__personal_trainer":[
    "exact"
  ],
  "membership__start_time":[
    "exact",
    "lt",
    "gt"
  ],
  "membership__end_time":[
    "exact",
    "lt",
    "gt"
  ],
  "membership__visit_count":[
    "exact",
    "lt",
    "gt"
  ],
  "membership__visits_left":[
    "exact",
    "lt",
    "gt"
  ],
  "contact__updated":[
    "lt",
    "gt"
  ],
  "contact__street_address":[
    "exact",
    "contains"
  ],
  "contact__post_code":[
    "exact"
  ],
  "contact__city":[
    "exact",
    "contains"
  ],
  "contact__state":[
    "exact",
    "contains"
  ],
  "contact__country":[
    "exact",
    "contains"
  ],
  "contact__phone":[
    "exact",
    "contains"
  ],
  "contact__email":[
    "exact",
    "contains"
  ]
}

Trainings Activities filters

{
  "training_program__id":[
    "exact"
  ],
  "training_program__user__id":[
    "exact"
  ],
  "training_program__name":[
    "exact",
    "contains"
  ],
  "training_program__facility__id":[
    "exact"
  ],
  "activity__id":[
    "exact"
  ],
  "activity__active":[
    "exact"
  ],
  "activity__name":[
    "exact",
    "contains"
  ],
  "activity__use_in_training":[
    "exact"
  ],
  "activity__all_activity__id":[
    "exact"
  ],
  "activity__all_activity__name":[
    "exact",
    "contains"
  ],
  "activity__all_activity__activity_type__id":[
    "exact"
  ],
  "activity__all_activity__activity_group__id":[
    "exact"
  ],
  "activity__all_activity__machine__id":[
    "exact"
  ],
  "activity__all_activity__machine__machine_id":[
    "exact"
  ]
}

Visits filters

{
  "user__id":[
    "exact"
  ],
  "user__username":[
    "exact"
  ],
  "user__is_staff":[
    "exact"
  ],
  "user__is_active":[
    "exact"
  ],
  "visit_type":[
    "exact"
  ],
  "facility__id":[
    "exact"
  ],
  "facility__slug":[
    "exact"
  ],
  "training_program__id":[
    "exact"
  ],
  "training_program__name":[
    "exact"
  ],
  "login":[
    "exact",
    "lt",
    "gt"
  ],
  "logout":[
    "exact",
    "lt",
    "gt"
  ],
  "comments":[
    "icontains"
  ]
}

Visits Activities filters

{
  "visit__id":[
    "exact"
  ],
  "visit__user__id":[
    "exact"
  ],
  "activity__id":[
    "exact"
  ],
  "activity__active":[
    "exact"
  ],
  "activity__name":[
    "exact",
    "contains"
  ],
  "activity__use_in_training":[
    "exact"
  ],
  "activity__all_activity__id":[
    "exact"
  ],
  "activity__all_activity__name":[
    "exact",
    "contains"
  ],
  "activity__all_activity__activity_type__id":[
    "exact"
  ],
  "activity__all_activity__activity_group__id":[
    "exact"
  ],
  "activity__all_activity__machine__id":[
    "exact"
  ],
  "activity__all_activity__machine__machine_id":[
    "exact"
  ],
  "supervised_by":[
    "exact"
  ],
  "start_time":[
    "exact",
    "lt",
    "gt"
  ],
  "end_time":[
    "exact",
    "lt",
    "gt"
  ],
  "status":[
    "exact"
  ]
}

Activity types

ID Name Description
1 Hur Machine Exercise HUR machine exercise
2 Monark aerobic exercise Currently not in use.
3 Custom - instructions only Training activity with no settings parameter. Optionaly including instruction or comments. Used by HUR FreeTrainer.
4 Scifit Machine Exercise Exercise using the scifit machines.
5 H/P Cosmos Treadmill Exercise Currently not in use.
6 Hur Machine Exercise - one repetition max estimation Currently not in use.
7 Custom - time based Currently not in use.
8 Custom - countable reps Currently not in use.
9 Custom - load (gram), countable reps Currently not in use.
10 Group Class Class with instructor.
12 Hur Machine Isometric Test Isometric test on HUR machine
13 Emotion machine exercise Basic Emotion activity
14 Emotion Treadmill Exercise Exercise for Emotion Treadmill
15 Emotion Upper Body Emotion Upper Body Activity
16 Emotion Cross Trainer Emotion Cross Trainer activity
17 Emotion Recumbent Bike Emotion Recumbent Bike activity
18 Balance Maze Maze test for iBalance platform.
19 Balance Chase Chase test for iBalance platform.
20 Balance Static Static test for iBalance platform.
21 Balance Tennis Tennis test for iBalance test.
22 Balance Weight Weight test for iBalance platform.
23 Balance Stepper Stepper test for iBalance platform.
24 Romberg Test Standard Romberg protocol made with stable and unstable platform.
25 LOS Test Test your limits of stability
26 Scifit Cooldown Cooldown exercise for Scifit equipment.
27 Scifit Manual Manual exercise for Scifit equipment.
28 Scifit Hill Profile Hill Profile exercise for Scifit equipment.
29 Scifit Random Hill Random Hill exercise for Scifit equipment.
30 Scifit Heart Rate Heart Rate exercise for Scifit equipment.
31 Scifit Constant Work Constant Work exercise for Scifit equipment.
32 Scifit ISO Strength ISO Strength exercise for Scifit equipment.
33 Treadmill Cooldown Cooldown exercise for Scifit treadmill equipment.
34 Treadmill Manual Manual exercise for Scifit treadmill equipment.
35 Treadmill Heart Rate Heart Rate exercise for Scifit treadmill equipment.
36 Treadmill Grade Program Grade Program exercise for Scifit treadmill equipment.
37 Treadmill Speed Program Speed Program exercise for Scifit treadmill equipment.
38 Tanita Measurement Tanita measurement
39 Hur Machine Power Exercise Currently not in use.
40 Visit Questionnaire Questionnaire done during the visit
41 Profy 65+ Profy 65+ balance testing protocol
42 PALSO Palso 081
43 Weight Distribution Weight Distribution
44 GT Training GT Training
45 Scifit Custom Custom exercise for scifit equipment. Uses sets.
46 Treadmill Custom Custom exercise for scifit treadmill equipment. Uses sets.
47 Emotion Stepper Emotion stepper exercise.
48 Work Currently not in use.
49 Lode Ergometer Custom Custom exercise for the Lode ergometer equipment. Uses sets.
50 Lode Treadmill Custom Custom exercise for Lode treadmill equipment. Uses sets.
51 CyberCycle Exercise Activities supported by CyberCycler
52 Astrand Test Astrand test on a bike is used to estimate VO2 max from submaximal exercise levels
53 Cogni Training Cognibike Training
54 Cogni Isokinetic Cognibike Isokinetic
55 Cogni Pattern Cognibike Pattern
56 Custom Custom activity with varied parameters.
57 Lode Recumbent Custom Custom exercise for the Lode recumbent equipment. Uses sets.

HUR activity settings and results

Settings

  • Units: measurement units used during training (kg or lb)
  • Actuators: motor position for each seat and/or lever arm motor for the user
    • Position: motor position
    • Channel: motor identification
  • Prec: Precision of load
  • Rest: rest time between sets. Only used if there’s more than one set.
  • Sets: settings for each set in training program
    • HR: target heart rate
    • Load: target load in grams
    • Reps: repetition
    • Update: how much target load is updated, in grams, if user overperforms the activity

Example data

{
  "actuators":[
    {
      "position":383,
      "channel":0
    },
    {
      "position":383,
      "channel":1
    },
    {
      "position":357,
      "channel":2
    }
  ],
  "prec":1,
  "rest":60,
  "target_pow":197,
  "sets":[
    {
      "HR":100,
      "load":10000,
      "reps":3,
      "update":"300"
    },
    {
      "HR":100,
      "load":10000,
      "reps":3,
      "update":"300"
    }
  ],
  "units":"kg"
}

Results

  • Reps_data_pos_unit: unit for lever arm position, “deg”=degrees
  • Sets: for each set data for each repetition
    • Load: load used, in grams
    • Reps: repetitions done
    • Reps_data: Data for each repetition in set. If machine has two lever arms, there is repetition values for both left and right sides separately (“right” and “left”)
      • max_vel: maximum velocity in repetition
        • pow: Power (watt) when max velocity occurred
        • vel: Max velocity value (m/s)
        • pos: Position (mm) of piston in arm cylinder
        • ts: Time stamp (ms)
      • peak_pow: Peak power in repetition
        • pow: Peak Power value (watt)
        • vel: Velocity value (m/s)
        • pos: Position (mm) of piston in arm cylinder
        • spress: System pressure value in (mbar)
        • ts: Time stamp (ms)
      • max_spress: Max system pneumatic pressure measured in repetition
        • vel: Velocity value (m/s)
        • pos: Position (mm) of piston in arm cylinder
        • spress: System pressure value in (mbar)
        • ts: Time stamp (ms)
      • rep_start: Start of the repetition
        • load: Set Load (gram) for when reps started
        • pos: Position (mm) when repetition started
        • spress: System pressure value in (mbar)
        • ts: Time stamp (ms)
      • work: Work performed during the repetition (J)
      • max_pos: Max arm position in repetition
        • pos: Position (mm) of piston in arm cylinder
        • ts: Time stamp (ms)
      • rep_end: End of the repetition
        • pos: Position (mm) of piston in arm cylinder
        • ts: Time stamp (ms)
      • avg_hr: average heart rate
      • max_hr: maximum heart rate
      • end_hr: heart rate at the end

Example data

{
  "reps_data_pos_unit":"deg",
  "sets":[
    {
      "load":10000.0,
      "reps":3.0,
      "update":"0",
      "reps_data":{
        "right":[
          {
            "max_vel":{
              "pow":-110.73,
              "vel":0.333,
              "pos":192.649,
              "ts":1568715479568.0
            },
            "peak_pow":{
              "pow":138.32,
              "vel":0.214,
              "pos":151.576,
              "spress":3.633,
              "ts":1568715478902.0
            },
            "max_spress":{
              "vel":-0.152,
              "pos":104.48,
              "spress":3.732,
              "ts":1568715479081.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":190.655,
              "spress":3.497,
              "ts":1568715478060.0
            },
            "work":0.0,
            "max_pos":{
              "pos":97.674,
              "ts":1568715479148.0
            },
            "rep_end":{
              "pos":213.962,
              "ts":1568715479712.0
            }
          },
          {
            "max_vel":{
              "pow":-151.07,
              "vel":0.339,
              "pos":154.56,
              "ts":1568715480983.0
            },
            "peak_pow":{
              "pow":111.48,
              "vel":0.233,
              "pos":134.246,
              "spress":3.571,
              "ts":1568715480500.0
            },
            "max_spress":{
              "vel":-0.078,
              "pos":193.67,
              "spress":3.707,
              "ts":1568715479926.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":210.75,
              "spress":3.658,
              "ts":1568715479734.0
            },
            "work":0.0,
            "max_pos":{
              "pos":96.438,
              "ts":1568715480702.0
            },
            "rep_end":{
              "pos":212.313,
              "ts":1568715481285.0
            }
          },
          {
            "max_vel":{
              "pow":112.21,
              "vel":0.311,
              "pos":126.328,
              "ts":1568715482061.0
            },
            "peak_pow":{
              "pow":129.06,
              "vel":-0.24,
              "pos":145.613,
              "spress":3.497,
              "ts":1568715481992.0
            },
            "max_spress":{
              "vel":0.062,
              "pos":206.46,
              "spress":3.67,
              "ts":1568715481387.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":209.26,
              "spress":3.633,
              "ts":1568715481308.0
            },
            "work":0.0,
            "max_pos":{
              "pos":94.432,
              "ts":1568715482241.0
            },
            "rep_end":{
              "pos":206.46,
              "ts":1568715482910.0
            }
          }
        ],
        "left":[
          {
            "max_vel":{
              "pow":133.56,
              "vel":0.292,
              "pos":144.865,
              "ts":1568715479635.0
            },
            "peak_pow":{
              "pow":133.56,
              "vel":0.272,
              "pos":151.576,
              "spress":3.584,
              "ts":1568715479612.0
            },
            "max_spress":{
              "vel":-0.0,
              "pos":199.069,
              "spress":3.732,
              "ts":1568715479081.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":201.398,
              "spress":3.707,
              "ts":1568715479197.0
            },
            "work":0.0,
            "max_pos":{
              "pos":98.877,
              "ts":1568715479881.0
            },
            "rep_end":{
              "pos":219.636,
              "ts":1568715480438.0
            }
          },
          {
            "max_vel":{
              "pow":125.05,
              "vel":0.378,
              "pos":119.635,
              "ts":1568715481297.0
            },
            "peak_pow":{
              "pow":155.06,
              "vel":0.339,
              "pos":142.617,
              "spress":3.571,
              "ts":1568715481230.0
            },
            "max_spress":{
              "vel":0.119,
              "pos":206.46,
              "spress":3.683,
              "ts":1568715480657.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":217.593,
              "spress":3.547,
              "ts":1568715480460.0
            },
            "work":0.0,
            "max_pos":{
              "pos":94.432,
              "ts":1568715481410.0
            },
            "rep_end":{
              "pos":217.593,
              "ts":1568715482043.0
            }
          },
          {
            "max_vel":{
              "pow":109.6,
              "vel":0.322,
              "pos":123.864,
              "ts":1568715482971.0
            },
            "peak_pow":{
              "pow":136.62,
              "vel":0.292,
              "pos":146.359,
              "spress":3.534,
              "ts":1568715482898.0
            },
            "max_spress":{
              "vel":0.253,
              "pos":110.543,
              "spress":3.658,
              "ts":1568715483040.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":217.593,
              "spress":3.571,
              "ts":1568715482067.0
            },
            "work":0.0,
            "max_pos":{
              "pos":94.432,
              "ts":1568715483112.0
            },
            "rep_end":{
              "pos":201.398,
              "ts":1568715483823.0
            }
          }
        ]
      },
      "avg_hr":0.0,
      "max_hr":0.0,
      "end_hr":0.0
    },
    {
      "load":10000.0,
      "reps":4.0,
      "update":"0",
      "reps_data":{
        "right":[
          {
            "max_vel":{
              "pow":-112.48,
              "vel":0.384,
              "pos":132.692,
              "ts":1568715498367.0
            },
            "peak_pow":{
              "pow":165.47,
              "vel":0.0,
              "pos":150.831,
              "spress":3.658,
              "ts":1568715497950.0
            },
            "max_spress":{
              "vel":-0.085,
              "pos":97.674,
              "spress":3.769,
              "ts":1568715498155.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":191.644,
              "spress":3.51,
              "ts":1568715497752.0
            },
            "work":0.0,
            "max_pos":{
              "pos":96.438,
              "ts":1568715498178.0
            },
            "rep_end":{
              "pos":209.26,
              "ts":1568715498800.0
            }
          },
          {
            "max_vel":{
              "pow":-133.96,
              "vel":0.298,
              "pos":154.56,
              "ts":1568715499975.0
            },
            "peak_pow":{
              "pow":117.97,
              "vel":-0.199,
              "pos":133.471,
              "spress":3.658,
              "ts":1568715499489.0
            },
            "max_spress":{
              "vel":0.051,
              "pos":200.219,
              "spress":3.745,
              "ts":1568715498970.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":207.833,
              "spress":3.707,
              "ts":1568715498822.0
            },
            "work":0.0,
            "max_pos":{
              "pos":100.049,
              "ts":1568715499691.0
            },
            "rep_end":{
              "pos":207.833,
              "ts":1568715500320.0
            }
          },
          {
            "max_vel":{
              "pow":90.88,
              "vel":0.281,
              "pos":114.303,
              "ts":1568715501124.0
            },
            "peak_pow":{
              "pow":119.55,
              "vel":-0.22,
              "pos":131.911,
              "spress":3.646,
              "ts":1568715501057.0
            },
            "max_spress":{
              "vel":0.14,
              "pos":105.533,
              "spress":3.732,
              "ts":1568715501351.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":207.833,
              "spress":3.72,
              "ts":1568715500342.0
            },
            "work":0.0,
            "max_pos":{
              "pos":94.432,
              "ts":1568715501260.0
            },
            "rep_end":{
              "pos":207.833,
              "ts":1568715502000.0
            }
          },
          {
            "max_vel":{
              "pow":-93.56,
              "vel":0.411,
              "pos":209.26,
              "ts":1568715505224.0
            },
            "peak_pow":{
              "pow":43.49,
              "vel":0.122,
              "pos":182.31,
              "spress":3.448,
              "ts":1568715504835.0
            },
            "max_spress":{
              "vel":-0.0,
              "pos":206.46,
              "spress":3.707,
              "ts":1568715502061.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":193.67,
              "spress":3.411,
              "ts":1568715504690.0
            },
            "work":0.0,
            "max_pos":{
              "pos":174.677,
              "ts":1568715504969.0
            },
            "rep_end":{
              "pos":224.472,
              "ts":1568715505301.0
            }
          }
        ],
        "left":[
          {
            "max_vel":{
              "pow":109.72,
              "vel":0.267,
              "pos":133.471,
              "ts":1568715498767.0
            },
            "peak_pow":{
              "pow":119.88,
              "vel":0.239,
              "pos":139.601,
              "spress":3.658,
              "ts":1568715498745.0
            },
            "max_spress":{
              "vel":-0.048,
              "pos":196.844,
              "spress":3.769,
              "ts":1568715498155.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":197.945,
              "spress":3.745,
              "ts":1568715498206.0
            },
            "work":0.0,
            "max_pos":{
              "pos":103.406,
              "ts":1568715498970.0
            },
            "rep_end":{
              "pos":209.26,
              "ts":1568715499517.0
            }
          },
          {
            "max_vel":{
              "pow":113.83,
              "vel":0.261,
              "pos":140.358,
              "ts":1568715500199.0
            },
            "peak_pow":{
              "pow":117.81,
              "vel":0.237,
              "pos":146.359,
              "spress":3.621,
              "ts":1568715500176.0
            },
            "max_spress":{
              "vel":0.0,
              "pos":203.852,
              "spress":3.745,
              "ts":1568715499624.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":206.46,
              "spress":3.695,
              "ts":1568715499539.0
            },
            "work":0.0,
            "max_pos":{
              "pos":98.877,
              "ts":1568715500445.0
            },
            "rep_end":{
              "pos":209.26,
              "ts":1568715501085.0
            }
          },
          {
            "max_vel":{
              "pow":131.95,
              "vel":0.298,
              "pos":147.851,
              "ts":1568715501767.0
            },
            "peak_pow":{
              "pow":145.11,
              "vel":0.261,
              "pos":155.307,
              "spress":3.658,
              "ts":1568715501740.0
            },
            "max_spress":{
              "vel":0.047,
              "pos":196.844,
              "spress":3.732,
              "ts":1568715501351.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":207.833,
              "spress":3.683,
              "ts":1568715501107.0
            },
            "work":0.0,
            "max_pos":{
              "pos":100.049,
              "ts":1568715501988.0
            },
            "rep_end":{
              "pos":210.75,
              "ts":1568715502638.0
            }
          },
          {
            "max_vel":{
              "pow":8.48,
              "vel":0.187,
              "pos":206.46,
              "ts":1568715502678.0
            },
            "peak_pow":{
              "pow":40.51,
              "vel":0.097,
              "pos":194.708,
              "spress":3.46,
              "ts":1568715502814.0
            },
            "max_spress":{
              "vel":0.038,
              "pos":185.909,
              "spress":3.485,
              "ts":1568715502948.0
            },
            "rep_start":{
              "load":10000.0,
              "pos":206.46,
              "spress":3.423,
              "ts":1568715502661.0
            },
            "work":0.0,
            "max_pos":{
              "pos":184.995,
              "ts":1568715502970.0
            },
            "rep_end":{
              "pos":207.833,
              "ts":1568715503537.0
            }
          }
        ]
      },
      "avg_hr":0.0,
      "max_hr":0.0,
      "end_hr":0.0
    }
  ]
}