SuuntoPlus Guides

NOTE: This page is a work in progress!

The SuuntoPlus Guides tries to bring next generation guidance for athletes wrist. With SuuntoPlus Guides innovative sport apps can provide their training plans, intervals, race plans, virtual challenges, motivational messages to Suunto watches.

The SuuntoPlus Guides will enable the Suunto Partner company to push the versatile guidance features without being too much restricted of the use case by to Suunto. The content from the apps illustrated in watch can therefore help athlete using to push him/her forwards, get motivation, know what to expect. Historically this type of use cases has been possible to create by digital apps / services only by creating an app or embedded software to wearable device, its limiting many companies to build these real-time guidance as the needed investments are quire high.

Same time the sports apps are usually connected with wearable cloud APIs such as with Suunto Cloud API to fetch workout data, in order to illustrate and analyze the runs/rides/swims. Now the the SuuntoPlus Guide model is enabling sports apps to bring their own presence via simple integration to Suunto Cloud API.

SuuntoPlus Guides are compatible with Suunto 3, Suunto 5 and Suunto 9 family products.

Read more about SuuntoPlus in Suunto.com SuuntoPlus.

SuuntoPlus Guide API

The following document illustrates the key principles of using the SuuntoPlus Guide API:
SuuntoPlus Guide API

This document explains how to use the API with:

  • Prepare Suuntoplus Guide File

  • Create Suuntoplus Guide

  • Create Suuntoplus Guide

  • Additional Guide API operations- List Guides, Update Guide, Delete guide

  • Working with Mobile App

  • Working with Suunto Watch

Examples Guides

Two example guides are included:

SuuntoPlus Guides in watches

Language and localization

SuuntoPlus Guide provider is responsible to provide the content in the user language. Suunto watch does not translate text used in the guide. The watch owner however can have settings in watch that are metric or imperial. Similary he/she can have the watch language set to his/her own needs. For example: “if guide has “push hard for next mile”, watch might be showing distance in metric as his / her watch settings is set as metric as well the watch language could be in Swedish or German language”

Supported characters

  • As some devices are very limited on resources, the supported character set used in font rendering is limited

  • Minimum supported character set: !"#$%&'()*+,-./0123456789:;<=>?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz|°

  • Most fonts support wider set than the minimum, but this isn’t guaranteed

  • In case a text contains a character that the device can’t render, it is ignored or some unsupported -icon is rendered instead

Supported user interfaces

Here are illustration of user interfaces. The watch will illustrate the content, functionalities based on how many fields the guide file has. So how many fields the file has will define the display type. These UI views adapted to different watch screen sizes by Suunto. It is good practice to keep the volume of content small to keep this as clear as possible for athletes

Text only

The texts only are great to give guidance for a workout when user has time to read this. For example in strength training session, at the break of the tennis game or recovery period in interval session.

Text only -example

Coach X (the app name) shows guidance for a upcoming drill ie. for few seconds before the drill stats. “For next repeat, keep frequency high, hips high and ensure good posture!"

Text with one field

Using some text guidance with a variable gives a way to give the guidance and information related to the guidance. Informing about the pace or cadence at the same time when informing how to use this can have unique benefit. Keep the text shorter and remember the user scenario where this model fits.

Text with one field -example

Coach X (the app name) shows a race plan info text: “Aid station available at 23km mark. Drink 2 -3 dl!” with total distance value 22.12km.

Text with two fields

Using some text guidance with a variable gives a way to give the guidance and information related to the guidance. Informing about the pace or cadence at the same time when informing how to use this can have unique benefit. Keep the text shorter and remember the user scenario where this model fits.

Text with two fields -example

Coach X (the app name) shows a guidance text while doing the drill in this case when cycling “Keep the cadence above 100!” with cadence being measured in the example 101 RPM and countdown timer with 58’6 seconds left.

Three fields with optional target

The 3 field display is best when the information needs to be shown quickly such as in intense workout. The target setting is shown as own type of element which is optional.

Three fields with optional target -example

Coach X (the app name) shows three fields - measured pace 3’51 min/km, step countdown distance with 450m left and a heart rate of 165 BPM. The target target is shown as value and as gauge element. The target of 75% from HR threshold with 70% - 80% range is shown in the gauge.

Current heart rate outside of the target:

