Free Data and Analysis. For Rowers. By Rowers.

 

 

 

 

 

 

Resources for developers

On this page, a work in progress, I will collect useful information for developers of rowing data apps and hardware.

I presume you have an app (smartphone app, dedicated hardware, web site) where your users (customers) generate, collect or store their rowing related workout data. You can now offer your users easy ways to get their data on this site.

There are three ways to allow your users to get data to Rowsandall.com.

File based export from your app

Enable export of TCX, FIT or CSV formatted files from your app. The users upload the file to Rowsandall.com.

  • Advantages
    • User sees immediate results
  • Disadvantages
    • It is a multi-step process: Download from your app, store, upload.
Email from your app

Similar as above, generate TCX, FIT or CSV formatted files and email them to workouts@rowsandall.com directly from your app. The From: field should be the email address of the registered user.

  • Advantages
    • It's a simple process, which can be automated.
  • Disadvantages
    • It may take up to five minutes for the workout to show up on the site.
Using the REST API

We are building a REST API which will allow you to post and receive stroke data from the site directly.

The REST API is a work in progress. We are open to improvement suggestions (provided they don't break existing apps). Please send email to info@rowsandall.com with questions and/or suggestions. We will get back to you as soon as possible.

  • Advantages
    • Once it is set up, this is a one-click operation.
    • You can read a user's workout data from the site and use them in your app.
    • This is not limited to workout data. You could make a full mobile version of our site.
  • Disadvantages
    • The API is not stable and not fully tested yet.
    • You need to register your app with us. We can revoke your permissions if you misuse them.
    • The user user must grant permissions to your app.
    • You need to manage authorization tokens.

Quick Links

Accepted file formats

All files adhering to the standards TCX and FIT formats will be parsed.

However, some rowing related parameters are not supported by TCX and FIT. Therefore, we are supporting the CSV format that is documented in the following link.

Using this standard will guarantee that your user's data are accepted without complaints.

API related documentation
Registering an app

We have disabled the self service app link for security reasons. We will replace it with a secure self service app link soon. If you need to register an app, please send email to info@rowsandall.com

Authentication

Standard Oauth2 authentication. Get authorization code by pointing your user to the authorization URL. Exchange authorization code for an access token. When access token expires, use the refresh token to refresh it.

The redirect URI for user authentication has to be https. Developers of iOS or Android apps should contact me directly if this doesn't work for them. I can add exceptions.

The POST call must have content-type: x-www-form-urlencoded. I set it this way to support the handy testing utility mentioned belower. However, I really would like to support application/json but with the current framework I cannot support both at the same time. Expect changes. Write to me if you want to be notified of changes.

  • Authorization URL: https://rowsandall.com/rowers/o/authorize
  • Access Token request: https://rowsandall.com/rowers/o/token/
  • Access Token refresh: https://rowsandall.com/rowers/o/token/
  • Handy utility for testing: http://django-oauth-toolkit.herokuapp.com/consumer/
API documentation

Once you have a registered app, you have gone through the authorization and have successfully obtained an access token, you can use it to place POST, GET and PUT requests.

The workout summary data and the stroke data are obtained and sent separately.

You can only post stroke data to an existing workout with workout number {id}. If the workout already has stroke data, you will get a duplication error. This functionality will be expanded in the future to enable updating stroke data. Stroke data for workout {id} are posted to:

  • https://rowsandall.com/rowers/api/workouts/{id}/strokedata

The payload is application/json data and looks as follows:

    {
  "distance": [5,12,19,27,35,43,51,59,67,75,82,90,100],
  "power": [112,221,511,673,744,754,754,749,729,729,726,709,707],
  "hr": [132,131,131,132,133,136,139,142,145,147,150,152,153],
  "pace": [145800,116400,88100,80400,77700,77400,77400,77600,78300,78300,78400,79000,79100],
  "spm": [11,41,56,59,55,48,48,48,48,48,48,48,49],
  "time": [0,2200,4599,7000,9599,12000,14400,16799,19400,21799,24200,26599,2900],
}
    

Mandatory data fields are:

  • time: Time (milliseconds since workout start)
  • distance: Distance (meters)
  • pace: Pace (milliseconds per 500m)
  • spm Stroke rate (strokes per minute)

Optional data fiels are:

  • power: Power (Watt)
  • drivelength: Drive length (meters)
  • dragfactor: Drag factor
  • drivetime: Drive time (ms)
  • strokerecoverytime: Recovery time (ms)
  • averagedriveforce: Average handle force (lbs)
  • peakdriveforce: Peak handle force (lbs)
  • lapidx: Lap identifier
  • hr: Heart rate (beats per minute)

Consistency checks will be done and the stroke data will be refused if the mandatory data fields don't pass the checks. All mandatory data fields must have the same number of records. If an optional data field fails a test, its values are silently replaced by zeros.

Cookies disclaimer

I agree Our site saves small pieces of text information (cookies) on your device in order to deliver better content and for statistical purposes. You can disable the usage of cookies by changing the settings of your browser. By browsing our website without changing the browser settings you grant us permission to store that information on your device.