app.fitsky.workout

thatsit.dev

Documentation

A fitness workout record

main record

A fitness workout record

Record Key tid Timestamp-based ID

Properties

createdAt string datetime Required

An RFC 3339 formatted timestamp.

duration integer Required

Duration in seconds

minimum: 0
endedAt string datetime Optional

An RFC 3339 formatted timestamp.

milestones array of ref #milestone Optional

Progress milestones for linear workouts

notes string Optional

No description available.

maxLength: 2048 bytes
ogImage blob Optional

Open Graph preview image for social sharing

maxSize: 1.0 MB
planUri string at-uri Optional

Reference to the workoutPlan used, if any

startedAt string datetime Required

An RFC 3339 formatted timestamp.

status string Optional

Whether the workout is in progress or finished. Omitted for legacy workouts (treat as completed).

maxLength: 64 bytes
Known values: active, completed
title string Required

No description available.

maxLength: 256 bytes
type string Required

No description available.

maxLength: 64 bytes
Known values: running, cycling, swimming, walking, weightlifting, bodyweight, yoga, hiit, sports, stretching, hiking
View raw schema
{
  "key": "tid",
  "type": "record",
  "record": {
    "type": "object",
    "required": [
      "type",
      "title",
      "startedAt",
      "duration",
      "createdAt"
    ],
    "properties": {
      "type": {
        "type": "string",
        "maxLength": 64,
        "knownValues": [
          "running",
          "cycling",
          "swimming",
          "walking",
          "weightlifting",
          "bodyweight",
          "yoga",
          "hiit",
          "sports",
          "stretching",
          "hiking"
        ]
      },
      "notes": {
        "type": "string",
        "maxLength": 2048
      },
      "title": {
        "type": "string",
        "maxLength": 256
      },
      "status": {
        "type": "string",
        "maxLength": 64,
        "description": "Whether the workout is in progress or finished. Omitted for legacy workouts (treat as completed).",
        "knownValues": [
          "active",
          "completed"
        ]
      },
      "details": {
        "refs": [
          "#cardioDetails",
          "#strengthDetails",
          "#flexibilityDetails",
          "#hiitSportsDetails"
        ],
        "type": "union"
      },
      "endedAt": {
        "type": "string",
        "format": "datetime"
      },
      "ogImage": {
        "type": "blob",
        "accept": [
          "image/png",
          "image/jpeg",
          "image/webp"
        ],
        "maxSize": 1000000,
        "description": "Open Graph preview image for social sharing"
      },
      "planUri": {
        "type": "string",
        "format": "at-uri",
        "description": "Reference to the workoutPlan used, if any"
      },
      "duration": {
        "type": "integer",
        "minimum": 0,
        "description": "Duration in seconds"
      },
      "createdAt": {
        "type": "string",
        "format": "datetime"
      },
      "startedAt": {
        "type": "string",
        "format": "datetime"
      },
      "milestones": {
        "type": "array",
        "items": {
          "ref": "#milestone",
          "type": "ref"
        },
        "description": "Progress milestones for linear workouts"
      },
      "visibility": {
        "ref": "#visibilitySettings",
        "type": "ref"
      }
    }
  },
  "description": "A fitness workout record"
}
cardioDetails object

No description available.

Properties

calories integer Optional

No description available.

distanceMeters integer Optional

Distance in meters

minimum: 0
elevationGainMeters integer Optional

Elevation gain in meters

minimum: 0
heartRateSamples array of ref#heartRateSample Optional

No description available.

paceSecondsPerKm integer Optional

Pace in seconds per kilometer

minimum: 0
routePoints array of ref#routePoint Optional

GPS route points recorded during the workout

steps integer Optional

No description available.

View raw schema
{
  "type": "object",
  "properties": {
    "steps": {
      "type": "integer"
    },
    "calories": {
      "type": "integer"
    },
    "heartRate": {
      "ref": "#heartRateData",
      "type": "ref"
    },
    "cardioZones": {
      "ref": "#cardioZoneData",
      "type": "ref"
    },
    "routePoints": {
      "type": "array",
      "items": {
        "ref": "#routePoint",
        "type": "ref"
      },
      "description": "GPS route points recorded during the workout"
    },
    "distanceMeters": {
      "type": "integer",
      "minimum": 0,
      "description": "Distance in meters"
    },
    "heartRateSamples": {
      "type": "array",
      "items": {
        "ref": "#heartRateSample",
        "type": "ref"
      }
    },
    "paceSecondsPerKm": {
      "type": "integer",
      "minimum": 0,
      "description": "Pace in seconds per kilometer"
    },
    "elevationGainMeters": {
      "type": "integer",
      "minimum": 0,
      "description": "Elevation gain in meters"
    }
  }
}
cardioZoneData object

