{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/fusehealth-com/json-schema/fusehealth-com-checkout-session-create-schema.json",
  "title": "CheckoutSessionCreate",
  "x-generated": "2026-11-09",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/fusehealth-com-openapi.json#/components/schemas/CheckoutSessionCreate",
  "type": "object",
  "required": [
    "programId"
  ],
  "properties": {
    "programId": {
      "type": "string",
      "format": "uuid",
      "description": "Must belong to the key's own clinic (404 otherwise)."
    },
    "metadata": {
      "type": "object",
      "additionalProperties": true,
      "description": "Brand-supplied data, stored verbatim and capped at 16 KiB (DB CHECK constraint plus model-layer validation). FUSE never displays or acts on it, with one exception: the marketing-attribution keys lead_id (or legacy leadId), utm_source, utm_medium, utm_campaign, utm_content, gclid and fbclid are copied onto the resulting order and echoed on the intake.started webhook. Every other key is ignored.\n"
    },
    "successUrl": {
      "type": [
        "string",
        "null"
      ],
      "format": "uri",
      "description": "Absolute https:// URL only — http/javascript:/data: and relative paths are rejected. Navigates the checkout IFRAME after payment, never the brand's page — move your own page from the fuse:completed event instead.\n"
    }
  }
}