---
title: "Update a case (retention owner-only) · 0 credits"
method: PATCH
path: "/api/v1/cases/{caseId}"
tags: ["Cases"]
---

# Update a case (retention owner-only) · 0 credits

`PATCH /api/v1/cases/{caseId}`

## Request

- Base URL: `https://legal.nexusquantum.legal`
- URL: `https://legal.nexusquantum.legal/api/v1/cases/{caseId}`
- Auth: HTTP bearer

Owner-only (firm member → 403). Retention semantics IDENTICAL to the UI's (shared helper): persistent → stops the clock; ephemeral → rearms with the requested|stored|168 TTL; a TTL adjustment without a mode change only rearms if it is already ephemeral. Strict v1 validation: invalid enum/TTL → 400 (nothing is silently clamped).

## Path parameters

- `caseId` string, uuid, required

## Request body

- object
  - `name` string
  - `description` string, nullable
  - `jurisdiction` string, nullable
  - `status` 'active' | 'archived' | 'closed'
  - `retention_mode` 'persistent' | 'ephemeral': Lifecycle of the case SOURCE documents. REQUIRED, WITH NO DEFAULT, when creating through the API: `persistent` = sources are kept until explicitly deleted (firm archive); `ephemeral` = sources are PURGED when `ephemeral_ttl_hours` expires (sliding: reset on every ingest). The choice is audited (created_via=api). GDPR Art. 25 / Art. 5(1)(e).
  - `ephemeral_ttl_hours` integer
  - `pii_gatekeeper` 'on' | 'off'

## Response `200`

{ case: Case }

## Other responses

- `400`: INVALID_RETENTION_MODE | INVALID_TTL | TTL_WITHOUT_EPHEMERAL | VALIDATION_ERROR
- `403`: FORBIDDEN (not the owner) | PII_OPTOUT_NOT_ENABLED
- `404`: CASE_NOT_FOUND

---

[API](https://skmtc.dev/nexusquantum/apis/nexus-legal-api.md) · [All operations](https://skmtc.dev/nexusquantum/apis/nexus-legal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nexusquantum/apis/nexus-legal-api/revisions/4084d8d4eb0b?raw)
