Place or lift a legal hold
A hold blocks the EAS-115 retention purge sweep unconditionally, regardless of age, and clears scheduledPurgeAt immediately if the document was already queued. Lifting a hold does not re-queue it — the next sweep tick re-evaluates it like any other document. Owner-scoped, same as void/delete.
View as MarkdownAuthorization
bearer In: header
Path Parameters
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/documents/string/legal-hold" \ -H "Content-Type: application/json" \ -d '{ "hold": true }'{ "document": { "id": "string", "name": "string", "url": "string", "status": "string", "created": "2019-08-24T14:15:22Z", "modified": "2019-08-24T14:15:22Z", "size": 0, "pages": 0, "templateId": "string", "hasFile": true, "hasFinalFile": true, "files": [ { "id": "string", "name": "string", "position": 0, "size": 0, "pages": 0, "created": "2019-08-24T14:15:22Z", "status": "ready", "conversionError": "string" } ], "signingMode": "string", "message": "string", "sentAt": "2019-08-24T14:15:22Z", "completedAt": "2019-08-24T14:15:22Z", "voidedAt": "2019-08-24T14:15:22Z", "voidReason": "string", "declinedAt": "2019-08-24T14:15:22Z", "expiresAt": "2019-08-24T14:15:22Z", "autoRemindDays": 0, "lastRemindedAt": "2019-08-24T14:15:22Z", "legalHold": true, "scheduledPurgeAt": "2019-08-24T14:15:22Z", "visibility": "string", "ownerId": "string", "requiresNotarization": true, "notaryState": "string", "recipients": [ { "id": "string", "name": "string", "email": "string", "role": "string", "status": "string", "orderIndex": 0, "signedAt": "2019-08-24T14:15:22Z", "viewedAt": "2019-08-24T14:15:22Z", "declinedAt": "2019-08-24T14:15:22Z", "declineReason": "string", "hasAccessCode": true, "signature": "string", "isGroup": true, "groupLabel": "string", "signedByName": "string", "signedByEmail": "string", "members": [ { "id": "string", "name": "string", "email": "string", "viewedAt": "2019-08-24T14:15:22Z", "declinedAt": "2019-08-24T14:15:22Z" } ], "reassignedFromName": "string", "reassignedFromEmail": "string", "reassignReason": "string", "reassignedAt": "2019-08-24T14:15:22Z" } ], "fields": [ { "id": "string", "type": "signature", "x": 0, "y": 0, "width": 0, "height": 0, "page": 0, "required": true, "label": "string", "value": "string", "recipientId": "string", "fileId": "string", "config": {} } ] }}Certificate of completion as a standalone PDF
The same certificate that is appended to the signed document at completion — original SHA-256, every signer with their consent and signing timestamps, IP and user agent, and the full hash-chained event log — rendered on its own so it can be filed or sent to a counterparty without the agreement itself. Generated per request from the stored rows, so it stays current as the trail grows, and it is available before completion.
Documents queued for retention purge
Every document the caller can see (readable scope — owned rows plus the workspace's org-shared ones) currently flagged for deletion (scheduledPurgeAt set), soonest first — the EAS-115 "see what's scheduled before it happens" surface. Sign has no separate admin role today, so this is scoped like every other list, not gated any tighter.