app.bulleted.admin.undeny

lexicons.bulleted.app

Documentation

Remove a value from the appview's denylist and rebuild the membership filter. Requires the administrative credential. A denylist with no removal path means one mistyped DID is permanent. Undeny does NOT restore rows a nuke removed; the restoration field says what brings the content back, if anything does.

main procedure

Remove a value from the appview's denylist and rebuild the membership filter. Requires the administrative credential. A denylist with no removal path means one mistyped DID is permanent. Undeny does NOT restore rows a nuke removed; the restoration field says what brings the content back, if anything does.

Input

Encodingapplication/json
value string Required

The value to remove. Normalized the same way it was on the way in, so a PDS endpoint written with a trailing slash still matches.

maxLength: 2048 bytes

Output

Encodingapplication/json
kind string Required

The kind the entry had.

Known values: did, aturi, pds, cid
restoration string Required

How the content comes back, which depends entirely on the kind. backfillOnView: the repository has zero rows, so the next view is an ordinary first view and backfill returns the content by itself. refetchEnqueued: an aturi undeny, where the repository still has all its other rows and NOTHING would ever trigger a backfill, so a targeted com.atproto.repo.getRecord has been queued. immediate: a cid undeny, where the record was never removed and the blob returns on the next cache miss.

Known values: backfillOnView, refetchEnqueued, immediate
value string Required

The value as stored.

Errors

NotDenied The value is not on the denylist. Distinguished from success on purpose: 'it was already removed' and 'you typed it differently from the way it was stored' are otherwise indistinguishable to the caller.
AdminDisabled No administrative credential is configured, so the administrative surface does not exist.
Try It

Requests are sent directly from your browser. Some servers may block requests due to CORS.

Base URL for XRPC calls (e.g., https://bsky.social)
Enter valid JSON for the request body
View raw schema
{
  "type": "procedure",
  "input": {
    "schema": {
      "type": "object",
      "required": [
        "value"
      ],
      "properties": {
        "value": {
          "type": "string",
          "maxLength": 2048,
          "description": "The value to remove. Normalized the same way it was on the way in, so a PDS endpoint written with a trailing slash still matches."
        }
      }
    },
    "encoding": "application/json"
  },
  "errors": [
    {
      "name": "NotDenied",
      "description": "The value is not on the denylist. Distinguished from success on purpose: 'it was already removed' and 'you typed it differently from the way it was stored' are otherwise indistinguishable to the caller."
    },
    {
      "name": "AdminDisabled",
      "description": "No administrative credential is configured, so the administrative surface does not exist."
    }
  ],
  "output": {
    "schema": {
      "type": "object",
      "required": [
        "value",
        "kind",
        "restoration"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "description": "The kind the entry had.",
          "knownValues": [
            "did",
            "aturi",
            "pds",
            "cid"
          ]
        },
        "value": {
          "type": "string",
          "description": "The value as stored."
        },
        "restoration": {
          "type": "string",
          "description": "How the content comes back, which depends entirely on the kind. backfillOnView: the repository has zero rows, so the next view is an ordinary first view and backfill returns the content by itself. refetchEnqueued: an aturi undeny, where the repository still has all its other rows and NOTHING would ever trigger a backfill, so a targeted com.atproto.repo.getRecord has been queued. immediate: a cid undeny, where the record was never removed and the blob returns on the next cache miss.",
          "knownValues": [
            "backfillOnView",
            "refetchEnqueued",
            "immediate"
          ]
        }
      }
    },
    "encoding": "application/json"
  },
  "description": "Remove a value from the appview's denylist and rebuild the membership filter. Requires the administrative credential. A denylist with no removal path means one mistyped DID is permanent. Undeny does NOT restore rows a nuke removed; the restoration field says what brings the content back, if anything does."
}

Lexicon Garden

@