People

Data exports

export-service

A person's copy of their own data: asking for one, seeing how it is getting on, fetching it and giving it up (data-export.md). Optional: an installation may not run it.

The viewer's exports

GET/exports

And how often they may ask, how long an archive is kept, and when they may next ask.

Who: Somebody signed in

Answers

Request

curl "https://api.example.org/exports" \
  -H "Authorization: Bearer $TOKEN"

Answer · 200

{
  "data": [
    {
      "created_at": "2026-10-27T09:30:00Z",
      "download_url": "https://example.org/",
      "error": "string",
      "expires_at": "2026-10-27T09:30:00Z",
      "id": "string",
      "ready_at": "2026-10-27T09:30:00Z",
      "size_bytes": 1,
      "status": "string"
    }
  ],
  "every_days": 1,
  "keep_days": 1,
  "next_at": "2026-10-27T09:30:00Z"
}

Ask for a copy of the viewer's data

POST/exports

Everything they wrote, as a zip archive made in the background: GET /exports/:id says when it is ready, with where to fetch it. One at a time, and one a week unless the installation says otherwise (EXPORT_EVERY_DAYS).

Who: Somebody signed in, who has just proved who they are again

Answers

  • 201
    Created
    export.ExportItem application/json
  • 401
    no token, or one that has expired
  • 403
    step_up_required: the viewer must prove who they are again first (/reauth)
    Refusal application/json
  • 409
    active: one is being made
    Refusal application/json
  • 429
    too_soon: it is not yet time to ask again, and it says when
    export.TooSoon application/json

Request

curl -X POST "https://api.example.org/exports" \
  -H "Authorization: Bearer $TOKEN"

Answer · 201

{
  "created_at": "2026-10-27T09:30:00Z",
  "download_url": "https://example.org/",
  "error": "string",
  "expires_at": "2026-10-27T09:30:00Z",
  "id": "string",
  "ready_at": "2026-10-27T09:30:00Z",
  "size_bytes": 1,
  "status": "string"
}

How an export is getting on

GET/exports/{id}

Once it is ready, with an address to fetch it from, good for a few minutes and made afresh each time this is read.

Who: Somebody signed in

Parameters

  • idstringrequiredin path
    The export's id: a UUID.

Answers

  • 200
    OK
    export.ExportItem application/json
  • 401
    no token, or one that has expired
  • 404
    the viewer has no such export

Request

curl "https://api.example.org/exports/<id>" \
  -H "Authorization: Bearer $TOKEN"

Answer · 200

{
  "created_at": "2026-10-27T09:30:00Z",
  "download_url": "https://example.org/",
  "error": "string",
  "expires_at": "2026-10-27T09:30:00Z",
  "id": "string",
  "ready_at": "2026-10-27T09:30:00Z",
  "size_bytes": 1,
  "status": "string"
}

Give an export up

DELETE/exports/{id}

Stops it being made, or deletes its archive once it is.

Who: Somebody signed in

Parameters

  • idstringrequiredin path
    The export's id: a UUID.

Answers

  • 204
    given up, or it was over already
  • 401
    no token, or one that has expired
  • 404
    the viewer has no such export

Request

curl -X DELETE "https://api.example.org/exports/<id>" \
  -H "Authorization: Bearer $TOKEN"

Written by Claude, reviewed by Rastin Mehr · About this