Skip to content

PersonalRecords Schema

PersonalRecords represents a standalone export of an athlete's personal records (PRs) and one-rep maxes (1RMs), independent of workout logs.

Interactive Explorer

Loading schema...

Use Cases

  • Migrate between apps: Export PRs from one app, import to another
  • Backup personal bests: Archive PRs separately from full workout history
  • Share achievements: Export PRs to share with coach or community
  • Strength standards comparison: Use with bodyweight to calculate percentile rankings
  • Program prescription: Apps can use current 1RMs to calculate training percentages

Top-Level Properties

FieldTypeRequiredDescription
exportedAtstring (date-time)YesWhen this PR snapshot was exported
recordsExerciseRecord[]YesArray of exercise PR records
athleteAthleteNoAthlete info for normalization (optional)
normalizedScoresNormalizedScoresNoPre-calculated Wilks/DOTS for powerlifts

ExerciseRecord

Personal records for a single exercise.

FieldTypeRequiredDescription
exerciseExerciseYesWhich exercise (name, equipment, category)
repMaxesRepMax[]NoRep max records (1RM, 3RM, 5RM, etc.)
estimated1RMEstimated1RMNoCalculated e1RM with formula metadata
volumePRVolumePRNoBest session volume for this exercise
durationPRDurationPRNoBest time for timed exercises

RepMax

A rep max record (e.g., heaviest weight for 1 rep, 3 reps, 5 reps).

FieldTypeRequiredDescription
repsinteger (1-15)YesRep count
weightnumberYesWeight lifted
unit"kg" | "lb"YesWeight unit
datestring (date)YesWhen PR was achieved
type"actual" | "estimated"NoWhether tested or calculated
bodyweightKgnumberNoBodyweight at time of PR
workoutIdstringNoReference to source workout
rpenumber (0-10)NoRPE if recorded
notesstringNoContext (competition, gym PR, etc.)

Estimated1RM

A calculated one-rep max estimate based on submaximal performance.

FieldTypeRequiredDescription
valuenumberYesEstimated 1RM value
unit"kg" | "lb"YesWeight unit
formulastringYesFormula used (see below)
basedOnRepsintegerYesRep count used for calculation
basedOnWeightnumberYesWeight used for calculation
datestring (date)NoWhen the source set was performed

Supported Formulas

FormulaCalculation
brzyckiweight / (1.0278 – 0.0278 × reps)
epleyweight × (1 + 0.0333 × reps)
lombardiweight × reps^0.10
mayhew100 × weight / (52.2 + 41.9 × e^(-0.055 × reps))
oconnerweight × (1 + 0.025 × reps)
wathan100 × weight / (48.8 + 53.8 × e^(-0.075 × reps))

VolumePR

Best total volume achieved for an exercise in a single session.

FieldTypeRequiredDescription
valuenumberYesTotal volume (sets × reps × weight)
unit"kg" | "lb"YesWeight unit
datestring (date)YesWhen achieved
notesstringNoContext (e.g., "10x5 at 170kg")

DurationPR

Best time for timed exercises (planks, carries, etc.).

FieldTypeRequiredDescription
secondsintegerYesDuration in seconds
datestring (date)YesWhen achieved
weightnumberNoWeight used (for weighted exercises)
unit"kg" | "lb"ConditionalRequired if weight is present
notesstringNoAdditional context

Athlete

Optional athlete information for calculating normalized scores.

FieldTypeRequiredDescription
bodyweightKgnumberNoBodyweight in kilograms
sex"male" | "female" | "mx"NoFor coefficient calculation

Privacy Note

The schema intentionally excludes PII (name, birth year). Apps that need identity should store it separately.

NormalizedScores

Pre-calculated bodyweight-normalized scores for powerlifts.

FieldTypeDescription
squatLiftScoresScores for squat
benchLiftScoresScores for bench press
deadliftLiftScoresScores for deadlift
totalLiftScoresScores for powerlifting total

LiftScores

FieldTypeDescription
wilksnumberClassic powerlifting coefficient
dotsnumberModern replacement for Wilks
ipfGlnumberIPF Goodlift points
glossbrennernumberAlternative coefficient

Example

json
{
  "exportedAt": "2024-01-15T10:00:00Z",
  "athlete": {
    "bodyweightKg": 82.5,
    "sex": "male"
  },
  "records": [
    {
      "exercise": {
        "name": "Barbell Back Squat",
        "equipment": "barbell"
      },
      "repMaxes": [
        {
          "reps": 1,
          "weight": 180,
          "unit": "kg",
          "date": "2024-01-10",
          "type": "actual",
          "notes": "Competition PR"
        },
        {
          "reps": 5,
          "weight": 155,
          "unit": "kg",
          "date": "2023-12-20",
          "type": "actual"
        }
      ],
      "estimated1RM": {
        "value": 185,
        "unit": "kg",
        "formula": "brzycki",
        "basedOnReps": 5,
        "basedOnWeight": 155
      }
    },
    {
      "exercise": {
        "name": "Plank",
        "equipment": "bodyweight"
      },
      "durationPR": {
        "seconds": 180,
        "date": "2024-01-08"
      }
    }
  ],
  "normalizedScores": {
    "squat": { "wilks": 145.2, "dots": 148.5 },
    "total": { "wilks": 406.2, "dots": 414.6 }
  }
}

Full Schema

Click to expand full JSON Schema
json
{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://openweight.org/schemas/personal-records.schema.json",
  "title": "PersonalRecords",
  "description": "Personal records and one-rep maxes for strength training",
  "type": "object",
  "required": ["exportedAt", "records"],
  "additionalProperties": true
}

See the full schema on GitHub.

Released under the Apache 2.0 License.