Skip to content

Soft Deletes

Domains that support soft deletes (notes, events, contacts, emails, files, diary) follow these consistent rules.

OperationMethodBehavior
ListGET /resourceReturns only active records (no deleted_at)
List with deletedGET /resource?include_deleted=trueIncludes records with deleted_at
List only deletedGET /resource?only_deleted=trueOnly records with deleted_at (trash view)
Soft deleteDELETE /resource/:idSets deleted_at = now(). Record is not removed
Permanent deleteDELETE /resource/:id?permanent=trueRemoves the record from the database. Irreversible
RestorePOST /resource/:id/restoreClears deleted_at. Record reappears in normal listings
{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"deleted_at": "2026-02-16T14:00:00Z"
}
}

Status: 200 OK

{
"data": {
"id": "550e8400-e29b-41d4-a716-446655440000",
"deleted": true
}
}

Status: 200 OK

CodeWhen
409 ALREADY_DELETEDAttempting to delete an already deleted record
409 NOT_DELETEDAttempting to restore a record that is not deleted