Field placement on watch screen by order in the JSON file:

Five fields with optional target

The five field display works nicely when user is able to look at the watch screen closely during the workout. This can be for example in a long hike, or when the watch is mounted to the bike handlebar.

Five fields with optional target -example

Coach X (the app name) shows five fields measured power of 329 watts, target power as static number of 340 watts, lap measured power of 321 watts, step countdown duration with 3’11 left, and current heart rate of 165 BPM.

The target is shown as value and as gauge element. The target of 75% from power threshold with 70% - 80% range is shown in the gauge.

Field placement on watch screen by order in the JSON file:

Seven fields

The 7 fields screen is data heavy view. This is useful when display can be looked at carefully. The scenario could be for example an easy indoor trainer ride where one would be interested to see several different stats and can check that data which is interesting (i.e. keeping in the screen average, realtime, max heart-rate and simultaneously average, max and realtime power).

Seven fields -example

UTMB (the title of the feature) shows seven fields - ascent climbed 3245m, descent done 1230m, 860m to finish (countdown to given distance), distance done 21.3km, total duration of 2h 23min 48 seconds.

Field placement on watch screen by order in the JSON file:

Notification

The popup is shown always for short period of time and its given to user even if the user is not in the guide screen. This is good way to alert the user to check the watch, but should be used carefully as it can become annnoying to have too many notificaitons.

Notification -example

Next hour, Rain and bit of clouds. Wind 8m/s north-west. Temp 18C.

SuuntoPlus Guides in Suunto App

The guide will show as a SuuntoPlus Guide in Suunto App. Watch owner will be able to see the list of the guides he/she has on dedicated view. The new guide will flow automatically to Suunto watch when watch is sycnhed with Suunto App. There can be several guides in the watch, but there is device dependent limit of the storage volume. The guide which have not been use, or are the oldest are automatically removed from the watch as new guides flow to the watch.

SuuntoPlus Guide data in workout FIT files

The FIT files contain information about the guide(s) used during the workout.

Here's how to check if a specific guide was used in a workout:

  1. When creating a guide, set a value to the externalId -field.

  2. Find your 'client id' from OAuth settings in user profile. See https://apizone.suunto.com/how-to-start.

  3. When parsing a FIT file, find the client id(s) from suuntoplus_plugin_owner_id -array in the session -message and take note of their indices.

  4. Use the found indices to find the external ids from suuntoplus_plugin_external_id -array in the session -message.

  5. Compare the found external ids with the one you've set in Guide externalId -field.

See more details in the FIT file description page.

Guide reference

Guide file example

Example

Guide file

The guide file expected by the API is a ZIP with the following files.

guide.json (JSON, required)

The contents of the guide. See Guide object below.

icon.png (PNG, required)

Image that can illustrate the content / brand of the content in mobile app when shown for the user.

There will be more definition/ guidelines on restrictions & possibilities with the images in SuuntoPlus guide list. (e.g. size, transparency, shape, palette, …, …)

300 x 300 px size.

Guide object example

{
"type" : "sequence",
"name" : "Example",
"description" : "Example guide description",
"richText" : "*Example* guide description",
"shortDescription" : "Example guide",
"owner" : "Example Owner",
"url" : "https://www.example.com/information-about-the-guide",
"activities" : [ 1 ],
"usage" : "workout",
"localDate" : "2023-01-02",
"externalId" : "1234567890",
"steps" : [
{
"type" : "fields",
"title" : "Example step",
"fields" : [
{
"type" : "heartRate"
},
{
"type": "text",
"value": "This example step shows your current heart rate"
}
]
}
]
}

Guide object

Description of the guide file and it's steps.

type (string, required)

Must be 'sequence'.

name (string, required)

Name of the guide shown on in app and watch.

1 - 60 characters.

description (string, required)

Text description of the guide shown in guides listing in the app. Also shown when opening guide details if richText is not defined.

1 - 256 characters.

richText (string, optional)

Description in of the guide shown when opening guide details in the app.

Markdown format.

1 - 100 000 characters.

shortDescription (string, required)

Short text description shown in guide selection list below guide names on the watch.

1 - 23 characters.

owner (string, required)

The owner is the name of the guide creator. This will be illustrated in watch/mobile.

1 - 64 characters.

url (string, required)

Link to learn more /read more.

