changedInput schema / properties / items / items / properties / workout / properties / blocks / items / anyOf
Previous value: -[
- {
- "properties": {
- "children": {
- "items": {
- "properties": {
- "cad": {
- "description": "target cadence rpm",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "dist": {
- "description": "RUNNING and SWIMMING: measure this rep by distance in metres (2000 for 2 km on the road, 100 for a pool rep) instead of time; time is derived from the target pace. For SWIMMING this is the normal case — a set is written in metres, never in minutes. Give either dur or dist, not both.",
- "maximum": 50000,
- "minimum": 25,
- "type": "integer"
- },
- "dur": {
- "description": "seconds (omit when using dist)",
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "gear": {
- "description": "SWIMMING: paddles | buoy | fins | board | snorkel",
- "items": {
- "enum": [
- "paddles",
- "buoy",
- "fins",
- "board",
- "snorkel"
- ],
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "label": {
- "maxLength": 80,
- "type": "string"
- },
- "maxHr": {
- "description": "heart-rate ceiling, bpm: over it the trainer autopilot takes watts off",
- "maximum": 220,
- "minimum": 80,
- "type": "integer"
- },
- "maxRpe": {
- "description": "RPE ceiling (1-10): a rating over it, asked or tapped mid-step, takes watts off this step",
- "maximum": 10,
- "minimum": 1,
- "type": "integer"
- },
- "maxW": {
- "description": "CYCLING: the most watts ERG may hold on this step (a ceiling, e.g. 190 on an easy ride). Put limits HERE, not in the label or note — the trainer autopilot reads this field",
- "maximum": 2000,
- "minimum": 50,
- "type": "integer"
- },
- "mode": {
- "description": "SWIMMING: swim (default) | kick | pull | drill",
- "enum": [
- "swim",
- "kick",
- "pull",
- "drill"
- ],
- "type": "string"
- },
- "open": {
- "description": "a maximal effort (test, all-out) — no target on the device; power stays as the expected level",
- "type": "boolean"
- },
- "power": {
- "description": "%FTP (cycling) or %threshold pace (running) or %CSS (swimming — 100 = their CSS pace, below 100 = slower/easier, e.g. 92 for an aerobic set)",
- "maximum": 200,
- "minimum": 30,
- "type": "number"
- },
- "sft": {
- "description": "true = the athlete's SFT: load and length come from their profile at export; follow it with 60 s easy",
- "type": "boolean"
- },
- "stroke": {
- "description": "SWIMMING: free (default) | back | breast | fly | im | choice",
- "enum": [
- "free",
- "back",
- "breast",
- "fly",
- "im",
- "choice"
- ],
- "type": "string"
- },
- "target": {
- "description": "this step's own device target, over the session's",
- "enum": [
- "power",
- "pace",
- "hr",
- "rpe"
- ],
- "type": "string"
- },
- "untilLap": {
- "description": "the step ends when the athlete presses Lap",
- "type": "boolean"
- },
- "zone": {
- "enum": [
- "recovery",
- "endurance",
- "tempo",
- "threshold",
- "vo2",
- "sprint"
- ],
- "type": "string"
- }
- },
- "required": [
- "zone",
- "power"
- ],
- "type": "object"
- },
- "minItems": 1,
- "type": "array"
- },
- "reps": {
- "maximum": 30,
- "minimum": 1,
- "type": "integer"
- },
- "sendoff": {
- "description": "SWIMMING: the send-off in seconds — the whole cycle, swim PLUS rest (\"10×100 on 1:40\" = 100). Rest is what is left of it. Use this OR a rest step inside the set, never both: they are two different sessions, and on a send-off swimming faster buys rest instead of ending the interval sooner.",
- "maximum": 1800,
- "minimum": 10,
- "type": "integer"
- },
- "type": {
- "const": "repeat",
- "type": "string"
- }
- },
- "required": [
- "type",
- "reps",
- "children"
- ],
- "type": "object"
- },
- {
- "properties": {
- "cad": {
- "description": "target cadence rpm",
- "maximum": 9007199254740991,
- "minimum": -9007199254740991,
- "type": "integer"
- },
- "dist": {
- "description": "RUNNING and SWIMMING: measure this rep by distance in metres (2000 for 2 km on the road, 100 for a pool rep) instead of time; time is derived from the target pace. For SWIMMING this is the normal case — a set is written in metres, never in minutes. Give either dur or dist, not both.",
- "maximum": 50000,
- "minimum": 25,
- "type": "integer"
- },
- "dur": {
- "description": "seconds (omit when using dist)",
- "exclusiveMinimum": 0,
- "maximum": 9007199254740991,
- "type": "integer"
- },
- "gear": {
- "description": "SWIMMING: paddles | buoy | fins | board | snorkel",
- "items": {
- "enum": [
- "paddles",
- "buoy",
- "fins",
- "board",
- "snorkel"
- ],
- "type": "string"
- },
- "maxItems": 3,
- "type": "array"
- },
- "label": {
- "maxLength": 80,
- "type": "string"
- },
- "maxHr": {
- "description": "heart-rate ceiling, bpm: over it the trainer autopilot takes watts off",
- "maximum": 220,
- "minimum": 80,
- "type": "integer"
- },
- "maxRpe": {
- "description": "RPE ceiling (1-10): a rating over it, asked or tapped mid-step, takes watts off this step",
- "maximum": 10,
- "minimum": 1,
- "type": "integer"
- },
- "maxW": {
- "description": "CYCLING: the most watts ERG may hold on this step (a ceiling, e.g. 190 on an easy ride). Put limits HERE, not in the label or note — the trainer autopilot reads this field",
- "maximum": 2000,
- "minimum": 50,
- "type": "integer"
- },
- "mode": {
- "description": "SWIMMING: swim (default) | kick | pull | drill",
- "enum": [
- "swim",
- "kick",
- "pull",
- "drill"
- ],
- "type": "string"
- },
- "open": {
- "description": "a maximal effort (test, all-out) — no target on the device; power stays as the expected level",
- "type": "boolean"
- },
- "power": {
- "description": "%FTP (cycling) or %threshold pace (running) or %CSS (swimming — 100 = their CSS pace, below 100 = slower/easier, e.g. 92 for an aerobic set)",
- "maximum": 200,
- "minimum": 30,
- "type": "number"
- },
- "sft": {
- "description": "true = the athlete's SFT: load and length come from their profile at export; follow it with 60 s easy",
- "type": "boolean"
- },
- "stroke": {
- "description": "SWIMMING: free (default) | back | breast | fly | im | choice",
- "enum": [
- "free",
- "back",
- "breast",
- "fly",
- "im",
- "choice"
- ],
- "type": "string"
- },
- "target": {
- "description": "this step's own device target, over the session's",
- "enum": [
- "power",
- "pace",
- "hr",
- "rpe"
- ],
- "type": "string"
- },
- "type": {
- "const": "steady",
- "type": "string"
- },
- "untilLap": {
- "description": "the step ends when the athlete presses Lap",
- "type": "boolean"
- },
- "zone": {
- "enum": [
- "recovery",
- "endurance",
- "tempo",
- "threshold",
- "vo2",
- "sprint"
- ],
- "type": "string"
- }
- },
- "required": [
- "zone",
- "power"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "properties": {
+ "children": {
+ "items": {
+ "properties": {
+ "cad": {
+ "description": "target cadence rpm",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "dist": {
+ "description": "RUNNING and SWIMMING: measure this rep by distance in metres (2000 for 2 km on the road, 100 for a pool rep) instead of time; time is derived from the target pace. For SWIMMING this is the normal case — a set is written in metres, never in minutes. Give either dur or dist, not both.",
+ "maximum": 50000,
+ "minimum": 25,
+ "type": "integer"
+ },
+ "dur": {
+ "description": "seconds (omit when using dist)",
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "gear": {
+ "description": "SWIMMING: paddles | buoy | fins | board | snorkel",
+ "items": {
+ "enum": [
+ "paddles",
+ "buoy",
+ "fins",
+ "board",
+ "snorkel"
+ ],
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "hr": {
+ "description": "the athlete's own HR corridor for this step, bpm (\"135-145\") — over the zone's band on the card, the watch and the autopilot; only when they named one",
+ "properties": {
+ "hi": {
+ "maximum": 220,
+ "minimum": 61,
+ "type": "integer"
+ },
+ "lo": {
+ "maximum": 219,
+ "minimum": 60,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "lo",
+ "hi"
+ ],
+ "type": "object"
+ },
+ "label": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "maxHr": {
+ "description": "heart-rate ceiling, bpm: over it the trainer autopilot takes watts off",
+ "maximum": 220,
+ "minimum": 80,
+ "type": "integer"
+ },
+ "maxRpe": {
+ "description": "RPE ceiling (1-10): a rating over it, asked or tapped mid-step, takes watts off this step",
+ "maximum": 10,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "maxW": {
+ "description": "CYCLING: the most watts ERG may hold on this step (a ceiling, e.g. 190 on an easy ride). Put limits HERE, not in the label or note — the trainer autopilot reads this field",
+ "maximum": 2000,
+ "minimum": 50,
+ "type": "integer"
+ },
+ "mode": {
+ "description": "SWIMMING: swim (default) | kick | pull | drill",
+ "enum": [
+ "swim",
+ "kick",
+ "pull",
+ "drill"
+ ],
+ "type": "string"
+ },
+ "open": {
+ "description": "a maximal effort (test, all-out) — no target on the device; power stays as the expected level",
+ "type": "boolean"
+ },
+ "power": {
+ "description": "%FTP (cycling) or %threshold pace (running) or %CSS (swimming — 100 = their CSS pace, below 100 = slower/easier, e.g. 92 for an aerobic set)",
+ "maximum": 200,
+ "minimum": 30,
+ "type": "number"
+ },
+ "sft": {
+ "description": "true = the athlete's SFT: load and length come from their profile at export; follow it with 60 s easy",
+ "type": "boolean"
+ },
+ "stroke": {
+ "description": "SWIMMING: free (default) | back | breast | fly | im | choice",
+ "enum": [
+ "free",
+ "back",
+ "breast",
+ "fly",
+ "im",
+ "choice"
+ ],
+ "type": "string"
+ },
+ "target": {
+ "description": "this step's own device target, over the session's",
+ "enum": [
+ "power",
+ "pace",
+ "hr",
+ "rpe"
+ ],
+ "type": "string"
+ },
+ "untilLap": {
+ "description": "the step ends when the athlete presses Lap",
+ "type": "boolean"
+ },
+ "zone": {
+ "enum": [
+ "recovery",
+ "endurance",
+ "tempo",
+ "threshold",
+ "vo2",
+ "sprint"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "zone",
+ "power"
+ ],
+ "type": "object"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "reps": {
+ "maximum": 30,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "sendoff": {
+ "description": "SWIMMING: the send-off in seconds — the whole cycle, swim PLUS rest (\"10×100 on 1:40\" = 100). Rest is what is left of it. Use this OR a rest step inside the set, never both: they are two different sessions, and on a send-off swimming faster buys rest instead of ending the interval sooner.",
+ "maximum": 1800,
+ "minimum": 10,
+ "type": "integer"
+ },
+ "type": {
+ "const": "repeat",
+ "type": "string"
+ }
+ },
+ "required": [
+ "type",
+ "reps",
+ "children"
+ ],
+ "type": "object"
+ },
+ {
+ "properties": {
+ "cad": {
+ "description": "target cadence rpm",
+ "maximum": 9007199254740991,
+ "minimum": -9007199254740991,
+ "type": "integer"
+ },
+ "dist": {
+ "description": "RUNNING and SWIMMING: measure this rep by distance in metres (2000 for 2 km on the road, 100 for a pool rep) instead of time; time is derived from the target pace. For SWIMMING this is the normal case — a set is written in metres, never in minutes. Give either dur or dist, not both.",
+ "maximum": 50000,
+ "minimum": 25,
+ "type": "integer"
+ },
+ "dur": {
+ "description": "seconds (omit when using dist)",
+ "exclusiveMinimum": 0,
+ "maximum": 9007199254740991,
+ "type": "integer"
+ },
+ "gear": {
+ "description": "SWIMMING: paddles | buoy | fins | board | snorkel",
+ "items": {
+ "enum": [
+ "paddles",
+ "buoy",
+ "fins",
+ "board",
+ "snorkel"
+ ],
+ "type": "string"
+ },
+ "maxItems": 3,
+ "type": "array"
+ },
+ "hr": {
+ "description": "the athlete's own HR corridor for this step, bpm (\"135-145\") — over the zone's band on the card, the watch and the autopilot; only when they named one",
+ "properties": {
+ "hi": {
+ "maximum": 220,
+ "minimum": 61,
+ "type": "integer"
+ },
+ "lo": {
+ "maximum": 219,
+ "minimum": 60,
+ "type": "integer"
+ }
+ },
+ "required": [
+ "lo",
+ "hi"
+ ],
+ "type": "object"
+ },
+ "label": {
+ "maxLength": 80,
+ "type": "string"
+ },
+ "maxHr": {
+ "description": "heart-rate ceiling, bpm: over it the trainer autopilot takes watts off",
+ "maximum": 220,
+ "minimum": 80,
+ "type": "integer"
+ },
+ "maxRpe": {
+ "description": "RPE ceiling (1-10): a rating over it, asked or tapped mid-step, takes watts off this step",
+ "maximum": 10,
+ "minimum": 1,
+ "type": "integer"
+ },
+ "maxW": {
+ "description": "CYCLING: the most watts ERG may hold on this step (a ceiling, e.g. 190 on an easy ride). Put limits HERE, not in the label or note — the trainer autopilot reads this field",
+ "maximum": 2000,
+ "minimum": 50,
+ "type": "integer"
+ },
+ "mode": {
+ "description": "SWIMMING: swim (default) | kick | pull | drill",
+ "enum": [
+ "swim",
+ "kick",
+ "pull",
+ "drill"
+ ],
+ "type": "string"
+ },
+ "open": {
+ "description": "a maximal effort (test, all-out) — no target on the device; power stays as the expected level",
+ "type": "boolean"
+ },
+ "power": {
+ "description": "%FTP (cycling) or %threshold pace (running) or %CSS (swimming — 100 = their CSS pace, below 100 = slower/easier, e.g. 92 for an aerobic set)",
+ "maximum": 200,
+ "minimum": 30,
+ "type": "number"
+ },
+ "sft": {
+ "description": "true = the athlete's SFT: load and length come from their profile at export; follow it with 60 s easy",
+ "type": "boolean"
+ },
+ "stroke": {
+ "description": "SWIMMING: free (default) | back | breast | fly | im | choice",
+ "enum": [
+ "free",
+ "back",
+ "breast",
+ "fly",
+ "im",
+ "choice"
+ ],
+ "type": "string"
+ },
+ "target": {
+ "description": "this step's own device target, over the session's",
+ "enum": [
+ "power",
+ "pace",
+ "hr",
+ "rpe"
+ ],
+ "type": "string"
+ },
+ "type": {
+ "const": "steady",
+ "type": "string"
+ },
+ "untilLap": {
+ "description": "the step ends when the athlete presses Lap",
+ "type": "boolean"
+ },
+ "zone": {
+ "enum": [
+ "recovery",
+ "endurance",
+ "tempo",
+ "threshold",
+ "vo2",
+ "sprint"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "zone",
+ "power"
+ ],
+ "type": "object"
+ }
+]