POST /api/org/clients/:id/orders/evaluate

A professional's reading of the period that passed: the session-RPE log, the Hooper index and the food record against the SMART goals and the plan; adherence, load, wellbeing, each goal's status, what went well, what to change, what comes next. Placed on the client's behalf, charged to the organisation's pot.

Surface: organisation. Who may call: organisation-key. Key: organisation.orders.place.evaluate.

Example request

curl -X POST https://caremcp.com/api/org/clients/7d1f0a0e-2c4b-4c7e-9a6e-000000000001/orders/evaluate \
  -H "Authorization: Bearer <API key or session>" \
  -H "Content-Type: application/json" \
  -d '{"professions":["personal-trainer"],"brief":{"period":{"from":"2026-10-01","to":"2026-10-07"},"health":{"parq":{"heartOrBloodPressure":false,"chestPain":false,"dizzinessOrFainting":false,"otherChronicCondition":false,"prescribedMedication":false,"boneJointSoftTissue":false,"supervisedOnly":false,"pregnant":false,"eatingDisorder":false,"declaredOn":"2026-09-20"},"diagnoses":[],"medications":[],"conditions":[]},"body":{"sex":"female","heightCm":168,"weightKg":64},"fitness":{"experience":"intermediate","activity":{"daysPerWeek":3,"minutesPerSession":45},"equipment":["dumbbells to 20 kg"],"daysAvailable":3,"minutesAvailable":60},"diet":{"pattern":"omnivore","allergies":[],"intolerances":["stone fruit"],"dislikes":[],"mealsPerDay":3,"cookingMinutes":30,"cookingSkill":"basic","caffeine":2,"alcohol":1},"goals":[{"text":"Run 10 km","measure":"distance in one run","target":"10 km","by":"2026-12-31","kind":"performance"}],"notes":"Three days a week, dumbbells at home.","plan":{"personal-trainer":{"markdown":"# Summary\nThree runs and two dumbbell sessions a week; the wrist stays neutral under load. \n\n# Weeks\n## Week 1\n### Day 1: run\nRPE 3, 30 minutes, easy.\n\n### Day 3: strength\nRPE 7, 45 minutes. Dumbbell row 3 x 10 at 14 kg, rest 90 s. Goblet squat 3 x 10.\n\n# Progression\nAdd five minutes to each run while RPE stays at 3; add one set to the rows in week three.\n\n# Adaptations\nNeutral grip on every press; no push-ups on the palm until the wrist settles.\n\n# Referral\nNone."}}}}'

Example input

{
  "id": "7d1f0a0e-2c4b-4c7e-9a6e-000000000001",
  "professions": [
    "personal-trainer"
  ],
  "brief": {
    "period": {
      "from": "2026-10-01",
      "to": "2026-10-07"
    },
    "health": {
      "parq": {
        "heartOrBloodPressure": false,
        "chestPain": false,
        "dizzinessOrFainting": false,
        "otherChronicCondition": false,
        "prescribedMedication": false,
        "boneJointSoftTissue": false,
        "supervisedOnly": false,
        "pregnant": false,
        "eatingDisorder": false,
        "declaredOn": "2026-09-20"
      },
      "diagnoses": [],
      "medications": [],
      "conditions": []
    },
    "body": {
      "sex": "female",
      "heightCm": 168,
      "weightKg": 64
    },
    "fitness": {
      "experience": "intermediate",
      "activity": {
        "daysPerWeek": 3,
        "minutesPerSession": 45
      },
      "equipment": [
        "dumbbells to 20 kg"
      ],
      "daysAvailable": 3,
      "minutesAvailable": 60
    },
    "diet": {
      "pattern": "omnivore",
      "allergies": [],
      "intolerances": [
        "stone fruit"
      ],
      "dislikes": [],
      "mealsPerDay": 3,
      "cookingMinutes": 30,
      "cookingSkill": "basic",
      "caffeine": 2,
      "alcohol": 1
    },
    "goals": [
      {
        "text": "Run 10 km",
        "measure": "distance in one run",
        "target": "10 km",
        "by": "2026-12-31",
        "kind": "performance"
      }
    ],
    "notes": "Three days a week, dumbbells at home.",
    "plan": {
      "personal-trainer": {
        "markdown": "# Summary\nThree runs and two dumbbell sessions a week; the wrist stays neutral under load. \n\n# Weeks\n## Week 1\n### Day 1: run\nRPE 3, 30 minutes, easy.\n\n### Day 3: strength\nRPE 7, 45 minutes. Dumbbell row 3 x 10 at 14 kg, rest 90 s. Goblet squat 3 x 10.\n\n# Progression\nAdd five minutes to each run while RPE stays at 3; add one set to the rows in week three.\n\n# Adaptations\nNeutral grip on every press; no push-ups on the palm until the wrist settles.\n\n# Referral\nNone."
      }
    }
  }
}