1 - 256 characters. Must be a valid URL.

activities (int[], optional)

Which activities the guide is recommended for.

1 - 100 activities. See the possible activity ids here.

usage (string, required)

Must be "workout".

localDate (string, optional)

Defines the date when this guide is the most relevant. This could be for example the plan for a race date or an interval workout that user should do tomorrow.

The date is in user’s local time.

The format of the date must be yyyy-MM-dd.

externalId (string, optional)

If guide was synchronized from an app specific entity such as ‘planned workout’, the externalId can be used to store the ID of this source entity.

The field can be useful in synchronization logic and for debugging purposes.

If a workout was recorded using the guide, the FIT file exported from the workout will contain this externalId. See FIT file documentation for details.

1 - 64 characters.

steps (Step[], required)

Each of the Steps to be shown to the user.

1 - 1000 steps.

Step example

See FieldsStep or RepeatStep examples.

Step

A guide consists of a list of steps.

The first step in the list will be shown as soon as the workout is started by the user.

If conditions defined in the step are met, the guide may move to another step defined in the step.

There are two kinds of steps: FieldsStep and RepeatStep.

id (string, optional)

Used to identify a step. If defined for a step, then another steps may define Transitions to this step with target stepId that matches this id. See Transitions.

1 - 64 characters.

FieldStep example

{
"type" : "fields",
"title" : "Example step",
"fields" : [
{
"type" : "heartRate"
},
{
"type": "text",
"value": "This example step shows your current heart rate"
}
],
"notification": {
"title": "Example step",
"text": "Example step has started"
}
}

FieldsStep

A type of Step.

Fields type is used to show information in the watch if the user is currently in the guide display. The view on watch is shown with dynamic model where the watch screen will optimize the field values and texts.

Use less fields when the usage is with intense exercise where there is not much time to look at the watch. The Suunto watches have different display size, so usually its good goal to show max 4-5 fields at the time.

The texts can be shown with number values, the values will be prioritized over the text, so too long text will be cropped out.

Prioritize the most important value as first one in the field array. The watch will give best location / biggest size on the watch.

id (string, optional)

See Step.

type (string, required)

Must be "fields".

title (string, optional)

A short text shown usually on top of the view, single short line.

1 - 13 characters.

createManualLap (boolean, optional)

Automatically creates a lap at the start of the current step. The laps are created in same model as manual laps created by button press. The lap is marked in the workout log stored in watch and also available in workout FIT file from Suunto Cloud API.

transitions (Transition[], optional)

Transition defines a condition and a target step to execute if that condition is satisfied.

The list of transitions is processed from first to last. When a condition is satisfied that transition target step is executed.

See Transition.

fields (Field[], required)

The view on watch is shown with dynamic model where the watch screen will optimize the field values and texts.

See the Field - section for possible fields.

Use less fields when the usage is with intense exercise where there is not much time to look at the watch. The Suunto watches have different display size, so usually its good goal to show max 4 - 5 fields at the time.

The texts can be shown with number values, the values will be prioritized over the text, so too long text will be cropped out.

Prioritize the most important value as first one in the field array. The watch will give best location / biggest size on the watch.

notification (Notification, optional)

If specified, a notification with given texts is shown when the step starts. The watch will play a sound or vibrate depending on watch settings. The notification screen is shown for about 20 seconds.

RepeatStep example

{
"type": "repeat",
"times": 3,
"steps": [
{
"type": "fields",
"fields": [
{ "type": "heartRate" },
{ "type": "text", "value": "Current heart rate" }
]
}
]
}

RepeatStep

A type of Step.

It's possible to repeat a sequence by using the repeat. The sequence steps within the repeat section is run the number of times given.

id (string, optional)

See Step.

type (string, required)

Must be "repeat".

times (integer, required)

Number of times the steps specified should be repeated.

1 - 100.

steps (FieldsStep[], required)

The sequence of FieldsSteps to repeat.

Only FieldsSteps are allowed, i.e. nested repeats are not allowed.

1 - 1000 steps.

Notification example

{
"title": "Example",
"text": "Example text"
}

Notification

Specifies information show in a notification in a FieldsStep.

title (String, optional)
1 - 13 characters

text (String optional)

1 - 54 characters

Transition example

