Topolo Docs Topolo Platform
Open workspace

Archive empty Feed workspace

Verify that all six Feed data tables are empty for the granted workspace, request canonical archival from Auth, then remove the local identity mirror. The platform decides whether archival is allowed.

Outcome

Verify that all six Feed data tables are empty for the granted workspace, request canonical archival from Auth, then remove the local identity mirror. The platform decides whether archival is allowed.

Before you start

  • Verify the authenticated identity, exact environment and pinned approved organization context before preparing an action.
  • Development stores content without encryption and uses scoped SHA-256 identifier hashes. Staging and production require envelope encryption and a provisioned application root; missing custody does not permit plaintext.
  • The published application permission is workspace:delete. Discover a granted Feed workspace and bind that exact resource. Supplied identifiers and query selectors do not grant access.
  • Authorize the documented mirror, security, external-fetch, reporting, privacy or archival effects before CLI --confirm or MCP confirm:true. A GET request can initialize a local mirror.

Discover the target

topolo whoami --json
topolo actions get app_topolo_feed.workspaces.delete --detail --json
topolo resources topolo-feed --json
topolo workspaces list topolo-feed --json
  • Select the exact granted workspace id as FEED_WORKSPACE_ID. Fixture ids authorize no live operation.

Request

DELETE /api/analytics/feed/workspaces/{workspaceId}

Save action input as payload.json. Inspect the plan for the exact path, query and body. Set FEED_WORKSPACE_ID from granted resource discovery.

Inspect and test this action in the signed action console, then perform the verification below.

Input fields

FieldRequiredTypeConstraints
workspaceIdRequiredstringCanonical Feed workspace id. Resolve it through credential-scoped grants; it does not grant access. For archival it is also the path id and must match the resolved resource.; {"minLength":1}

Exact input schema:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "workspaceId": {
      "type": "string",
      "minLength": 1,
      "description": "Canonical Feed workspace id. Resolve it through credential-scoped grants; it does not grant access. For archival it is also the path id and must match the resolved resource."
    }
  },
  "required": [
    "workspaceId"
  ],
  "additionalProperties": false
}

Effects

  • Resolves the workspace through platform grants and can insert its identity-only local mirror before the route permission check. GET is therefore a mutation for action planning; it does not create a canonical workspace or change its name.
  • Refuses if devices, impressions, digests, anomalies, sources or source-sync runs remain.
  • Only removes the local mirror after Auth accepts canonical archival. The platform may refuse; this is not a hard deletion of platform identity or a backup purge.
  • The platform archive and local mirror removal are sequential and not atomic.

Interpret the response

This action can return no new resource identifier. Follow the specific response verification and do not invent a target id.

Expect HTTP 204 with an empty body, then inspect the credential-scoped Auth workspace catalog for Feed and confirm it no longer resolves as active. An interrupted result can leave Auth archived and the mirror present; retain the request id and inspect canonical lifecycle state before repeating.

The success schema below was checked against captured handler responses. Polymorphic configuration and protected device assignment fields vary; exact envelope and SQL row fields are source-reviewed. Error examples retain their actual refusal shapes.

Success schema:

{
  "type": "string",
  "const": "",
  "description": "HTTP 204 with no response body; CLI/MCP represent an empty body as an empty string."
}

Worked examples

Actual Feed Worker response using synthetic Auth, workspace grants, in-memory D1/KV and simulated source/notification transport. No live provider, encryption audit, device enrollment or external delivery is established. Credentials are excluded or explicitly redacted. SQL result shapes are also reviewed against migrations and handlers; empty captures do not exercise every populated export store. Live publication and read-back are separate environment evidence. Refused examples demonstrate boundaries and must not be executed as successful workflows.

Refused request · HTTP 409

Actual Feed Worker response using synthetic Auth, workspace grants, in-memory D1/KV and simulated source/notification transport. No live provider, encryption audit, device enrollment or external delivery is established. Credentials are excluded or explicitly redacted. Captured scenario: archiving asks the platform, drops the mirror, and refuses a non-empty workspace.

Input · payload.json:

{
  "workspaceId": "feed_workspace_alpha"
}

CLI:

topolo actions validate app_topolo_feed.workspaces.delete --data @payload.json --json
topolo actions plan app_topolo_feed.workspaces.delete --resource-type workspace --resource-id "$FEED_WORKSPACE_ID" --data @payload.json --json

Captured local response · HTTP 409:

{
  "error": "workspace_not_empty"
}

HTTP 409. The handler refused this request. Resolve its exact cause before retrying; input validation can reject an invalid fixture before it reaches the handler.

Successful request

Actual Feed Worker response using synthetic Auth, workspace grants, in-memory D1/KV and simulated source/notification transport. No live provider, encryption audit, device enrollment or external delivery is established. Credentials are excluded or explicitly redacted. Captured scenario: archiving asks the platform, drops the mirror, and refuses a non-empty workspace.

Input · payload.json:

{
  "workspaceId": "feed_workspace_alpha"
}

CLI:

topolo actions validate app_topolo_feed.workspaces.delete --data @payload.json --json
topolo actions plan app_topolo_feed.workspaces.delete --resource-type workspace --resource-id "$FEED_WORKSPACE_ID" --data @payload.json --json
topolo actions call app_topolo_feed.workspaces.delete --resource-type workspace --resource-id "$FEED_WORKSPACE_ID" --data @payload.json --confirm --json

MCP tool and arguments:

{
  "tool": "topolo_call_action",
  "arguments": {
    "actionId": "app_topolo_feed.workspaces.delete",
    "input": {
      "workspaceId": "feed_workspace_alpha"
    },
    "resourceType": "workspace",
    "resourceId": "<identifier returned by granted resource discovery>",
    "confirm": true
  }
}

Captured local response · HTTP 204:

HTTP 204. Expect HTTP 204 with an empty body, then inspect the credential-scoped Auth workspace catalog for Feed and confirm it no longer resolves as active. An interrupted result can leave Auth archived and the mirror present; retain the request id and inspect canonical lifecycle state before repeating.

Verify the result

  • Expect HTTP 204 with an empty body, then inspect the credential-scoped Auth workspace catalog for Feed and confirm it no longer resolves as active.
  • An interrupted result can leave Auth archived and the mirror present; retain the request id and inspect canonical lifecycle state before repeating.

Errors and recovery

  • workspace_not_empty (HTTP 409): Inspect the exact handler refusal and correct the target, window, URL or confirmation before preparing another authorized request.

Auth, action-input validation and platform resource resolution can refuse a request before its handler. Retain the exact error, request id and context; requesting another context is not a legitimate way to bypass a refusal.

Recovery boundary

No Feed restore operation is published. Do not create a replacement workspace and call it restoration. No narrow deletion actions for the six data tables are published; an occupied workspace must be retained or handled by an explicitly authorized lifecycle operation.

Evidence

Actual Feed Worker response using synthetic Auth, workspace grants, in-memory D1/KV and simulated source/notification transport. No live provider, encryption audit, device enrollment or external delivery is established. Credentials are excluded or explicitly redacted. SQL result shapes are also reviewed against migrations and handlers; empty captures do not exercise every populated export store. Live publication and read-back are separate environment evidence. Capture digests and test scenarios are retained in the source fixture records.