{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Cursored listing of moderation reports for the queue view. Filterable by status, subject type, reason, reporter, and subject author. Sorted by (created_at DESC, id DESC). Requires the caller to be an active moderator (any role).",
      "errors": [
        {
          "description": "Caller is not an active moderator.",
          "name": "Forbidden"
        },
        {
          "description": "The cursor parameter was malformed or referenced state inconsistent with the rest of the filter set.",
          "name": "InvalidCursor"
        }
      ],
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "cursor": {
              "maxLength": 1024,
              "type": "string"
            },
            "items": {
              "items": {
                "ref": "app.tempomusic.staff.defs#reportView",
                "type": "ref"
              },
              "type": "array"
            }
          },
          "required": [
            "items"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "createdAfter": {
            "format": "datetime",
            "type": "string"
          },
          "createdBefore": {
            "format": "datetime",
            "type": "string"
          },
          "cursor": {
            "description": "Opaque pagination cursor returned by a previous call.",
            "maxLength": 1024,
            "type": "string"
          },
          "limit": {
            "default": 50,
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "reasonType": {
            "description": "Wire values of app.tempomusic.moderation.defs#reasonType, inlined because lexicon `params` cannot use `ref`.",
            "knownValues": [
              "copyright",
              "impersonation",
              "spam",
              "harassment",
              "sexual",
              "violence",
              "selfHarm",
              "misinformation",
              "other"
            ],
            "maxLength": 100,
            "type": "string"
          },
          "reporterDid": {
            "format": "did",
            "type": "string"
          },
          "status": {
            "description": "Filter reports to a single status. Wire values of app.tempomusic.staff.defs#reportStatus, inlined because lexicon `params` cannot use `ref`. Omit to return all statuses.",
            "knownValues": [
              "open",
              "underReview",
              "actioned",
              "dismissed"
            ],
            "maxLength": 100,
            "type": "string"
          },
          "subjectDid": {
            "description": "Filter to reports against this actor DID, via the reports.subject_did denormalization: matches both account-subject reports targeting this DID AND post/reply-subject reports against content authored by this DID.",
            "format": "did",
            "type": "string"
          },
          "subjectType": {
            "description": "Filter to a single subject type.",
            "knownValues": [
              "post",
              "reply",
              "account"
            ],
            "maxLength": 100,
            "type": "string"
          },
          "subjectUri": {
            "description": "Filter to reports filed against this exact post/reply at-uri (reports.subject_uri). Complements subjectDid for the report-detail cross-link: every report on the same subject.",
            "format": "at-uri",
            "type": "string"
          }
        },
        "type": "params"
      },
      "type": "query"
    }
  },
  "id": "app.tempomusic.staff.listReports",
  "lexicon": 1
}