{ 
"condition": {
"type": "stepDuration,
"value": 600.0
},
"stepId": "mainWorkout"
}

Transition

Transition defines a condition and a target step to execute if that condition is satisfied.

The list of transitions is processed from first to last. When a condition is satisfied that transition target step is executed.

condition (condition, required)

A Condition that must be met for the next step to be executed.

stepId (string, optional)

Step in which to jump next if condition is satisfied.

If left out, the watch jumps to the next step in steps list.

Condition example

See the specific condition object type examples.

Condition

Conditions are used to determine the condition that jumps into another step.

There are various condition object types to choose from.

ManualLapCondition example

{ 
"type": "manualLap"
}

ManualLapCondition

A type of Condition that will be satisfied when a manual lap button is pressed during the step.

Manual laps are created by button press. There can be in future other ways to create manual laps such as touch interaction (or the software itself)

Lap button press also creates a manual lap.

type (string, required)

Must be "manualLap".

StepDistanceCondition example

{ 
"type": "stepDistance",
"value": 1000.0
}

StepDistanceCondition

A type of Condition that will be satisfied when the distance covered during the current step reaches the given target.

type (string, required)
Must be "stepDistance".

value (float, required)
The target step distance in meters.

DistanceCondition example

{ 
"type": "distance",
"value": 1000.0
}

DistanceCondition

A type of Condition that will be satisfied when the distance covered during the workout step reaches the given target.

type (string, required)

Must be "distance".

value (float, required)

The target distance in meters.

StepDurationCondition example

{ 
"type": "stepDuration",
"value": 60.0
}

StepDurationCondition

A type of Condition that will be satisfied when the duration in the current step, pauses excluded, reaches the target.

type (string, required)

Must be "stepDuration".

value (float, required)

The target duration in seconds.

DurationCondition example

{ 
"type": "duration",
"value": 60.0
}

DurationCondition

A type of Condition that will be satisfied when the duration in the whole workout, pauses excluded, reaches the target.

type(string, required)
Must be "duration".

value(float, required)
The target duration in seconds.

LocationCondition example

{ 
"type": "location",
"latitude": 12.3,
"longitude": 45.6,
"distance": 1000.0
}

LocationCondition

A type of Condition that that will be satisfied when user is near the specified coordinates.

type(string, required)
Must be "location".

latitude(float, required)
Target latitude in WGS84 decimal degrees.

longitude(float, required)
Target longitude in WGS84 decimal degrees.

distance(float, optional)
The minimum distance required during the current step for the condition to be met. Can be used to restrict a location condition matching too early in point to point type of navigation cases.

RouteCompletedCondition example

{ 
"type": "routeCompleted"
}

RouteCompletedCondition

A type of Condition that will be satisfied when user completes a Route specified in the current step.

The step must include a Route for this condition to be used.

type(string, required)
Must be "routeCompleted".

RouteExitedCondition example

{ 
"type": "routeExited"
}

RouteExitedCondition

A type of Condition that will be satisfied when user exits a Route specified in the current step. The required off-route distance varies based on route distance and other factors.

The step must include a Route for this condition to be used.

type(string, required)
Must be "routeExited".

OrCondition example

{ 
"type": "or",
"conditions": [
{
"type": "stepDuration",
"value": 60.0
},
{
"type": "manualLap"
}
]
}

OrCondition

A type of Condition that will be satisfied if any of the given sub-conditions is met.

type(string, required)
Must be "or".

conditions(Condition[], required)
List of conditions to check.

AndCondition example

{ 
"type": "and",
"conditions": [
{
"type": "stepDuration",
"value": 60.0
},
{
"type": "stepDistance",
"value": 100.0
}
]
}

AndCondition

A type of Condition that will be satisfied if all of the given sub-conditions are met.

type(string, required)
Must be "and".

conditions(Condition[], required)
List of conditions to check.

Field example

See the specific field type examples.

Field

Fields are used in FieldsSteps to determine which information to show in the watch screen.

title(string, optional)
A title to show for the field.

The title for the field should be short, when several fields are on view it would need less than 9 characters. When only one field is shown on the screen, 12 characters can be used.

TextField example

{ 
"type": "text",
"value": "Example text"
}

TextField

A Field that displays a static text.

The amount of text volume can impact on other fields shown. To be sure, use text only when showing longer texts.

type(string, required)
Must be "text".

