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
| Field | Type | Required | Description |
|---|---|---|---|
documentId | string | Yes | ID of the document to delete |
reason | string | Yes | Justification 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"
}
}
| Field | Type | Description |
|---|---|---|
id | string | Override request ID |
documentId | string | The document targeted for deletion |
requestedById | string | ID of the user who requested the override |
reason | string | Stated justification |
status | string | PENDING, APPROVED, or REJECTED |
reviewedById | string or null | ID of the reviewer (null until reviewed) |
reviewNotes | string or null | Reviewer's notes |
Process a deletion override
PATCH /api/v1/storage/fixed/overrides/:overrideId
Scope: storage:delete
Request body
| Field | Type | Required | Description |
|---|---|---|---|
approved | boolean | Yes | true to approve, false to reject |
reviewNotes | string | No | Notes 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
| Code | Description |
|---|---|
BAD_REQUEST | Missing documentId or reason |
NOT_FOUND | Document or override does not exist |
FORBIDDEN | API key lacks storage:delete scope |
CONFLICT | An override request already exists for this document |
RATE_LIMITED | Rate limit exceeded |