---
title: "Update the workspace data & privacy settings"
method: PATCH
path: "/v1/data-privacy"
tags: ["data-privacy"]
---

# Update the workspace data & privacy settings

`PATCH /v1/data-privacy`

## Request

- Base URL: `https://api.patricia.app` (the document declares no server; this is the origin it was published from)
- URL: `https://api.patricia.app/v1/data-privacy`
- Auth: HTTP bearer

Set the data-retention window (90 or 365 days, or 0 for unlimited), whether Patricia may learn from the workspace's data, the topics she must never repeat, and/or the Slack channels kept out of the Slack message cache. Retention drives the deletion sweeps; turning learning off stops Patricia learning from this workspace's activity; each list is replaced whole, so an empty list turns that control off. Excluding a channel prevents caching its posted and fetched messages, bypasses cached history reads, and queues deletion of its cached messages. Patricia's own conversations remain stored separately. Only the fields provided are changed.

## Headers

- `X-Tenant-Id` string, nullable

## Request body

- DataPrivacyUpdate: PATCH body: every field optional; only what's provided is written. ``data_retention_days`` must be exactly one of the three allowed windows (``90`` / ``365`` / ``0``). Strict types on purpose: lax coercion would turn a JSON ``false`` into ``0`` (Python ``False == 0``) and silently select UNLIMITED retention. Strict typing 422s anything that isn't a real JSON number / boolean. ``redacted_topics`` and ``excluded_channel_ids`` each replace the whole list (each is one control, edited as a whole), so an explicit ``[]`` clears it and turns that control off. Omitting a field leaves it untouched.
  - `data_retention_days` integer, nullable: Keep workspace data for 90 or 365 days. Zero means unlimited retention.
  - `data_use_improve_enabled` boolean, nullable: Allow Patricia to learn from workspace data to improve her work.
  - `redacted_topics` string[], nullable: The complete list of topics Patricia must never repeat, in plain words. Send an empty list to turn the filter off. Omit the field to leave the saved list unchanged.
  - `excluded_channel_ids` string[], nullable: The complete list of channel ids kept out of the Slack message cache. Use it for channels such as HR or an executive channel. Send an empty list to permit caching every channel again. Omit the field to leave the saved list unchanged. An entry that is not a channel id is dropped, so the response is always the list in force. Patricia's own conversations remain stored separately.

## Response `200`

Successful Response

- DataPrivacyResponse: The caller's workspace data & privacy settings (with defaults applied).
  - `data_retention_days` integer, required
  - `data_use_improve_enabled` boolean, required
  - `redacted_topics` string[], required: Topics Patricia must never repeat, in plain words (for example 'pricing' or 'legal'). She removes any part of a meeting transcript or summary that touches one and leaves a short note that something was removed. Any workspace that has not set its own list uses a recommended one, so this is always the list actually in force; save an empty list to turn the filter off.
  - `excluded_channel_ids` string[], required: Channel ids kept out of the Slack message cache, such as an HR or executive channel. Empty means the cache permits every channel Patricia is in, which is the default. This is always the list in force. Patricia's own conversations remain stored separately.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden. Inspect response body `code` for the specific reason (for example: PERMISSION_DENIED, EMAIL_NOT_VERIFIED, TENANT_ACCESS_REQUIRED, ROLE_UNRESOLVED)
- `404`: Not found
- `409`: Conflict
- `422`: Validation error

---

[API](https://skmtc.dev/patricia/apis/patricia-api.md) · [All operations](https://skmtc.dev/patricia/apis/patricia-api/llms.txt) · [OpenAPI document](https://skmtc.dev/patricia/apis/patricia-api/revisions/0dfb44495ea1?raw)