value(string, required)
The text to display.

The text can be spitted up to 6 rows with “ \n “.

1 - 54 characters. If there are more than 40 characters, other fields cannot be fields shown at the same time.

StepDurationCountdownField example

{ 
"type": "stepDurationCountDown",
"value": 60.0,
"title": "Remaining"
}

StepDurationCountdownField

A Field that shows a countdown from given duration starting from the beginning of current step. Pauses are not counted.

type(string, required)
Must be "stepDurationCountdown".

value(float, required)
The starting duration in seconds.

title(string, optional)
See Field.

StepDistanceCountdownField example

{ 
"type": "stepDistanceCountDown",
"value": 1000.0,
"title": "Remaining"
}

StepDistanceCountdownField

A Field that shows a countdown from given distance starting from the beginning of current step. Distance covered during pauses does not count.

type(string, required)
Must be "stepDistanceCountdown".

value(float, required)
The starting distance in meters.

title(string, optional)
See Field.

HeartRateField example

{ 
"type": "heartRate",
"window": "manualLap",
"aggregate": "average",
"title": "hr"
}

HeartRateField

A Field that shows the heart rate measured from belt or from optical heart rate.

Available for all SuuntoPlus Guide supported products.

type(string, required)
Must be "heartRate".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

SpeedField example

{ 
"type": "speed",
"window": "manualLap",
"aggregate": "average",
"title": "speed"
}

SpeedField

A Field that shows the measured speed from GPS, speed sensor or acceleration.

Available for all SuuntoPlus Guide supported products. In indoor use will be calculated with acceleration. Can be used also with external sensors.

type(string, required)
Must be "speed".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

PaceField example

{ 
"type": "pace",
"window": "manualLap",
"aggregate": "average",
"title": "pace"
}

PaceField

A Field that shows the measured pace from GPS, speed sensor or acceleration.

Available for all SuuntoPlus Guide supported products. In indoor use will be calculated with acceleration. Can be used also with external sensors.

type(string, required)
Must be "pace".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

PowerField example

{ 
"type": "power",
"window": "manualLap",
"aggregate": "average",
"title": "power"
}

PowerField

A Fieldthat shows the measured power from cycling sensor or running power meter. The power value is average power from last 3s.

Available for all Suunto 5 and Suunto 9 family. Needs an external sensors running or cycling power meter.

type(string, required)
Must be "speed".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

AltitudeField example

{ 
"type": "altitude",
"window": "manualLap",
"aggregate": "average",
"title": "altitude"
}

AltitudeField

A Field that shows the measured altitude from barometer or GPS.

Available for all Suunto 5 and Suunto 9 family. Altitude is based on barometer & GPS fusion with Suunto 9 Baro and Suunto 9 peak. For other products based on GPS.

type(string, required)
Must be "speed".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

DistanceField example

{ 
"type": "distance",
"window": "manualLap",
"title": "distance"
}

DistanceField

A Field that shows the measured distance from GPS, speed sensor or acceleration.

Available for all SuuntoPlus Guide supported products. In indoor use will be calculated with acceleration. Can be used also with external sensors.

type(string, required)
Must be "distance".

window(Window, optional)
Supported values: workout, step, manualLap.

title(string, optional)
See Field.

DurationField example

{ 
"type": "duration",
"window": "manualLap",
"title": "duration"
}

DurationField

A Field that shows the measured elapsed duration.

Available for all SuuntoPlus Guide supported products.

type(string, required)
Must be "duration".

window(Window, optional)
Supported values: workout, step, manualLap.

title(string, optional)
See Field.

TemperatureField example

{ 
"type": "temperature",
"window": "manualLap",
"aggregate": "average",
"title": "temp"
}

TemperatureField

A Field that shows the measured temperature from the wrist.

Available for Suunto 9 baro and Suunto 9 peak.

type(string, required)
Must be "temperature".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

CadenceField example

{ 
"type": "cadence",
"window": "manualLap",
"aggregate": "average",
"title": "cadence"
}

CadenceField

A Field that shows the measured cadence from cycling sensor or from wrist in running.

Available for all SuuntoPlus Guide supported products. Can be used also with external sensors in running and cycling.

type(string, required)
Must be "cadence".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

StrokeRateFieldexample

