---
title: "Patch Care Team Member"
method: PATCH
path: "/care-team-members/{junction_id}"
tags: ["care-team"]
---

# Patch Care Team Member

`PATCH /care-team-members/{junction_id}`

## Request

- Base URL: `https://api.projectindi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.projectindi.com/care-team-members/{junction_id}`
- Auth: none declared

Update a care-team-member row scoped to one junction.

Authentication: JWT required.

Authorization: enforced by RLS - the caller must have family access
to a child whose ``child_care_team`` row matches ``junction_id``.
Cross-family callers see the row as not-found (RLS hides it from the
SELECT we use to discover ``care_team_member_id``); we surface that
as a 404 rather than 403 to avoid leaking that the junction exists.

## Path parameters

- `junction_id` string, uuid, required: Junction id (child_care_team.id)

## Request body

- PatchCareTeamMemberRequest: Partial update payload for a care-team-member junction row. Future fields (e.g. ``disconnected_at``) plug in here without a new route. Every field is optional so a caller can toggle one knob at a time. ``model_dump(exclude_unset=True)`` is what gates "did the caller actually pass this value" - a None default would conflate "explicitly cleared" with "not sent".
  - `auto_match_opt_in` boolean, nullable
  - `access_level` string, nullable

## Response `200`

Successful Response

- PatchCareTeamMemberResponse
  - `junction_id` string, required
  - `care_team_member_id` string, required
  - `auto_match_opt_in` boolean, required
  - `access_level` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles.md) - [All operations](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles/llms.txt) - [OpenAPI document](https://skmtc.dev/projectindi/apis/indi-agent-api-first-principles/revisions/25a7813e21fd?raw)