Input schema

{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "id": {
   "type": "string",
   "format": "uuid",
   "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
   "description": "The client, by our id."
  },
  "professions": {
   "minItems": 1,
   "maxItems": 5,
   "type": "array",
   "items": {
    "$ref": "#/$defs/__schema0"
   }
  },
  "requestedProfessionalId": {
   "type": "string",
   "format": "uuid",
   "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
  },
  "brief": {
   "type": "object",
   "properties": {
    "period": {
     "type": "object",
     "properties": {
      "from": {
       "$ref": "#/$defs/__schema1"
      },
      "to": {
       "$ref": "#/$defs/__schema2"
      }
     },
     "required": [
      "from",
      "to"
     ]
    },
    "health": {
     "type": "object",
     "properties": {
      "parq": {
       "type": "object",
       "properties": {
        "heartOrBloodPressure": {
         "$ref": "#/$defs/__schema3"
        },
        "chestPain": {
         "$ref": "#/$defs/__schema4"
        },
        "dizzinessOrFainting": {
         "$ref": "#/$defs/__schema5"
        },
        "otherChronicCondition": {
         "$ref": "#/$defs/__schema6"
        },
        "prescribedMedication": {
         "$ref": "#/$defs/__schema7"
        },
        "boneJointSoftTissue": {
         "$ref": "#/$defs/__schema8"
        },
        "supervisedOnly": {
         "$ref": "#/$defs/__schema9"
        },
        "pregnant": {
         "$ref": "#/$defs/__schema10"
        },
        "eatingDisorder": {
         "$ref": "#/$defs/__schema11"
        },
        "clinicianCleared": {
         "$ref": "#/$defs/__schema12"
        },
        "declaredOn": {
         "$ref": "#/$defs/__schema14"
        }
       },
       "required": [
        "heartOrBloodPressure",
        "chestPain",
        "dizzinessOrFainting",
        "otherChronicCondition",
        "prescribedMedication",
        "boneJointSoftTissue",
        "supervisedOnly",
        "pregnant",
        "eatingDisorder",
        "declaredOn"
       ],
       "description": "The health declaration: nine questions, the clearance, and the date the client answered."
      },
      "diagnoses": {
       "maxItems": 20,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema15"
       },
       "description": "The chronic conditions a clinician has diagnosed, named, behind a yes on question 4."
      },
      "medications": {
       "maxItems": 20,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema16"
       },
       "description": "Prescribed medications by name, behind a yes on question 5."
      },
      "conditions": {
       "maxItems": 20,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema17"
       },
       "description": "Injuries, aches and problems with bones, joints or muscles the professional plans around, one entry each, behind a yes on question 6 or on their own."
      }
     },
     "required": [
      "parq",
      "diagnoses",
      "medications",
      "conditions"
     ]
    },
    "body": {
     "type": "object",
     "properties": {
      "sex": {
       "type": "string",
       "enum": [
        "female",
        "male",
        "other"
       ],
       "description": "For the norm tables: female, male, or other when neither table fits."
      },
      "heightCm": {
       "type": "number",
       "minimum": 100,
       "maximum": 250,
       "description": "Centimetres."
      },
      "weightKg": {
       "type": "number",
       "minimum": 30,
       "maximum": 300,
       "description": "Kilograms."
      },
      "waistCm": {
       "description": "Centimetres, at the navel.",
       "$ref": "#/$defs/__schema18"
      },
      "date": {
       "description": "When the weight and waist were taken.",
       "$ref": "#/$defs/__schema19"
      }
     },
     "required": [
      "sex",
      "heightCm",
      "weightKg"
     ]
    },
    "fitness": {
     "type": "object",
     "properties": {
      "experience": {
       "type": "string",
       "enum": [
        "beginner",
        "intermediate",
        "advanced",
        "elite"
       ],
       "description": "NSCA training status: beginner (under two months), intermediate, advanced (a year or more), elite (competing)."
      },
      "activity": {
       "type": "object",
       "properties": {
        "daysPerWeek": {
         "$ref": "#/$defs/__schema20"
        },
        "minutesPerSession": {
         "$ref": "#/$defs/__schema21"
        },
        "since": {
         "$ref": "#/$defs/__schema22"
        }
       },
       "required": [
        "daysPerWeek",
        "minutesPerSession"
       ],
       "description": "What the client does now, against ACSM's regular exerciser: 30 minutes or more of moderate activity, three or more days a week, for three months or more."
      },
      "strength": {
       "description": "What the client knows about their strength. Only what they know; nothing is tested for this.",
       "$ref": "#/$defs/__schema24"
      },
      "endurance": {
       "type": "object",
       "properties": {
        "fiveKmMinutes": {
         "description": "Recent 5 km time in minutes, decimals allowed: 22.5 is 22:30.",
         "$ref": "#/$defs/__schema30"
        },
        "restingHeartRate": {
         "description": "Beats per minute, at rest in the morning.",
         "$ref": "#/$defs/__schema31"
        },
        "notes": {
         "description": "In the client's words: walks 5 km without stopping, cycles to work.",
         "$ref": "#/$defs/__schema32"
        }
       }
      },
      "mobility": {
       "description": "In the client's words: cannot squat below parallel, tight hips.",
       "$ref": "#/$defs/__schema33"
      },
      "equipment": {
       "maxItems": 20,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema34"
       },
       "description": "dumbbells to 20 kg, gym, none, bike."
      },
      "daysAvailable": {
       "type": "integer",
       "minimum": 1,
       "maximum": 7,
       "description": "Days a week the plan may use."
      },
      "minutesAvailable": {
       "type": "integer",
       "minimum": 10,
       "maximum": 300,
       "description": "Minutes per session the plan may use."
      }
     },
     "required": [
      "experience",
      "activity",
      "equipment",
      "daysAvailable",
      "minutesAvailable"
     ]
    },
    "diet": {
     "type": "object",
     "properties": {
      "pattern": {
       "type": "string",
       "minLength": 2,
       "maxLength": 60,
       "description": "omnivore, pescatarian, vegetarian, vegan, or the client's own word: halal, kosher, low FODMAP by choice."
      },
      "allergies": {
       "maxItems": 20,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema35"
       },
       "description": "Foods that cause a reaction. Avoided in every plan."
      },
      "intolerances": {
       "maxItems": 20,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema36"
       },
       "description": "Foods the client does not tolerate, in their own experience: stone fruit, lactose."
      },
      "dislikes": {
       "maxItems": 30,
       "type": "array",
       "items": {
        "$ref": "#/$defs/__schema37"
       }
      },
      "mealsPerDay": {
       "type": "integer",
       "minimum": 1,
       "maximum": 8,
       "description": "Meals on an ordinary day, snacks not counted."
      },
      "cookingMinutes": {
       "type": "integer",
       "minimum": 0,
       "maximum": 240,
       "description": "Minutes the client will cook on an ordinary day."
      },
      "cookingSkill": {
       "type": "string",
       "enum": [
        "none",
        "basic",
        "confident"
       ]
      },
      "caffeine": {
       "type": "integer",
       "minimum": 0,
       "maximum": 20,
       "description": "Cups of coffee, or the equivalent in tea or energy drinks, per day."
      },
      "alcohol": {
       "type": "integer",
       "minimum": 0,
       "maximum": 100,
       "description": "Standard drinks per week: one glass of wine, one bottle of beer, one shot each count as one."
      },
      "notes": {
       "description": "Budget, family meals, shift work, in the client's words.",
       "$ref": "#/$defs/__schema38"
      }
     },
     "required": [
      "pattern",
      "allergies",
      "intolerances",
      "dislikes",
      "mealsPerDay",
      "cookingMinutes",
      "cookingSkill",
      "caffeine",
      "alcohol"
     ]
    },
    "labs": {
     "maxItems": 40,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema39"
     }
    },
    "goals": {
     "minItems": 1,
     "maxItems": 10,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema41"
     }
    },
    "sessions": {
     "maxItems": 400,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema42"
     }
    },
    "wellbeing": {
     "maxItems": 400,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema45"
     }
    },
    "food": {
     "maxItems": 400,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema46"
     }
    },
    "plan": {},
    "notes": {
     "type": "string",
     "maxLength": 2000
    }
   },
   "required": [
    "period",
    "health",
    "body",
    "goals"
   ]
  }
 },
 "required": [
  "id",
  "professions",
  "brief"
 ],
 "$defs": {
  "__schema0": {
   "type": "string",
   "minLength": 1
  },
  "__schema1": {
   "type": "string",
   "format": "date",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
  },
  "__schema2": {
   "type": "string",
   "format": "date",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
  },
  "__schema3": {
   "type": "boolean",
   "description": "1. Has your doctor ever said that you have a heart condition OR high blood pressure?"
  },
  "__schema4": {
   "type": "boolean",
   "description": "2. Do you feel pain in your chest at rest, during your daily activities of living, OR when you do physical activity?"
  },
  "__schema5": {
   "type": "boolean",
   "description": "3. Do you lose balance because of dizziness OR have you lost consciousness in the last 12 months?"
  },
  "__schema6": {
   "type": "boolean",
   "description": "4. Have you ever been diagnosed with another chronic medical condition (other than heart disease or high blood pressure)?"
  },
  "__schema7": {
   "type": "boolean",
   "description": "5. Are you currently taking prescribed medications for a chronic medical condition?"
  },
  "__schema8": {
   "type": "boolean",
   "description": "6. Do you currently have (or have had within the past 12 months) a bone, joint, or soft tissue (muscle, ligament, or tendon) problem that could be made worse by becoming more physically active?"
  },
  "__schema9": {
   "type": "boolean",
   "description": "7. Has your doctor ever said that you should only do medically supervised physical activity?"
  },
  "__schema10": {
   "type": "boolean",
   "description": "8. Are you pregnant?"
  },
  "__schema11": {
   "type": "boolean",
   "description": "9. Do you have, or have you had, an eating disorder? A yes puts the service outside what we may offer."
  },
  "__schema12": {
   "description": "Only when any answer above is YES: has a doctor or another clinician said that you may be physically active? Leave out when every answer is no.",
   "$ref": "#/$defs/__schema13"
  },
  "__schema13": {
   "type": "boolean"
  },
  "__schema14": {
   "type": "string",
   "format": "date",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
   "description": "The date the client answered these questions themselves. The declaration is the client's own, never inferred."
  },
  "__schema15": {
   "type": "object",
   "properties": {
    "name": {
     "type": "string",
     "minLength": 2,
     "maxLength": 80,
     "description": "As the clinician named it, in the client's words: type 2 diabetes, asthma, high blood pressure."
    },
    "since": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "underCare": {
     "type": "boolean",
     "description": "Under a clinician's care now."
    }
   },
   "required": [
    "name",
    "underCare"
   ]
  },
  "__schema16": {
   "type": "string",
   "minLength": 2,
   "maxLength": 80
  },
  "__schema17": {
   "type": "object",
   "properties": {
    "area": {
     "type": "string",
     "minLength": 2,
     "maxLength": 40,
     "description": "Where: wrist, lower back, knee, or general."
    },
    "description": {
     "type": "string",
     "minLength": 3,
     "maxLength": 300,
     "description": "What it is like, in the client's words."
    },
    "since": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "severity": {
     "type": "integer",
     "minimum": 1,
     "maximum": 5,
     "description": "1 (notices it) to 5 (stops the activity)."
    },
    "clinicianCleared": {
     "type": "boolean",
     "description": "A clinician has seen it and said training around it is fine."
    }
   },
   "required": [
    "area",
    "description",
    "severity",
    "clinicianCleared"
   ]
  },
  "__schema18": {
   "type": "number",
   "minimum": 40,
   "maximum": 200
  },
  "__schema19": {
   "type": "string",
   "format": "date",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
  },
  "__schema20": {
   "type": "integer",
   "minimum": 0,
   "maximum": 7
  },
  "__schema21": {
   "type": "integer",
   "minimum": 0,
   "maximum": 600
  },
  "__schema22": {
   "description": "ISO date this pattern has held since; omitted when it is new.",
   "$ref": "#/$defs/__schema23"
  },
  "__schema23": {
   "type": "string",
   "format": "date",
   "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
  },
  "__schema24": {
   "type": "object",
   "properties": {
    "squatKg": {
     "description": "Best single repetition, kilograms.",
     "$ref": "#/$defs/__schema25"
    },
    "benchKg": {
     "description": "Best single repetition, kilograms.",
     "$ref": "#/$defs/__schema26"
    },
    "deadliftKg": {
     "description": "Best single repetition, kilograms.",
     "$ref": "#/$defs/__schema27"
    },
    "pushUps": {
     "description": "Most in one set.",
     "$ref": "#/$defs/__schema28"
    },
    "pullUps": {
     "description": "Most in one set.",
     "$ref": "#/$defs/__schema29"
    }
   }
  },
  "__schema25": {
   "type": "number",
   "minimum": 0,
   "maximum": 500
  },
  "__schema26": {
   "type": "number",
   "minimum": 0,
   "maximum": 400
  },
  "__schema27": {
   "type": "number",
   "minimum": 0,
   "maximum": 500
  },
  "__schema28": {
   "type": "integer",
   "minimum": 0,
   "maximum": 200
  },
  "__schema29": {
   "type": "integer",
   "minimum": 0,
   "maximum": 100
  },
  "__schema30": {
   "type": "number",
   "minimum": 10,
   "maximum": 120
  },
  "__schema31": {
   "type": "integer",
   "minimum": 30,
   "maximum": 120
  },
  "__schema32": {
   "type": "string",
   "maxLength": 300
  },
  "__schema33": {
   "type": "string",
   "maxLength": 300
  },
  "__schema34": {
   "type": "string",
   "minLength": 2,
   "maxLength": 60
  },
  "__schema35": {
   "type": "object",
   "properties": {
    "food": {
     "type": "string",
     "minLength": 2,
     "maxLength": 60
    },
    "clinicianDiagnosed": {
     "type": "boolean",
     "description": "A clinician has diagnosed it, as against the client's own observation."
    }
   },
   "required": [
    "food",
    "clinicianDiagnosed"
   ]
  },
  "__schema36": {
   "type": "string",
   "minLength": 2,
   "maxLength": 60
  },
  "__schema37": {
   "type": "string",
   "minLength": 2,
   "maxLength": 60
  },
  "__schema38": {
   "type": "string",
   "maxLength": 500
  },
  "__schema39": {
   "type": "object",
   "properties": {
    "marker": {
     "type": "string",
     "enum": [
      "total-cholesterol",
      "ldl",
      "hdl",
      "triglycerides",
      "hba1c",
      "fasting-glucose",
      "ferritin",
      "vitamin-d",
      "blood-pressure",
      "resting-heart-rate",
      "other"
     ]
    },
    "name": {
     "description": "Named when the marker is other.",
     "$ref": "#/$defs/__schema40"
    },
    "value": {
     "type": "string",
     "minLength": 1,
     "maxLength": 20,
     "description": "As on the lab report: 4.8, or 130/85 for blood pressure."
    },
    "unit": {
     "type": "string",
     "minLength": 1,
     "maxLength": 20,
     "description": "As on the lab report: mmol/L, mg/dL, mmHg, bpm. Ask when the client gives a number without one; a value without its unit means nothing."
    },
    "date": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "clinicianReviewed": {
     "type": "boolean",
     "description": "A clinician took it or has seen it."
    }
   },
   "required": [
    "marker",
    "value",
    "unit",
    "date",
    "clinicianReviewed"
   ]
  },
  "__schema40": {
   "type": "string",
   "minLength": 2,
   "maxLength": 60
  },
  "__schema41": {
   "type": "object",
   "properties": {
    "text": {
     "type": "string",
     "minLength": 3,
     "maxLength": 300,
     "description": "Specific: what, in the client's words."
    },
    "measure": {
     "type": "string",
     "minLength": 2,
     "maxLength": 100,
     "description": "Measurable: what is measured. 5 km time, deadlift 1RM, waist, energy on a 1 to 5 scale."
    },
    "target": {
     "type": "string",
     "minLength": 1,
     "maxLength": 100,
     "description": "The target value with its unit: under 30 min, 100 kg, 4 or better most days."
    },
    "by": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
     "description": "Time bound: the date."
    },
    "kind": {
     "type": "string",
     "enum": [
      "performance",
      "wellbeing",
      "condition"
     ],
     "description": "performance (stronger, faster, further), wellbeing (energy, sleep, weight for its own sake), condition (aimed at a disease or an injury; a clinician's, refused here)."
    }
   },
   "required": [
    "text",
    "measure",
    "target",
    "by",
    "kind"
   ]
  },
  "__schema42": {
   "type": "object",
   "properties": {
    "date": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "type": {
     "type": "string",
     "minLength": 2,
     "maxLength": 40,
     "description": "strength, run, walk, cycle, swim, mobility, or the client's own word."
    },
    "minutes": {
     "type": "integer",
     "minimum": 1,
     "maximum": 600
    },
    "rpe": {
     "type": "integer",
     "minimum": 0,
     "maximum": 10,
     "description": "Borg CR10, 0 (rest) to 10 (maximal), for the whole session, asked about 30 minutes after it."
    },
    "exercises": {
     "maxItems": 30,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema43"
     }
    },
    "notes": {
     "type": "string",
     "maxLength": 500
    }
   },
   "required": [
    "date",
    "type",
    "minutes",
    "rpe"
   ]
  },
  "__schema43": {
   "type": "object",
   "properties": {
    "exercise": {
     "type": "string",
     "minLength": 2,
     "maxLength": 80
    },
    "sets": {
     "type": "integer",
     "minimum": 1,
     "maximum": 20
    },
    "reps": {
     "type": "integer",
     "minimum": 1,
     "maximum": 100
    },
    "load": {
     "description": "In kg, or as the client wrote it: bodyweight, 70%, RPE 8.",
     "$ref": "#/$defs/__schema44"
    }
   },
   "required": [
    "exercise",
    "sets",
    "reps"
   ]
  },
  "__schema44": {
   "type": "string",
   "minLength": 1,
   "maxLength": 30
  },
  "__schema45": {
   "type": "object",
   "properties": {
    "date": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "sleep": {
     "type": "integer",
     "minimum": 1,
     "maximum": 7,
     "description": "Sleep quality last night, 1 (very, very good) to 7 (very, very bad)."
    },
    "fatigue": {
     "type": "integer",
     "minimum": 1,
     "maximum": 7,
     "description": "1 (very, very low) to 7 (very, very high)."
    },
    "stress": {
     "type": "integer",
     "minimum": 1,
     "maximum": 7,
     "description": "1 (very, very low) to 7 (very, very high)."
    },
    "soreness": {
     "type": "integer",
     "minimum": 1,
     "maximum": 7,
     "description": "Muscle soreness, 1 (very, very low) to 7 (very, very high)."
    }
   },
   "required": [
    "date",
    "sleep",
    "fatigue",
    "stress",
    "soreness"
   ]
  },
  "__schema46": {
   "type": "object",
   "properties": {
    "date": {
     "type": "string",
     "format": "date",
     "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    },
    "meals": {
     "maxItems": 12,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema47"
     }
    },
    "notes": {
     "type": "string",
     "maxLength": 500
    }
   },
   "required": [
    "date",
    "meals"
   ]
  },
  "__schema47": {
   "type": "object",
   "properties": {
    "time": {
     "type": "string",
     "pattern": "^([01]\\d|2[0-3]):[0-5]\\d$",
     "description": "24 hour clock: 07:30."
    },
    "items": {
     "minItems": 1,
     "maxItems": 20,
     "type": "array",
     "items": {
      "$ref": "#/$defs/__schema48"
     },
     "description": "In household measures: 2 eggs, 2 slices rye bread, butter, coffee with milk."
    },
    "context": {
     "description": "Before or after training, at a restaurant, in the client's words.",
     "$ref": "#/$defs/__schema49"
    }
   },
   "required": [
    "time",
    "items"
   ]
  },
  "__schema48": {
   "type": "string",
   "minLength": 2,
   "maxLength": 200
  },
  "__schema49": {
   "type": "string",
   "maxLength": 200
  }
 }
}

