app.kimbia.activity

kimbia.app

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "A recorded training session or race (run, ride, swim, ...). Kimbia publishes ONLY public activities, projected to a privacy-safe public field set. This lexicon captures the core, interoperable activity fields. Floats are string-encoded decimals (DAG-CBOR has no float type); durations are integer seconds.",
      "key": "tid",
      "record": {
        "properties": {
          "avgSpeed": {
            "description": "Average speed in meters per second. String-encoded decimal.",
            "maxLength": 64,
            "type": "string"
          },
          "description": {
            "description": "Athlete-provided description of the activity.",
            "maxLength": 3000,
            "type": "string"
          },
          "device": {
            "description": "Name of the device that recorded the activity.",
            "maxLength": 300,
            "type": "string"
          },
          "distance": {
            "description": "Total distance in meters. String-encoded decimal, e.g. '51214.6'.",
            "maxLength": 64,
            "type": "string"
          },
          "elapsedTime": {
            "description": "Total/finish time in seconds. Published for races (the official or chip time).",
            "minimum": 0,
            "type": "integer"
          },
          "elevationGain": {
            "description": "Total elevation gain in meters. String-encoded decimal.",
            "maxLength": 64,
            "type": "string"
          },
          "movingTime": {
            "description": "Time spent in motion, in seconds.",
            "minimum": 0,
            "type": "integer"
          },
          "polyline": {
            "description": "Google encoded-polyline (precision 5) of a simplified, privacy-trimmed route for map display. Cropped by default; full for races or when the athlete opts the full track public; omitted when the map is hidden.",
            "maxLength": 20000,
            "type": "string"
          },
          "source": {
            "description": "Where the activity data was imported from.",
            "knownValues": [
              "strava",
              "manual",
              "fit-file",
              "gpx-file"
            ],
            "maxLength": 128,
            "type": "string"
          },
          "sportType": {
            "description": "The type of activity.",
            "knownValues": [
              "run",
              "ride",
              "swim",
              "walk",
              "hike",
              "other"
            ],
            "maxLength": 128,
            "type": "string"
          },
          "startedAt": {
            "description": "When the activity started. PRIVACY NOTE: by default this is the athlete's local civil day at NOON UTC (e.g. '2026-06-30T12:00:00.000Z') - noon keeps the day correct for clients that re-zone the instant and leaks no timezone, while the exact time is hidden. When the athlete opts their exact times public, it is instead the TRUE start instant in their local zone with its real offset (e.g. '2026-06-30T09:30:00.000+02:00'). Read the date portion for the activity's day; do not assume the time-of-day is meaningful unless an offset is present.",
            "format": "datetime",
            "type": "string"
          },
          "title": {
            "description": "Athlete-provided name for the activity.",
            "maxLength": 300,
            "type": "string"
          }
        },
        "required": [
          "sportType",
          "startedAt",
          "distance",
          "movingTime"
        ],
        "type": "object"
      },
      "type": "record"
    }
  },
  "description": "PROVISIONAL: activities are generic enough that they belong in a community-driven lexicon rather than an app namespace. When a community schema stabilizes, Kimbia will migrate to it and deprecate this one in its favor.",
  "id": "app.kimbia.activity",
  "lexicon": 1
}

Validate Record

Validate a record against app.kimbia.activity

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:gktrthagvfvzkotyr3n2foox
CID
bafyreidriem6vx3fpldp3fif2avp6icle3xqqimt4mlhr6xzkascsitpxm
Indexed At
2026-07-10 09:07 UTC
AT-URI
at://did:plc:gktrthagvfvzkotyr3n2foox/com.atproto.lexicon.schema/app.kimbia.activity

Version History (4 versions)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • A sports activity or outdoor adventure record logged on Treeline.

  • A recorded physical activity such as a bike ride.

  • A multi-day training block (e.g. a training camp) grouping several activities. Kimbia publishes ONLY world-facing adventures. Totals (distance/movingTime/elevationGain) sum just the member days that are themselves publi…

  • A recording of an activity. Like running, walking, lifting weights, etc. Helpful to create the rkey tid from the start time and clock id 23 so you can upsert easily.

  • A fitness workout record

Lexicon Garden

@