Permanently erase Calendar-owned data across an organization.
Action: app_topolo_calendar.privacy.erase · DELETE /api/privacy
Declared permission: app_topolo_calendar.privacy:delete. For authorized Calendar users; permissions and resource access still apply.
Before you start
- Use the current credential to confirm the production organization and inspect this exact action before preparing a call.
- Declared permission: app_topolo_calendar.privacy:delete. Permission discovery is not a grant.
- The target is the authenticated organization across its Calendar-owned workspaces; a resource selector does not reduce the operation to one workspace.
- Validate and plan the exact payload, obtain effect-specific authorization, then execute unchanged only in a separately authorized operational task. Do not run these synthetic inputs.
Inputs and field meanings
| Field | Presence | Declared constraint | Meaning |
|---|---|---|---|
confirmation | required | string; const="ERASE" | Exact literal ERASE for an explicitly authorized organization-wide Calendar erasure. |
Worked request and response
Source-reviewed illustration only. Nothing below was executed; all identifiers, counts, states, credentials and URLs are synthetic. Replace identifiers through discovery before any separately authorized call.
Resource context: organization; it is not an extra action input field.
Illustrative action input:
{
"confirmation": "ERASE"
}
Illustrative HTTP 200 source response:
{
"erasure": {
"erased": true,
"erased_at": "2026-11-01T00:00:00.000Z",
"deleted_rows": 17,
"deleted_objects": 1
}
}
The counts are synthetic illustrations. erasure.erased acknowledges source completion, not erasure of other apps’ data, external provider records, delivered messages or recipient calendars. The source retains a hashed erasure receipt.
The illustrative response passes the declared structural schema. This establishes only schema compatibility, not deployed shape, values, authorization or business outcome.
Effects and verification
- Deletes Calendar-owned organization hosts, types, bookings, availability, local external references and avatars, then records a retention receipt.
- Does not notify invitees or establish remote Nexus/provider deletion; do not equate local-reference deletion with external credential revocation.
- Use the authorized owner’s privacy verification procedure to confirm organization scope, supported remaining stores and receipt handling; preserve partial failure rather than claiming atomic rollback.
Refusals and recovery
Selected source refusals are listed below; runtime middleware can return additional structured errors.
| HTTP | Error | Supported response |
|---|---|---|
| 403 | forbidden | Reconcile the declared permission, organization and verified resource grant with the legitimate access owner; do not switch context to bypass a refusal. |
| 400 | erase_confirmation_required | The source requires the literal ERASE confirmation; obtain scope approval before supplying it. |
Recovery: No automatic restoration is published. Confirm the organization-wide scope, retention needs and required approvals before the literal ERASE request; do not run an export or erase as a demonstration.
After an uncertain mutation, reconcile the named records and provider/delivery evidence before repeating it.
Related actions
app_topolo_calendar.privacy.export: Export Calendar-owned records for the authenticated organization.
Declared schemas and provenance
The hidden action guide carries these exact current declared schemas. They are not rewritten to make the illustrations pass.
Input schema:
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"properties": {
"confirmation": {
"type": "string",
"const": "ERASE"
}
},
"required": [
"confirmation"
],
"additionalProperties": false
}
Output schema:
{
"type": "object",
"title": "Erase organization Calendar data response",
"description": "Operation result returned by privacy.erase.",
"properties": {
"success": {
"type": "boolean"
},
"id": {
"type": "string"
},
"data": {
"oneOf": [
{
"type": "object",
"title": "privacy record",
"properties": {
"id": {
"type": "string",
"description": "Stable identifier when the privacy exposes one."
}
},
"additionalProperties": true
},
{
"type": "object",
"additionalProperties": true
}
]
},
"result": {
"type": "object",
"additionalProperties": true
},
"message": {
"type": "string"
}
},
"additionalProperties": true,
"x-topolo-contract-source": "derived-action-metadata",
"x-topolo-contract-precision": "structural"
}
Source: TopoloCalendar@b378ceb73800ee1d1e6c4ff6f0b4179918cf632c, apps/api/src/routes/privacy.ts. Current catalog metadata and source were compared without executing the application.
- Source-reviewed synthetic input/response; not captured or executed.
- Source revision is not proof of current deployment, caller access, provider connection or notification delivery.
- The illustrative response passes the declared structural schema. This establishes only schema compatibility, not deployed shape, values, authorization or business outcome.