{ 
"type": "strokeRate",
"window": "manualLap",
"aggregate": "average",
"title": "rate"
}

StrokeRateField

A Field that shows the measured stroke rate from watch in swimming.

Available for all SuuntoPlus Guide supported products.

type(string, required)
Must be "strokeRate".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average.

title(string, optional)
See Field.

StrokesField example

{ 
"type": "strokes",
"window": "manualLap",
"title": "strokes"
}

StrokesField

A Field that shows the swimming stroke count.

type(string, required)
Must be "strokes".

window(Window, optional)
Supported values: workout, manualLap.

title(string, optional)
See Field.

EnergyField example

{ 
"type": "energy",
"window": "manualLap",
"title": "energy"
}

EnergyField

A Fieldthat shows the measured energy calculated based on workout intensity and duration.

Available for all SuuntoPlus Guide supported products.

type(string, required)

Must be "energy".

window(Window, optional)
Supported values: workout, manualLap.

title(string, optional)
See Field.

AscentField example

{ 
"type": "ascent",
"window": "manualLap",
"title": "asc"
}

AscentField

A Field that shows the measured accumulated ascent from barometric altitude or GPS altitude.

Available for all Suunto 5 and Suunto 9 family. Altitude is based on barometer & GPS fusion with Suunto 9 Baro and Suunto 9 peak. For other products based on GPS.

type(string, required)
Must be "ascent".

window(Window, optional)
Supported values: workout, manualLap.

title(string, optional)
See Field.

DescentField example

{ 
"type": "descent",
"window": "manualLap",
"title": "desc"
}

DescentField

A Field that shows the measured accumulated descent from barometric altitude or GPS altitude.

Available for all Suunto 5 and Suunto 9 family. Altitude is based on barometer & GPS fusion with Suunto 9 Baro and Suunto 9 peak. For other products based on GPS.

type(string, required)
Must be "descent".

window(Window, optional)
Supported values: workout, manualLap.

title(string, optional)
See Field.

VerticalSpeedField example

{ 
"type": "verticalSpeed",
"window": "manualLap",
"aggregate": "average",
"title": "v.speed"
}

VerticalSpeedField

A Field that shows the measured vertical speed from barometric altitude or GPS altitude.

Available for all Suunto 5 and Suunto 9 family. Altitude is based on barometer & GPS fusion with Suunto 9 Baro and Suunto 9 peak. For other products based on GPS.

type(string, required)
Must be "verticalSpeed".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average, min, max.

title(string, optional)
See Field.

SwolfField example

{ 
"type": "swolf",
"window": "manualLap",
"aggregate": "average",
"title": "speed"
}

SwolfField

A Field that shows the measured swimming efficiency from swimming speed and stroke rate in one number.

Available for all SuuntoPlus Guide supported products.

type(string, required)
Must be "speed".

window(Window, optional)
Supported values: workout, manualLap.

aggregate(Aggregate, optional)
Supported values: average.

title(string, optional)
See Field.

AscentTimeField example

{ 
"type": "ascentTime",
"window": "manualLap",
"title": "asc. time"
}

AscentTimeField

A Field that shows the measured duration the user has been ascending.

Available for all Suunto 5 and Suunto 9 family. Altitude is based on barometer & GPS fusion with Suunto 9 Baro and Suunto 9 peak. For other products based on GPS.

type(string, required)
Must be "ascentTime".

window(Window, optional)
Supported values: workout, manualLap.

title(string, optional)
See Field.

DescentTimeField example

{ 
"type": "descentTime",
"window": "manualLap",
"title": "desc. time"
}

DescentTimeField

A Field that shows the measured duration the user has been descending.

Available for all Suunto 5 and Suunto 9 family. Altitude is based on barometer & GPS fusion with Suunto 9 Baro and Suunto 9 peak. For other products based on GPS.

type(string, required)
Must be "descentTime".

window(Window, optional)
Supported values: workout, manualLap.

title(string, optional)
See Field.

TargetHeartRateField example

A target heart rate range between 145 and 155 BPM.

{ 
"type": "targetHeartRate",
"min": 145,
"max": 155,
"title": "target HR"
}

A target heart rate of 150 BPM.

{ 
"type": "targetHeartRate",
"value": 150,
"title": "target HR"
}

TargetHeartRateField

