{"$schema":"https://json-schema.org/draft/2020-12/schema","title":"Training ProgramV1","type":"object","additionalProperties":false,"required":["v","u","m","c","weeks"],"properties":{"v":{"const":1},"u":{"enum":["lb","kg"]},"m":{"type":"object","maxProperties":100,"propertyNames":{"minLength":1,"maxLength":160},"additionalProperties":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."}},"c":{"type":"array","minItems":1,"maxItems":52,"items":{"type":"object","required":["n"],"additionalProperties":false,"properties":{"n":{"type":"string","maxLength":120}}}},"weeks":{"type":"array","minItems":1,"maxItems":52,"items":{"type":"object","required":["c","days"],"additionalProperties":false,"properties":{"c":{"type":"integer","minimum":0,"maximum":51,"description":"Must reference an existing entry in c."},"days":{"type":"array","minItems":1,"maxItems":7,"items":{"type":"object","required":["label","rows"],"additionalProperties":false,"properties":{"label":{"type":"string","maxLength":120},"rows":{"type":"array","minItems":0,"maxItems":40,"items":{"type":"object","additionalProperties":false,"required":["ex","mode","sets","reps","load","pct","rpe","rest"],"properties":{"ex":{"type":"string","maxLength":160},"mode":{"type":"string","maxLength":48},"sets":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."},"reps":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."},"load":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."},"pct":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."},"rpe":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."},"rest":{"anyOf":[{"type":"string","maxLength":48},{"type":"number","minimum":-1000000,"maximum":1000000}],"description":"Strings are preserved exactly, including decimals, ranges and AMRAP. Finite numbers become their decimal string representation on read."}}}}}}}}}}},"description":"Decoded legacy ProgramV1. Maximum 2000 total exercise rows and 262144 UTF-8 request bytes. Empty rows and single-week authored programs are valid. Generated catalog programs have separate quality requirements."}