# RegisterRequest

Model ID: `patient.RegisterRequest`

Request body for POST /auth/register.

Required fields match what ``PractitionerRegistrationService.register()``
reads via ``payload[...]`` (KeyError on absence). ``tenant_id`` is read
indirectly via ``_reg_svc(body.get("tenant_id"))`` so the runtime-param
inference does not mark it required, but it is genuinely required at
runtime; the canonical model reflects the inferred required set to stay
semantically equivalent, leaving the handler's manual validation as the
real enforcement.

Type: `object`

## Fields

| Field | Type | Required | Format | Allowed values | Default | Nullable | Description |
|---|---|---:|---|---|---|---:|---|
| `address` | `object|null` | No |  |  | `null` | Yes | Mailing address, optional. Same shape as Address. |
| `addresses` | `array|null` | No |  |  | `null` | Yes | List of addresses, optional. |
| `attributes` | `object|null` | No |  |  | `null` | Yes | Arbitrary JSON-compatible metadata key/value pairs. |
| `created_by` | `string|null` | No |  |  | `null` | Yes | Person FHIR resource ID of the creating field agent, or 'self'. |
| `date_of_birth` | `string` | Yes | date |  |  | No | ISO 8601 date of birth (YYYY-MM-DD). |
| `drivers_license` | [`DriversLicenseSubmission`](./DriversLicenseSubmission.md) | No |  |  | `null` | Yes | Optional driver's license image + text fields captured during pre-registration ID scan. When present, the image is stored as a FHIR DocumentReference and the text fields are mirrored to Athena after the patient record is created. |
| `email` | `string` | Yes |  |  |  | No | Patient's email; used as the Cognito login username and OTP delivery address. |
| `ethnicity` | [`Ethnicity`](./Ethnicity.md) | No |  |  | `null` | Yes | Hispanic or Latino ethnicity status, optional. Mirrored to Athena `ethnicitycode`. |
| `first_name` | `string` | Yes |  |  |  | No | Patient's given (first) name. |
| `flags` | `object|null` | No |  |  | `null` | Yes | Boolean feature/state flags keyed by flag name. Recognized key: AUTO_VERIFY_EMAIL — if true, skips email OTP verification and auto-logs the patient in. |
| `last_name` | `string` | Yes |  |  |  | No | Patient's family (last) name. |
| `marital_status` | [`MaritalStatus`](./MaritalStatus.md) | No |  |  | `null` | Yes | Marital status, optional. Mirrored to Athena `maritalstatus`. |
| `password` | `string` | Yes |  |  |  | No | Initial password, minimum 8 characters. |
| `phone` | `string|null` | No |  |  | `null` | Yes | E.164 phone number, optional. |
| `preferred_language` | `string|null` | No |  |  | `null` | Yes | BCP-47 language tag of the preferred language, optional. Mirrored to Athena `language6392code`. |
| `race` | `string|array|null` | No |  |  | `null` | Yes | One race value, or a list of them. |
| `sex_at_birth` | [`SexAtBirth`](./SexAtBirth.md) | No |  |  | `null` | Yes | Sex assigned at birth: male, female, intersex, or unknown. |
| `tenant_id` | `string|null` | No |  |  | `null` | Yes | Tenant to register the patient into; resolves which Cognito pool the account is created in. |

## Example

None declared in canonical OpenAPI.
