# dev.knotless.deleteAccountData

> Published by [lexicons.knotless.dev](https://lexicon.garden/identity/did:plc:yqsg7znbbhfmj3a2nrpnaerk)

✓ This is the authoritative definition for this NSID.

## Description

Deletes every knotless record from the asking account, then has the appview forget it.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:yqsg7znbbhfmj3a2nrpnaerk/dev.knotless.deleteAccountData)
- [Documentation](https://lexicon.garden/lexicon/did:plc:yqsg7znbbhfmj3a2nrpnaerk/dev.knotless.deleteAccountData/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:yqsg7znbbhfmj3a2nrpnaerk/dev.knotless.deleteAccountData/examples)

## Definitions

### `dev.knotless.deleteAccountData`

**Type**: `procedure`

Deletes the asking account's knotless data a part at a time, as `knotless delete-data` does: first the spaces of its private repositories, then each public repository as dev.knotless.deleteRepo deletes one, then whatever is left in its dev.knotless.* collections. Asked by the pages' session cookie, it deletes with the session the appview keeps for the account, up to `limit` records and spaces a call, and answers whether it is done; the pages ask again until it is, and a run cut short carries on where it stopped. Once nothing is left, the appview drops what it indexed from the account, as for one deleted at its PDS, keeping its takedowns and reports about it, and ends the account's sessions here, the pages' and MCP's, logging the browser out. Asked with a service token, as the command line asks once it has deleted the records itself, it deletes nothing, and forgets the account only once its PDS holds no knotless records. The atproto account itself, and other apps' records in it, are untouched. Only the account itself can ask.

#### Input

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes | The account whose data goes: the one asking, named again so that no call deletes it by mistake. |
| `limit` | `integer` | No | The most records and spaces to delete in this call. |

#### Output

**Encoding**: `application/json`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `deleted` | `integer` | Yes | How many records and spaces this call deleted. |
| `done` | `boolean` | Yes | Whether nothing is left: the appview has then forgotten the account, and logged it out. |

#### Errors

- **AuthenticationRequired**: No account asks, or the pages' session for it has ended.
- **Forbidden**: The account asking is not the one named.
- **RecordsRemain**: Asked with a service token while the account's PDS still holds knotless records: delete them first.

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Deletes the asking account's knotless data a part at a time, as `knotless delete-data` does: first the spaces of its private repositories, then each public repository as dev.knotless.deleteRepo deletes one, then whatever is left in its dev.knotless.* collections. Asked by the pages' session cookie, it deletes with the session the appview keeps for the account, up to `limit` records and spaces a call, and answers whether it is done; the pages ask again until it is, and a run cut short carries on where it stopped. Once nothing is left, the appview drops what it indexed from the account, as for one deleted at its PDS, keeping its takedowns and reports about it, and ends the account's sessions here, the pages' and MCP's, logging the browser out. Asked with a service token, as the command line asks once it has deleted the records itself, it deletes nothing, and forgets the account only once its PDS holds no knotless records. The atproto account itself, and other apps' records in it, are untouched. Only the account itself can ask.",
      "errors": [
        {
          "description": "No account asks, or the pages' session for it has ended.",
          "name": "AuthenticationRequired"
        },
        {
          "description": "The account asking is not the one named.",
          "name": "Forbidden"
        },
        {
          "description": "Asked with a service token while the account's PDS still holds knotless records: delete them first.",
          "name": "RecordsRemain"
        }
      ],
      "input": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "did": {
              "description": "The account whose data goes: the one asking, named again so that no call deletes it by mistake.",
              "format": "did",
              "type": "string"
            },
            "limit": {
              "default": 400,
              "description": "The most records and spaces to delete in this call.",
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          "required": [
            "did"
          ],
          "type": "object"
        }
      },
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "deleted": {
              "description": "How many records and spaces this call deleted.",
              "minimum": 0,
              "type": "integer"
            },
            "done": {
              "description": "Whether nothing is left: the appview has then forgotten the account, and logged it out.",
              "type": "boolean"
            }
          },
          "required": [
            "deleted",
            "done"
          ],
          "type": "object"
        }
      },
      "type": "procedure"
    }
  },
  "description": "Deletes every knotless record from the asking account, then has the appview forget it.",
  "id": "dev.knotless.deleteAccountData",
  "lexicon": 1
}
```
