Immutable rows — dependant fields are never updated in place. Every change produces a new row (
status = ACTIVE); the old row becomes status = DISCARDED. Follow previous_version_id links to walk version history.Overview
A dependant represents a family member linked to a primary user (spouse, child, parent, sibling, etc.). TheSELF dependant is a special row that mirrors the user’s own identity — it is managed automatically by the server and cannot be created or deleted via this API.
Immutability Model
When youPATCH /users/{user_id}/dependants/{id}, the server:
- Sets the old row
status → DISCARDED - Inserts a new row with a fresh UUID and
previous_version_id = old_id - Returns the new (current) row
previous_version_id points back to the discarded row, so version history is walked newest-to-oldest.
Auth Guards by Endpoint
SELF Dependant
Every user has exactly one activerelationship = SELF dependant. It is created automatically on POST /users/{user_id}/complete_onboarding (which takes a required salutation field) and re-versioned when PATCH /users/{user_id} changes first_name, last_name, dob, or gender. Attempting to create, update, or delete SELF via the dependants API returns 400 DE_603.
Exact-Duplicate Skip on Create
POST /users/{user_id}/dependants and POST /users/{user_id}/dependants/bulk both check, before inserting, whether an active row already exists with every field of the payload identical (relationship, salutation, first_name, last_name, date_of_birth, gender).
- Exact match found → no row is inserted. The response (still 201) carries the existing row.
- Any field differs (including
date_of_birth) → a new row is inserted.
Relationship Values
Salutation Values
salutation is required on create and present on every response; it is optional on update (send it only to change it):
Endpoints
POST /users/{user_id}/dependants
Add a new dependant.
relationship = SELF not allowed.POST /users/{user_id}/dependants/bulk
Atomically insert up to 50 dependants in one request.
relationship = SELF not allowed.GET /users/{user_id}/dependants
Paginated list. Defaults to
status = ACTIVE. JWT users see only their own.GET /users/{user_id}/dependants/{id}
Fetch a single dependant by UUID.
PATCH /users/{user_id}/dependants/{id}
Update fields. Produces a new immutable row; old row is discarded.
DELETE /users/{user_id}/dependants/{id}
Discard a dependant (
status → DISCARDED). SELF not allowed.