social.sthenos.alpha.workout

sthenos.social

{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "exerciseEntry": {
      "description": "One exercise performed within a workout, with the sets performed for it. Either 'exercise' (a backing record reference) or 'name' (an inline label) should be present; entries missing both should be ignored by consumers.",
      "properties": {
        "exercise": {
          "description": "Strong reference (uri + cid) to the social.sthenos.alpha.exercise record performed. Optional: omit for an inline/custom exercise with no backing record, in which case 'name' should be set.",
          "ref": "com.atproto.repo.strongRef",
          "type": "ref"
        },
        "name": {
          "description": "Display name for an inline/custom exercise when 'exercise' is omitted, or an optional override label when it is present.",
          "maxGraphemes": 64,
          "maxLength": 640,
          "type": "string"
        },
        "sets": {
          "description": "Sets performed for this exercise, in order. Array order is the canonical order; no separate sort field is needed because records are replaced wholesale on edit.",
          "items": {
            "ref": "#set",
            "type": "ref"
          },
          "maxLength": 100,
          "type": "array"
        }
      },
      "required": [
        "sets"
      ],
      "type": "object"
    },
    "main": {
      "description": "A completed training session: an ordered list of exercises, each with the sets actually performed.",
      "key": "tid",
      "record": {
        "properties": {
          "completedAt": {
            "description": "ISO 8601 timestamp marking when the session was completed.",
            "format": "datetime",
            "type": "string"
          },
          "createdAt": {
            "description": "ISO 8601 timestamp of record creation.",
            "format": "datetime",
            "type": "string"
          },
          "exercises": {
            "description": "Ordered exercises performed in this session. Array order is the canonical order; no separate sort field is needed because records are replaced wholesale on edit.",
            "items": {
              "ref": "#exerciseEntry",
              "type": "ref"
            },
            "maxLength": 100,
            "type": "array"
          },
          "name": {
            "description": "Optional display name for the session, e.g. \"Push Day A\".",
            "maxGraphemes": 64,
            "maxLength": 640,
            "type": "string"
          },
          "notes": {
            "description": "Optional freeform notes about the session.",
            "maxGraphemes": 1000,
            "maxLength": 10000,
            "type": "string"
          },
          "startedAt": {
            "description": "ISO 8601 timestamp marking when the session was started.",
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "startedAt",
          "completedAt",
          "createdAt",
          "exercises"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "set": {
      "description": "A single performed set.",
      "properties": {
        "reps": {
          "description": "Number of repetitions performed.",
          "maximum": 1000,
          "minimum": 0,
          "type": "integer"
        },
        "weight": {
          "description": "The weight lifted in this set. Optional; omit for bodyweight or unweighted sets.",
          "ref": "#weight",
          "type": "ref"
        }
      },
      "required": [
        "reps"
      ],
      "type": "object"
    },
    "weight": {
      "description": "A weight value paired with its unit.",
      "properties": {
        "unit": {
          "description": "Unit the value is expressed in.",
          "knownValues": [
            "kg",
            "lb"
          ],
          "type": "string"
        },
        "value": {
          "description": "Decimal weight expressed as a string to preserve exact user-entered precision (e.g. \"22.5\").",
          "maxLength": 12,
          "minLength": 1,
          "type": "string"
        }
      },
      "required": [
        "value",
        "unit"
      ],
      "type": "object"
    }
  },
  "id": "social.sthenos.alpha.workout",
  "lexicon": 1
}

Validate Record

Validate a record against social.sthenos.alpha.workout

Validation Options
Treat any remaining unresolved references as valid

Metadata

DID
did:plc:we3onmbrfloqk6xmmtkojddy
CID
bafyreid7tzztivfnlly5dn55zi7bkm3ezmc6sidfb4h4wnuu3fnnxypxta
Indexed At
2026-10-18 20:27 UTC
AT-URI
at://did:plc:we3onmbrfloqk6xmmtkojddy/com.atproto.lexicon.schema/social.sthenos.alpha.workout

Similar Lexicons

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

Lexicon Garden

@