POST /api/public/clients/sign-up

A client account by email and password. The page uses Apple or Google instead; this is the API's way.

Surface: public. Who may call: public. Key: public.client.signUp.

Example request

curl -X POST https://caremcp.com/api/public/clients/sign-up \
  -H "Content-Type: application/json" \
  -d '{"email":"anna@example.com","password":"a long enough password","birthDate":"1984-03-12","location":{"country":"SE"},"language":"sv","healthConsent":true}'

Example input

{
  "email": "anna@example.com",
  "password": "a long enough password",
  "birthDate": "1984-03-12",
  "location": {
    "country": "SE"
  },
  "language": "sv",
  "healthConsent": true
}

Input schema

{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "email": {
   "type": "string",
   "maxLength": 200,
   "format": "email",
   "pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
  },
  "password": {
   "type": "string",
   "minLength": 10,
   "maxLength": 200
  },
  "birthDate": {
   "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])))$"
  },
  "location": {
   "type": "object",
   "properties": {
    "country": {
     "type": "string",
     "pattern": "^[A-Z]{2}$"
    },
    "region": {
     "type": "string",
     "pattern": "^[A-Z0-9]{1,3}$"
    }
   },
   "required": [
    "country"
   ]
  },
  "language": {
   "type": "string",
   "pattern": "^[a-z]{2}(-[A-Z]{2})?$"
  },
  "healthConsent": {
   "type": "boolean",
   "const": true,
   "description": "The client has read the Health data notice at /health-data (version 2026-09-24) and gives explicit consent to a professional reading the health data in their briefs."
  }
 },
 "required": [
  "email",
  "password",
  "birthDate",
  "location",
  "language",
  "healthConsent"
 ]
}

Output schema

{
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "type": "object",
 "properties": {
  "token": {
   "type": "string"
  },
  "kind": {
   "type": "string",
   "enum": [
    "client",
    "professional",
    "organisation"
   ]
  },
  "id": {
   "type": "string"
  }
 },
 "required": [
  "token",
  "kind",
  "id"
 ],
 "additionalProperties": false
}