Time in seconds spent in each heart rate zone

Properties

zone1Rest integer Optional

No description available.

zone2Easy integer Optional

No description available.

zone3Aerobic integer Optional

No description available.

zone4Threshold integer Optional

No description available.

zone5Max integer Optional

No description available.

View raw schema
{
  "type": "object",
  "properties": {
    "zone5Max": {
      "type": "integer"
    },
    "zone1Rest": {
      "type": "integer"
    },
    "zone2Easy": {
      "type": "integer"
    },
    "zone3Aerobic": {
      "type": "integer"
    },
    "zone4Threshold": {
      "type": "integer"
    }
  },
  "description": "Time in seconds spent in each heart rate zone"
}
exercise object

No description available.

Properties

name string Required

No description available.

maxLength: 128 bytes
sets array of ref#exerciseSet Required

No description available.

View raw schema
{
  "type": "object",
  "required": [
    "name",
    "sets"
  ],
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 128
    },
    "sets": {
      "type": "array",
      "items": {
        "ref": "#exerciseSet",
        "type": "ref"
      }
    }
  }
}
exerciseSet object

No description available.

Properties

reps integer Optional

No description available.

weightGrams integer Optional

Weight in grams

minimum: 0
View raw schema
{
  "type": "object",
  "properties": {
    "reps": {
      "type": "integer"
    },
    "weightGrams": {
      "type": "integer",
      "minimum": 0,
      "description": "Weight in grams"
    }
  }
}
flexibilityDetails object

No description available.

Properties

calories integer Optional

No description available.

heartRateSamples array of ref#heartRateSample Optional

No description available.

intensity string Optional

No description available.

maxLength: 64 bytes
Known values: light, moderate, intense
movements integer Optional

No description available.

steps integer Optional

No description available.

View raw schema
{
  "type": "object",
  "properties": {
    "steps": {
      "type": "integer"
    },
    "calories": {
      "type": "integer"
    },
    "heartRate": {
      "ref": "#heartRateData",
      "type": "ref"
    },
    "intensity": {
      "type": "string",
      "maxLength": 64,
      "knownValues": [
        "light",
        "moderate",
        "intense"
      ]
    },
    "movements": {
      "type": "integer"
    },
    "cardioZones": {
      "ref": "#cardioZoneData",
      "type": "ref"
    },
    "heartRateSamples": {
      "type": "array",
      "items": {
        "ref": "#heartRateSample",
        "type": "ref"
      }
    }
  }
}
heartRateData object

No description available.

Properties

avg integer Optional

No description available.

max integer Optional

No description available.

min integer Optional

No description available.

resting integer Optional

No description available.

View raw schema
{
  "type": "object",
  "properties": {
    "avg": {
      "type": "integer"
    },
    "max": {
      "type": "integer"
    },
    "min": {
      "type": "integer"
    },
    "resting": {
      "type": "integer"
    }
  }
}
heartRateSample object

No description available.

Properties

bpm integer Required

No description available.

timestamp string datetime Required

An RFC 3339 formatted timestamp.

View raw schema
{
  "type": "object",
  "required": [
    "timestamp",
    "bpm"
  ],
  "properties": {
    "bpm": {
      "type": "integer"
    },
    "timestamp": {
      "type": "string",
      "format": "datetime"
    }
  }
}
hiitSportsDetails object

No description available.

Properties

calories integer Optional

No description available.

distanceMeters integer Optional

Distance in meters

minimum: 0
heartRateSamples array of ref#heartRateSample Optional

No description available.

intensity string Optional

No description available.

maxLength: 64 bytes
Known values: light, moderate, intense
paceSecondsPerKm integer Optional

Pace in seconds per kilometer

minimum: 0
rounds integer Optional

No description available.

routePoints array of ref#routePoint Optional

GPS route points recorded during the workout

sport string Optional

No description available.

maxLength: 128 bytes
steps integer Optional

No description available.

View raw schema
{
  "type": "object",
  "properties": {
    "sport": {
      "type": "string",
      "maxLength": 128
    },
    "steps": {
      "type": "integer"
    },
    "rounds": {
      "type": "integer"
    },
    "calories": {
      "type": "integer"
    },
    "heartRate": {
      "ref": "#heartRateData",
      "type": "ref"
    },
    "intensity": {
      "type": "string",
      "maxLength": 64,
      "knownValues": [
        "light",
        "moderate",
        "intense"
      ]
    },
    "cardioZones": {
      "ref": "#cardioZoneData",
      "type": "ref"
    },
    "routePoints": {
      "type": "array",
      "items": {
        "ref": "#routePoint",
        "type": "ref"
      },
      "description": "GPS route points recorded during the workout"
    },
    "distanceMeters": {
      "type": "integer",
      "minimum": 0,
      "description": "Distance in meters"
    },
    "heartRateSamples": {
      "type": "array",
      "items": {
        "ref": "#heartRateSample",
        "type": "ref"
      }
    },
    "paceSecondsPerKm": {
      "type": "integer",
      "minimum": 0,
      "description": "Pace in seconds per kilometer"
    }
  }
}
milestone object