A Fieldthat shows a target heart rate. A gauge indicating the current and target heart rate will also be shown on the watch.

type(string, required)
Must be "targetHeartRate".

value(integer, optional)
Target heart rate in BPM.

min(integer, optional)
Target heart rate range lower bound in BPM.

max(integer, optional)
Target heart rate range higher bound in BPM.

title(string, optional)
See Field.

TargetSpeedField example

A target speed range between 14.4 km/h to 15.75 km/h:

{ 
"type": "targetSpeed",
"min": 4.0,
"max": 4.3747,
"title": "tgt speed"
}

A target speed of 15 km/h:

{ 
"type": "targetSpeed",
"value": 4.166,
"title": "tgt speed"
}

TargetSpeedField

A Fieldthat shows a target speed. A gauge indicating the current and target speed will also be shown on the watch.

type(string, required)
Must be "targetSpeed".

value(float, optional)
Target speed in m/s.

min(float, optional)
Target speed range lower bound in m/s.

max(float, optional)
Target speed range higher bound in m/s.

title(string, optional)
See Field.

TargetPaceField example

A target pace range between 3min 50s / km to 4min 10s /km:

{ 
"type": "targetPace",
"min": 4.0,
"max": 4.3747,
"title": "tgt pace"
}

A target pace of 4 min/km:

{ 
"type": "targetPace",
"value": 4.166,
"title": "tgt pace"
}

TargetPaceField

A Fieldthat shows a target pace. A gauge indicating the current and target pace will also be shown on the watch.

type(string, required)
Must be "targetPace".

value(float, optional)
Target pace in m/s.

min(float, optional)
Target pace range lower bound in m/s.

max(float, optional)
Target pace range higher bound in m/s.

title(string, optional)
See Field.

TargetPowerField example

A target power range between 250 and 260 watts:

{ 
"type": "targetPower",
"min": 250.0,
"max": 270.0,
"title": "tgt power"
}

A target power of 260 watts:

{ 
"type": "targetPower",
"value": 260,
"title": "tgt power"
}

TargetPowerField

A Fieldthat shows a target power. A gauge indicating the current and target power will also be shown on the watch.

type(string, required)
Must be "targetPower".

value(float, optional)
Target power in watts.

min(float, optional)
Target power range lower bound in watts.

max(float, optional)
Target power range higher bound in watts.

title(string, optional)
See Field.

TargetCadenceField example

A target cadence range between 84 - 96 RPM:

{
"type": "targetCadence",
"min": 1.4,
"max": 1.6,
"title": "tgt cadence"
}

A target cadence of 90 RPM:

{
"type": "targetCadence",
"value": 1.5,
"title": "tgt cadence"
}

TargetCadenceField

A Fieldthat shows a target cadence. A gauge indicating the current and target cadence will also be shown on the watch.

type(string, required)
Must be "targetCadence".

value(float, optional)
Target cadence in Hertz.

min(float, optional)
Target cadence range lower bound in Hertz.

max(float, optional)
Target cadence range higher bound in Hertz.

title(string, optional)
See Field.

Route example

{ 
"points": [
{
"latitude": 60.269202518,
"longitude": 24.974703497,
"distance": 0.0
},
{
"latitude": 60.269832254,
"longitude": 24.970329452,
"distance": 500.0
},
{
"latitude": 60.272473098,
"longitude": 24.979559116,
"distance": 1000.0
}
],
"distance": 1000.0,
"width": 50.0
}

Route

A route that a user is expected to follow during a step.

Including a route allows detecting when user completes or goes off-route and jumping into different guide step. See RouteCompletedCondition and RouteExitedCondition.

points(RoutePoint[], required)
The route points user should follow during a step.

See RoutePoint.

distance(Float, required)
The total distance of the route in meters.

width(Float, required)
The width of the route in meters where user is considered on-route.

Note that this number is consider as a hint and not necessarily obeyed in the watch. For example, longer and more complex routes may result in much bigger width used.

RoutePoint example

{ 
"latitude": 60.269832254,
"longitude": 24.970329452,
"distance": 123.4
}

RoutePoint

A point on a Route.

latitude(Float, required)
WGS 84 latitude between -90 and 90.

longitude(Float, required)
WGS 84 longitude between -180 and 180.

distance(Float, optional)
Distance on the route at this point in meters.