---
title: "Archive the current ACTIVE policy using CAS"
method: POST
path: "/redaction/policies/{name}/archive"
tags: ["redaction-policies"]
---

# Archive the current ACTIVE policy using CAS

`POST /redaction/policies/{name}/archive`

Leaves any DRAFT unchanged. null means that no ACTIVE version is expected. Required scope: `policy:redaction:manage`.

## Request body

- RedactionPolicyCASRequest
  - `expectedActiveVersion` string, nullable, required — null requires that no ACTIVE version currently exists.

## Response `200`

Current policy detail after archive

- RedactionPolicyDetail
  - `name` string, required
  - `source` 'BUILT_IN' | 'TENANT', required
  - `description` string, nullable, required
  - `activeVersion` RedactionPolicyVersion, required
    - `name` string, required
    - `source` 'BUILT_IN' | 'TENANT', required
    - `version` string, required
    - `status` 'DRAFT' | 'ACTIVE' | 'ARCHIVED', required
    - `schemaVersion` integer, required
    - `description` string, nullable, required
    - `definition` RedactionPolicyDefinition, required
      - `enabledCategories` string[], required
      - `businessConfidential` RedactionPolicyBusinessConfidential, required
        - `definition` string, required
        - `include` RedactionPolicyBusinessTarget[], required
          - `text` string, required
          - `mode` 'exact' | 'value_clause' | 'exact_or_value_clause', required
        - `exclude` string[], required
        - `examples` string[], required
    - `contentDigest` string, required
    - `createdAt` string, date-time, nullable, required
    - `activatedAt` string, date-time, nullable, required
    - `archivedAt` string, date-time, nullable, required
  - `draftVersion` RedactionPolicyVersion, required
    - `name` string, required
    - `source` 'BUILT_IN' | 'TENANT', required
    - `version` string, required
    - `status` 'DRAFT' | 'ACTIVE' | 'ARCHIVED', required
    - `schemaVersion` integer, required
    - `description` string, nullable, required
    - `definition` RedactionPolicyDefinition, required
      - `enabledCategories` string[], required
      - `businessConfidential` RedactionPolicyBusinessConfidential, required
        - `definition` string, required
        - `include` RedactionPolicyBusinessTarget[], required
          - `text` string, required
          - `mode` 'exact' | 'value_clause' | 'exact_or_value_clause', required
        - `exclude` string[], required
        - `examples` string[], required
    - `contentDigest` string, required
    - `createdAt` string, date-time, nullable, required
    - `activatedAt` string, date-time, nullable, required
    - `archivedAt` string, date-time, nullable, required

## Other responses

- `400` — Bad Request - policy schema, normalization, size, quota, cursor, or path validation failed
- `401` — Unauthorized - Authentication failed
- `403` — Forbidden - requires an API key with the `policy:redaction:manage` scope; Dashboard bearer authentication is rejected
- `404` — Not Found - name/version is unknown, inactive where required, or belongs to another tenant
- `409` — Conflict - DRAFT, immutable built-in, delete, unchanged version, or ACTIVE CAS conflict
- `503` — Service Unavailable - tenant redaction policy store is unavailable

## Changes

> 65 revisions in range; 12 not diffed.

- **2026-08-03** `8e90404f8bf2` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/qlonolink/apis/qaip-apis/changes/redaction/policies/:name/archive/post.md)

---

[API](https://skmtc.dev/qlonolink/apis/qaip-apis.md) · [All operations](https://skmtc.dev/qlonolink/apis/qaip-apis/llms.txt) · [OpenAPI document](https://skmtc.dev/qlonolink/apis/qaip-apis/revisions/430440bbcc56?raw)
