app.bulleted.admin.deny
Add a value to the appview's denylist and, by default, remove what it has already indexed. Requires the administrative credential. Adding to the list stops future indexing; nuking removes what is already there, which is why nuke defaults to true.
Details · procedure
| Kind | procedure |
|---|---|
| Authority | admin.bulleted.app |
| Indexed |
Checks
Validunlimited-stringdefs.main.output.schema.properties.kindNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.main.output.schema.properties.valueNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Add a value to the appview's denylist and, by default, remove what it has already indexed. Requires the administrative credential. Adding to the list stops future indexing; nuking removes what is already there, which is why nuke defaults to true.",
"errors": [
{
"description": "The value is not a DID, an AT-URI, an http(s) endpoint, or a canonical CIDv1.",
"name": "UnknownKind"
},
{
"description": "No administrative credential is configured, so the administrative surface does not exist.",
"name": "AdminDisabled"
}
],
"input": {
"encoding": "application/json",
"schema": {
"properties": {
"comment": {
"description": "Free-text moderation note. Not the audit field: who performed the action is taken from the administrative credential and recorded separately, because a moderation log has to answer 'who removed this and when' as a queryable field rather than as a convention about comment text.",
"maxLength": 2048,
"type": "string"
},
"nuke": {
"default": true,
"description": "Remove what is already indexed. True by default and the reason this endpoint exists: adding to the list only stops future indexing. Pass false to pre-emptively block something that has not been indexed yet.",
"type": "boolean"
},
"value": {
"description": "What to deny. The kind is DERIVED from this value and is never supplied by the caller: did: is a repository, at:// is one record, http:// or https:// is a PDS endpoint, and a canonical CIDv1 is a blob. A value matching none of the four is a 400 rather than a guess.",
"maxLength": 2048,
"type": "string"
}
},
"required": [
"value"
],
"type": "object"
}
},
"output": {
"encoding": "application/json",
"schema": {
"properties": {
"blobs": {
"description": "Cached blob files removed.",
"type": "integer"
},
"kind": {
"description": "The kind derived from the value.",
"knownValues": [
"did",
"aturi",
"pds",
"cid"
],
"type": "string"
},
"nuked": {
"description": "Rows removed from the appview. Zero when nuke was false.",
"type": "integer"
},
"repos": {
"description": "Repositories emptied. One for a did nuke; zero or more for a pds nuke.",
"type": "integer"
},
"value": {
"description": "The value as stored. A PDS endpoint is normalized to one spelling, so this may differ from the input.",
"type": "string"
}
},
"required": [
"value",
"kind",
"nuked"
],
"type": "object"
}
},
"type": "procedure"
}
},
"id": "app.bulleted.admin.deny",
"lexicon": 1
}