No description available.

Properties

note string Optional

No description available.

maxLength: 512 bytes
timestamp string datetime Required

An RFC 3339 formatted timestamp.

type string Required

No description available.

maxLength: 64 bytes
Known values: distance, lap, note
valueMeters integer Optional

Milestone value in meters

minimum: 0
View raw schema
{
  "type": "object",
  "required": [
    "type",
    "timestamp"
  ],
  "properties": {
    "note": {
      "type": "string",
      "maxLength": 512
    },
    "type": {
      "type": "string",
      "maxLength": 64,
      "knownValues": [
        "distance",
        "lap",
        "note"
      ]
    },
    "timestamp": {
      "type": "string",
      "format": "datetime"
    },
    "valueMeters": {
      "type": "integer",
      "minimum": 0,
      "description": "Milestone value in meters"
    }
  }
}
routePoint object

No description available.

Properties

latE6 integer Required

Latitude in microdegrees (degrees * 1,000,000)

lngE6 integer Required

Longitude in microdegrees (degrees * 1,000,000)

timestamp string datetime Required

An RFC 3339 formatted timestamp.

View raw schema
{
  "type": "object",
  "required": [
    "latE6",
    "lngE6",
    "timestamp"
  ],
  "properties": {
    "latE6": {
      "type": "integer",
      "description": "Latitude in microdegrees (degrees * 1,000,000)"
    },
    "lngE6": {
      "type": "integer",
      "description": "Longitude in microdegrees (degrees * 1,000,000)"
    },
    "timestamp": {
      "type": "string",
      "format": "datetime"
    }
  }
}
strengthDetails object

No description available.

Properties

calories integer Optional

No description available.

exercises array of ref#exercise Optional

No description available.

heartRateSamples array of ref#heartRateSample Optional

No description available.

steps integer Optional

No description available.

View raw schema
{
  "type": "object",
  "properties": {
    "steps": {
      "type": "integer"
    },
    "calories": {
      "type": "integer"
    },
    "exercises": {
      "type": "array",
      "items": {
        "ref": "#exercise",
        "type": "ref"
      }
    },
    "heartRate": {
      "ref": "#heartRateData",
      "type": "ref"
    },
    "cardioZones": {
      "ref": "#cardioZoneData",
      "type": "ref"
    },
    "heartRateSamples": {
      "type": "array",
      "items": {
        "ref": "#heartRateSample",
        "type": "ref"
      }
    }
  }
}
visibilitySettings object

Controls which fields are visible to other users in the Fitsky UI. Note: ATProto repos are public — this is UI-level privacy only.

Properties

calories string Optional

No description available.

maxLength: 64 bytes
Known values: public, private
cardioZones string Optional

No description available.

maxLength: 64 bytes
Known values: public, private
details string Optional

No description available.

maxLength: 64 bytes
Known values: public, private
heartRate string Optional

No description available.

maxLength: 64 bytes
Known values: public, private
notes string Optional

No description available.

maxLength: 64 bytes
Known values: public, private
steps string Optional

No description available.

maxLength: 64 bytes
Known values: public, private
View raw schema
{
  "type": "object",
  "properties": {
    "notes": {
      "type": "string",
      "default": "public",
      "maxLength": 64,
      "knownValues": [
        "public",
        "private"
      ]
    },
    "steps": {
      "type": "string",
      "default": "public",
      "maxLength": 64,
      "knownValues": [
        "public",
        "private"
      ]
    },
    "details": {
      "type": "string",
      "default": "public",
      "maxLength": 64,
      "knownValues": [
        "public",
        "private"
      ]
    },
    "calories": {
      "type": "string",
      "default": "public",
      "maxLength": 64,
      "knownValues": [
        "public",
        "private"
      ]
    },
    "heartRate": {
      "type": "string",
      "default": "private",
      "maxLength": 64,
      "knownValues": [
        "public",
        "private"
      ]
    },
    "cardioZones": {
      "type": "string",
      "default": "private",
      "maxLength": 64,
      "knownValues": [
        "public",
        "private"
      ]
    }
  },
  "description": "Controls which fields are visible to other users in the Fitsky UI. Note: ATProto repos are public — this is UI-level privacy only."
}

Lexicon Garden

@