{
  "lexicon": 1,
  "id": "net.bisks.velvetrope.request",
  "defs": {
    "main": {
      "type": "record",
      "description": "A request from a Bluesky account to be added to or removed from someone else's moderation list. Written to the requester's own repo — a list's owner can only see it by reading the requester's PDS, never forged in the owner's name. Deleted by the requester (deleteRecord) if cancelled before the owner decides, or superseded by a net.bisks.velvetrope.decision record once the owner (or an auto-approve policy) resolves it. Written and read by velvetrope (https://velvetrope.bisks.net).",
      "key": "tid",
      "record": {
        "type": "object",
        "required": ["list", "action", "createdAt"],
        "properties": {
          "list": {
            "type": "string",
            "format": "at-uri",
            "description": "AT-URI of the app.bsky.graph.list record (moderation list) this request concerns."
          },
          "action": {
            "type": "string",
            "knownValues": ["add", "remove"],
            "description": "Whether the requester wants to be added to the list ('add', shown when they aren't currently a member) or removed from it ('remove', shown when they are)."
          },
          "reason": {
            "type": "string",
            "maxLength": 2000,
            "maxGraphemes": 500,
            "description": "Optional free-text reason for the request, shown to the list owner. Trimmed client-side to 500 characters (textarea also caps input at 500) before writing."
          },
          "createdAt": {
            "type": "string",
            "format": "datetime",
            "description": "When the request was submitted, as an ISO 8601 datetime."
          }
        }
      }
    }
  }
}
