Extensions

Workout Tracker exposes a small ActivityPub JSON-LD extension for workout outbox entries.

Namespace

Terms

aepy:workoutFitFile

aepy:workoutLocation

aepy:workoutSport

aepy:workoutDuration

Key metrics

The following compact terms are available as numeric metrics on workout Note objects:

Context fragment

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
    {
      "aepy": "http://joinaepyornis.orh/ns#",
      "workoutFitFile": "aepy:workoutFitFile",
      "workoutLocation": "aepy:workoutLocation",
      "workoutSport": "aepy:workoutSport",
      "workoutDuration": "aepy:workoutDuration",
      "workoutPauseDuration": "aepy:workoutPauseDuration",
      "workoutDistance": "aepy:workoutDistance",
      "workoutDistance2D": "aepy:workoutDistance2D",
      "workoutElevationGain": "aepy:workoutElevationGain",
      "workoutElevationLoss": "aepy:workoutElevationLoss",
      "workoutAverageSpeed": "aepy:workoutAverageSpeed",
      "workoutAverageSpeedMoving": "aepy:workoutAverageSpeedMoving",
      "workoutMaxSpeed": "aepy:workoutMaxSpeed",
      "workoutAverageCadence": "aepy:workoutAverageCadence",
      "workoutMaxCadence": "aepy:workoutMaxCadence",
      "workoutAverageHeartRate": "aepy:workoutAverageHeartRate",
      "workoutMaxHeartRate": "aepy:workoutMaxHeartRate",
      "workoutAveragePower": "aepy:workoutAveragePower",
      "workoutMaxPower": "aepy:workoutMaxPower",
      "workoutRepetitions": "aepy:workoutRepetitions",
      "workoutWeight": "aepy:workoutWeight"
    }
  ]
}

Example object fragment

{
  "type": "Note",
  "workoutFitFile": "https://example.org/ap/users/alice/outbox/uuid/fit",
  "workoutLocation": "Brussels, Belgium",
  "workoutSport": "running",
  "workoutDuration": 3600,
  "workoutDistance": 10420,
  "workoutAverageSpeed": 2.89
}