{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "line": {
      "description": "One line, as logged.",
      "properties": {
        "line": {
          "description": "The JSON line, as written to the log: its time, level, message and the fields the event had.",
          "type": "unknown"
        }
      },
      "required": [
        "line"
      ],
      "type": "object"
    },
    "main": {
      "description": "The lines an appview logged, for its operators, oldest first: all of one request's by its trace, or the last of a message, a level or a duration. It takes a service token for this method from one of the accounts it names as its operators, or the session cookie of one logged in to its pages. Kept across restarts, at most 30 days. Each read is itself logged, with who asked.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "lines": {
              "description": "The lines asked for, oldest first.",
              "items": {
                "ref": "#line",
                "type": "ref"
              },
              "type": "array"
            }
          },
          "required": [
            "lines"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "level": {
            "description": "Only lines at this level or above.",
            "knownValues": [
              "error",
              "warn",
              "info",
              "debug",
              "trace"
            ],
            "type": "string"
          },
          "limit": {
            "description": "How many, the last of those asked for. Unless given, 500 for a trace, so a request's lines come whole, and 100 otherwise.",
            "maximum": 500,
            "minimum": 1,
            "type": "integer"
          },
          "message": {
            "description": "Only lines with this message.",
            "knownValues": [
              "request",
              "outgoing",
              "sql",
              "git",
              "mcp tool",
              "mcp tool failed",
              "mirror sync",
              "logs read"
            ],
            "type": "string"
          },
          "minMs": {
            "description": "Only lines that took this many milliseconds or more.",
            "minimum": 0,
            "type": "integer"
          },
          "trace": {
            "description": "All of one request's lines, by the trace ID each carries and its answer's x-trace-id names.",
            "type": "string"
          }
        },
        "type": "params"
      },
      "type": "query"
    }
  },
  "id": "dev.knotless.getLogs",
  "lexicon": 1
}
