Trash
Base path: /api/v1/trash. Lists soft-deleted items for your account (notes, folders, members, layout rows, custom field definitions, front history sessions) in one array, and supports permanent bulk purge. Timestamps are Unix milliseconds; purgeAt follows your account retention (same as the app Trash page).
Authentication uses the trash API key scope: trash: read for listing, trash: read_write for purge.
See Scopes and Errors for shared behavior.
Restore via other endpoints
This reference does not add a generic restore URL. Trashed entries restore with POST /api/v1/entries/{entryId}/restore (entries scope). Trashed custom field definitions restore with POST /api/v1/members/{memberId}/custom-fields/{fieldId}/restore (customFields scope).
List trash
GET/api/v1/trash
Query parameters
| Parameter | Type | Notes |
|---|---|---|
type | string | Optional. One of: entry, directory, member, directoryLayout, customFieldDefinition, frontSession. Omit to return all types merged (newest deletedAt first). |
limit | integer | Optional, 1–500. Default matches server (200) when omitted. |
Response
200
JSON array of trash rows.
{
"type": "entry",
"id": "f1e2d3c4-b5a6-7890-abcd-ef1234567890",
"name": "My note",
"deletedAt": 1710000000000,
"purgeAt": 1712592000000,
"originalLocation": "Optional human-readable path when available"
}Each object has type, id, name, deletedAt, purgeAt. originalLocation is present on some types when the server can resolve it.
Examples
cURL
curl -sS \
-H "Authorization: Bearer YOUR_TOKEN" \
"https://api.floralitys.com/api/v1/trash?limit=200"JavaScript (fetch)
const url = new URL("https://api.floralitys.com/api/v1/trash");
url.searchParams.set("limit", "200"); // optional, 1–500
// url.searchParams.set("type", "entry"); // optional filter
const res = await fetch(url.toString(), {
headers: { Authorization: "Bearer YOUR_TOKEN" },
});
if (!res.ok) throw new Error(await res.text());
const items = await res.json();Status codes
- 200: JSON array (may be empty)
- 400: invalid query parameters
- 401 / 403: auth / missing
trash: read
Bulk purge (permanent delete)
POST/api/v1/trash/purge
Request body (JSON)
Strict object: items: array of discriminated objects, each { "type": "…", "id": "uuid" }. At most 200 items per request. Every type must be one of: entry, directory, member, directoryLayout, customFieldDefinition, frontSession. Items must already be in trash (same rules as the app Trash page); otherwise the server returns 400 with a plain message.
Response
204: no body on success.
Examples
cURL
curl -sS -X POST \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"items":[{"type":"entry","id":"ENTRY_UUID"}]}' \
"https://api.floralitys.com/api/v1/trash/purge"JavaScript (fetch)
const res = await fetch("https://api.floralitys.com/api/v1/trash/purge", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_TOKEN",
"Content-Type": "application/json",
},
body: JSON.stringify({
items: [
{ type: "entry", id: "ENTRY_UUID" },
{ type: "member", id: "MEMBER_UUID" },
],
}),
});
if (res.status !== 204) throw new Error(await res.text());Status codes
- 204: all items purged (or empty items array)
- 400: invalid JSON, validation, not in trash, not found, or over limit
- 401 / 403: auth / missing
trash: read_write