Output schema

{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "id": {
   "type": "string"
  },
  "protocol": {
   "type": "string"
  },
  "professions": {
   "type": "array",
   "items": {
    "type": "string"
   }
  },
  "status": {
   "type": "string",
   "enum": [
    "queued",
    "assigned",
    "reviewed",
    "refused"
   ]
  },
  "screening": {
   "type": "object",
   "properties": {
    "tier": {
     "anyOf": [
      {
       "type": "number",
       "const": 1
      },
      {
       "type": "number",
       "const": 2
      },
      {
       "type": "number",
       "const": 3
      }
     ]
    },
    "flags": {
     "type": "array",
     "items": {
      "type": "string"
     }
    }
   },
   "required": [
    "tier",
    "flags"
   ],
   "additionalProperties": false
  },
  "verdict": {
   "type": "object",
   "properties": {
    "ok": {
     "type": "boolean"
    },
    "kind": {
     "type": "string",
     "enum": [
      "refused",
      "clearance"
     ]
    },
    "reason": {
     "type": "string"
    }
   },
   "required": [
    "ok"
   ],
   "additionalProperties": false
  },
  "professionalId": {
   "type": [
    "string",
    "null"
   ]
  },
  "review": {
   "anyOf": [
    {
     "type": "object",
     "propertyNames": {
      "type": "string"
     },
     "additionalProperties": {
      "type": "object",
      "properties": {
       "markdown": {
        "type": "string"
       }
      },
      "required": [
       "markdown"
      ],
      "additionalProperties": false
     }
    },
    {
     "type": "null"
    }
   ]
  },
  "priceCents": {
   "type": "integer",
   "minimum": -9007199254740991,
   "maximum": 9007199254740991
  },
  "currency": {
   "type": "string",
   "enum": [
    "USD",
    "EUR"
   ]
  },
  "createdAt": {
   "type": "string"
  },
  "claimedAt": {
   "type": [
    "string",
    "null"
   ]
  },
  "reviewedAt": {
   "type": [
    "string",
    "null"
   ]
  }
 },
 "required": [
  "id",
  "protocol",
  "professions",
  "status",
  "screening",
  "verdict",
  "professionalId",
  "review",
  "priceCents",
  "currency",
  "createdAt",
  "claimedAt",
  "reviewedAt"
 ],
 "additionalProperties": false
}