PlatformXeDocs
Get API Key

Access Overrides

API reference for requesting and processing document deletion overrides.

Some documents are protected by retention policies or restricted deletableBy settings. When an operator needs to delete a protected document, they must request a deletion override. Another authorized user then approves or rejects the request.

This provides an auditable two-person approval flow for sensitive document deletion.

Request a deletion override

POST /api/v1/storage/fixed/overrides

Scope: storage:delete

Request body

FieldTypeRequiredDescription
documentIdstringYesID of the document to delete
reasonstringYesJustification for the deletion

Response

{
  "success": true,
  "data": {
    "id": "ovr_abc123",
    "documentId": "doc_xyz789",
    "requestedById": "admin_001",
    "reason": "Duplicate contract uploaded in error",
    "status": "PENDING",
    "reviewedById": null,
    "reviewNotes": null,
    "createdAt": "2026-04-05T10:00:00.000Z",
    "updatedAt": "2026-04-05T10:00:00.000Z"
  }
}
FieldTypeDescription
idstringOverride request ID
documentIdstringThe document targeted for deletion
requestedByIdstringID of the user who requested the override
reasonstringStated justification
statusstringPENDING, APPROVED, or REJECTED
reviewedByIdstring or nullID of the reviewer (null until reviewed)
reviewNotesstring or nullReviewer's notes

Process a deletion override

PATCH /api/v1/storage/fixed/overrides/:overrideId

Scope: storage:delete

Request body

FieldTypeRequiredDescription
approvedbooleanYestrue to approve, false to reject
reviewNotesstringNoNotes from the reviewer

Response

Returns the updated override record with status set to APPROVED or REJECTED.

When an override is approved, the document can then be deleted via the standard DELETE endpoint.

Override workflow

1. Operator attempts DELETE /documents/:id
   -> Returns DELETION_REQUIRES_OVERRIDE error

2. Operator creates override request
   POST /overrides { documentId, reason }
   -> Returns override with status: PENDING

3. Authorized reviewer processes the override
   PATCH /overrides/:id { approved: true }
   -> Override status becomes APPROVED

4. Operator retries DELETE /documents/:id
   -> Document is soft-deleted

Examples

Request and approve an override

curl

# Step 1: Request override
curl -X POST https://api.platformxe.com/api/v1/storage/fixed/overrides \
  -H "Content-Type: application/json" \
  -H "x-api-key: pxk_live_your_api_key_here" \
  -d '{
    "documentId": "doc_xyz789",
    "reason": "Duplicate contract uploaded in error"
  }'

# Step 2: Approve override
curl -X PATCH https://api.platformxe.com/api/v1/storage/fixed/overrides/ovr_abc123 \
  -H "Content-Type: application/json" \
  -H "x-api-key: pxk_live_your_api_key_here" \
  -d '{
    "approved": true,
    "reviewNotes": "Confirmed duplicate, safe to delete"
  }'

# Step 3: Delete the document
curl -X DELETE https://api.platformxe.com/api/v1/storage/fixed/documents/doc_xyz789 \
  -H "x-api-key: pxk_live_your_api_key_here"

TypeScript SDK

import { PlatformXe } from '@caldera/platformxe-sdk';

const px = new PlatformXe({ apiKey: 'pxk_live_your_api_key_here' });

// Request override
const override = await px.documents.requestOverride({
  documentId: 'doc_xyz789',
  reason: 'Duplicate contract uploaded in error',
});

console.log(override.status);
// "PENDING"

// Approve override (by a different authorized user)
const approved = await px.documents.processOverride(override.id, {
  approved: true,
  reviewNotes: 'Confirmed duplicate, safe to delete',
});

console.log(approved.status);
// "APPROVED"

// Now delete the document
await px.documents.delete('doc_xyz789');

Python SDK

from platformxe import PlatformXe

px = PlatformXe(api_key="pxk_live_your_api_key_here")

# Request override
override = px.documents.request_override({
    "documentId": "doc_xyz789",
    "reason": "Duplicate contract uploaded in error"
})

# Approve override
px.documents.process_override(override["id"], {
    "approved": True,
    "reviewNotes": "Confirmed duplicate, safe to delete"
})

# Delete the document
px.documents.delete("doc_xyz789")

Reject an override

await px.documents.processOverride('ovr_abc123', {
  approved: false,
  reviewNotes: 'This contract is still active, cannot delete',
});

Error responses

CodeDescription
BAD_REQUESTMissing documentId or reason
NOT_FOUNDDocument or override does not exist
FORBIDDENAPI key lacks storage:delete scope
CONFLICTAn override request already exists for this document
RATE_LIMITEDRate limit exceeded