full diff

app.bulleted.admin.undeny

From
bafyreigzzrvztlc3a6mf5hojcmm4rfp56hkryobpwss7csbzixy2ptet54 indexed 2026-08-06 10:44 UTC View this version
To
bafyreigzzrvztlc3a6mf5hojcmm4rfp56hkryobpwss7csbzixy2ptet54 indexed 2026-08-06 10:44 UTC View this version

Compatibility

backward compatible No changes detected.

Changes

11{
22 "$type": "com.atproto.lexicon.schema",
33 "defs": {
44 "main": {
55 "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.",
66 "errors": [
77 {
88 "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.",
99 "name": "NotDenied"
1010 },
1111 {
1212 "description": "No administrative credential is configured, so the administrative surface does not exist.",
1313 "name": "AdminDisabled"
1414 }
1515 ],
1616 "input": {
1717 "encoding": "application/json",
1818 "schema": {
1919 "properties": {
2020 "value": {
2121 "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.",
2222 "maxLength": 2048,
2323 "type": "string"
2424 }
2525 },
2626 "required": [
2727 "value"
2828 ],
2929 "type": "object"
3030 }
3131 },
3232 "output": {
3333 "encoding": "application/json",
3434 "schema": {
3535 "properties": {
3636 "kind": {
3737 "description": "The kind the entry had.",
3838 "knownValues": [
3939 "did",
4040 "aturi",
4141 "pds",
4242 "cid"
4343 ],
4444 "type": "string"
4545 },
4646 "restoration": {
4747 "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.",
4848 "knownValues": [
4949 "backfillOnView",
5050 "refetchEnqueued",
5151 "immediate"
5252 ],
5353 "type": "string"
5454 },
5555 "value": {
5656 "description": "The value as stored.",
5757 "type": "string"
5858 }
5959 },
6060 "required": [
6161 "value",
6262 "kind",
6363 "restoration"
6464 ],
6565 "type": "object"
6666 }
6767 },
6868 "type": "procedure"
6969 }
7070 },
7171 "id": "app.bulleted.admin.undeny",
7272 "lexicon": 1
7373}