Restore only the exact saved-search file still held under its Trash receipt.
const url = 'https://example.com/api/v1/search/saved/example/trash/undo';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"expected_hash":"example","trash_name":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://example.com/api/v1/search/saved/example/trash/undo \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "expected_hash": "example", "trash_name": "example" }'Route: /api/v1/search/saved/{id}/trash/undo. Inputs: id. Do not automatically replay this operation after an uncertain result.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Saved search id
Request Bodyrequired
Section titled “Request Bodyrequired”Trash Undo names one opaque entry and checks its bytes before restoring it.
object
Examplegenerated
{ "expected_hash": "example", "trash_name": "example"}Responses
Section titled “Responses”The same saved search restored from Trash
A saved search: a named query that works like a smart folder (DESIGN §32
S10). It is user data, stored as one JSON file per search in
<home>/.calternal/saved-searches/<id>.json.
object
Creation time (RFC 3339, UTC).
Stable identifier (a lowercase UUID). Links use it, so a rename never breaks them.
Display name chosen by the user.
True when the search shows in the sidebar.
The raw query, operators included, exactly as the search field shows it.
Last change time (RFC 3339, UTC).
Examplegenerated
{ "created": "example", "id": "example", "name": "example", "pinned": true, "query": "example", "updated": "example"}Invalid Trash receipt
The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}The Trash entry does not belong to this saved search
The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}The Trash entry changed or the ID is already in use
The standard API error response: { "error": { ... } }.
object
Example
{ "error": { "code": "bad_request" }}