---
title: "Update a version's lifecycle governance status / expiry"
method: PATCH
path: "/v1/knowledge-base/documents/{doc_id}/versions/{version_id}/governance"
tags: ["knowledge-base-governance"]
---

# Update a version's lifecycle governance status / expiry

`PATCH /v1/knowledge-base/documents/{doc_id}/versions/{version_id}/governance`

## Path parameters

- `doc_id` string, uuid, required
- `version_id` string, uuid, required

## Request body

- GovernanceUpdateRequest — PATCH body. ``extra='forbid'`` rejects unknown keys; field presence is read via ``model_fields_set`` so an explicit ``expires_at: null`` (clear) is distinguishable from an omitted ``expires_at`` (leave unchanged).
  - `governance_status` 'active' | 'retired' | 'suppressed' | 'manual_hold' | 'expired', nullable
  - `expires_at` string, date-time, nullable
  - `reason_code` string, nullable
  - `note` string, nullable
  - `idempotency_key` string, nullable

## Response `200`

Successful Response

- GovernanceVersionResponse — Governance view of a version + the computed effective serving status.
  - `id` string, uuid, required
  - `document_id` string, uuid, required
  - `knowledge_base_id` string, uuid, required
  - `version_number` integer, required
  - `state` string, required
  - `scan_status` string, required
  - `governance_status` string, required
  - `expires_at` string, date-time, nullable
  - `governance_reason_code` string, nullable
  - `governance_note` string, nullable
  - `governance_updated_by` string, uuid, nullable
  - `governance_updated_at` string, date-time, nullable
  - `governance_policy_version` string, nullable
  - `effective_serving_status` string, required

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `404` — Resource not found
- `422` — Validation Error

## Changes

- **2026-08-12** `5a5597ebb2d6` — 6 info
  - added the optional property `retry_after` to the response with the `400` status
  - added the optional property `retry_after` to the response with the `401` status
  - added the optional property `retry_after` to the response with the `404` status
  - added the optional property `retryable` to the response with the `400` status
  - …2 more

[Change history](https://skmtc.dev/oneloop-hq/apis/feather-api/changes/v1/knowledge-base/documents/:doc_id/versions/:version_id/governance/patch.md)

---

[API](https://skmtc.dev/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.dev/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/revisions/9cd7291d4228/schema)
