List storage-deletion outbox jobs

Platform-operator surface. Requires an authentic first-party dashboard SESSION whose realm is platform AND whose email is in AUTH_PLATFORM_ADMIN_EMAILS; API keys and OIDC-issued bearer tokens are refused outright, whatever their scopes. Lists jobs from the transactional storage-deletion outbox, newest-first, keyset-paginated on (created_at, id). dead = pending jobs past the dead-letter attempt threshold (still retrying — the threshold is a visibility line, not an abandon point). The listing is instance-global: rows carry the bucket + in-bucket key of objects belonging to ANY organization. Does NOT require X-Org-Id: the operator may belong to no organization. Rate-limited to 60/min.

GET/api/admin/storage-deletion-jobs

Authorization

better-auth.session_token<token>

Cookie session from Better Auth. Requires X-Org-Id header for org-scoped routes.

In: cookie

Query Parameters

status?string
Default"pending"
Value in"pending" | "dead" | "completed"
limit?integer
Default50
Range1 <= value <= 200
startingAfter?string

Cursor — the id of the last job of the previous page. Follow the RFC 5988 Link: <…>; rel="next" response header instead of building it by hand.

curl -X GET "https://your-instance/api/admin/storage-deletion-jobs"
{
  "object": "list",
  "data": [
    {
      "id": "sdj_0c9f…",
      "bucket": "files",
      "storage_key": "spc_abc/file_def/report.pdf",
      "reason": "string",
      "attempts": 0,
      "next_attempt_at": "2019-08-24T14:15:22Z",
      "completed_at": "2019-08-24T14:15:22Z",
      "last_error": "string",
      "createdAt": "2019-08-24T14:15:22Z"
    }
  ],
  "hasMore": true
}

{
  "type": "https://docs.appstrate.dev/errors/validation-failed",
  "title": "Validation Failed",
  "status": 400,
  "detail": "name: Invalid input: expected string, received undefined (+2 more)",
  "code": "validation_failed",
  "request_id": "req_abc123",
  "errors": [
    {
      "field": "name",
      "code": "required",
      "message": "Invalid input: expected string, received undefined"
    },
    {
      "field": "email",
      "code": "invalid_format",
      "message": "Invalid email address"
    },
    {
      "field": "age",
      "code": "invalid_type",
      "message": "Invalid input: expected number, received string"
    }
  ]
}

{
  "type": "https://docs.appstrate.dev/errors/unauthorized",
  "title": "Unauthorized",
  "status": 401,
  "detail": "Invalid or missing session",
  "code": "unauthorized",
  "request_id": "req_abc123"
}
{
  "type": "https://docs.appstrate.dev/errors/forbidden",
  "title": "Forbidden",
  "status": 403,
  "detail": "Insufficient permissions",
  "code": "forbidden",
  "request_id": "req_abc123"
}
{
  "type": "https://docs.appstrate.dev/errors/rate-limited",
  "title": "Rate Limited",
  "status": 429,
  "detail": "Too many requests. Please try again shortly.",
  "code": "rate_limited",
  "request_id": "req_abc123",
  "retry_after": 30
}