{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Public repositories an appview has indexed, newest first. The first page of a search with no runner, triager or topic starts with those named as searched, ignoring case, originals before forks. No authentication needed; asked as an account, with a service token or the pages' session cookie, the account's own of those come first, and before them the private repositories that account may read on this appview that match too, each marked private, and after them its own other public ones that match; the answer is that account's alone. What a first page puts first, when all of its kind fit there, no later page lists again.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "cursor": {
              "maxLength": 512,
              "type": "string"
            },
            "repos": {
              "items": {
                "ref": "#repoView",
                "type": "ref"
              },
              "type": "array"
            }
          },
          "required": [
            "repos"
          ],
          "type": "object"
        }
      },
      "parameters": {
        "properties": {
          "cursor": {
            "maxLength": 512,
            "type": "string"
          },
          "limit": {
            "default": 50,
            "maximum": 500,
            "minimum": 1,
            "type": "integer"
          },
          "q": {
            "description": "Only repositories whose name or description holds this text, ignoring case.",
            "maxLength": 100,
            "type": "string"
          },
          "runner": {
            "description": "Only repositories whose record names this account among its runners: how a runner finds the repositories it is to run.",
            "format": "did",
            "type": "string"
          },
          "topic": {
            "description": "Only repositories whose records name this topic, as rust.",
            "maxLength": 50,
            "type": "string"
          },
          "triager": {
            "description": "Only repositories whose record names this account among its triagers: how a triager finds the repositories it is to triage.",
            "format": "did",
            "type": "string"
          }
        },
        "type": "params"
      },
      "type": "query"
    },
    "repoView": {
      "description": "A repository, from its dev.knotless.repo record.",
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "description": {
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        },
        "did": {
          "description": "The repository's owner.",
          "format": "did",
          "type": "string"
        },
        "forkOf": {
          "description": "The dev.knotless.repo record this repository was forked from.",
          "format": "at-uri",
          "type": "string"
        },
        "name": {
          "description": "The repository's name: its record key.",
          "maxLength": 100,
          "type": "string"
        },
        "owner": {
          "description": "The owner, by handle and picture, as the appview knows it.",
          "ref": "dev.knotless.defs#actorView",
          "type": "ref"
        },
        "private": {
          "description": "Whether it is private, in a space: listed only to an account that may read it, asking.",
          "type": "boolean"
        }
      },
      "required": [
        "did",
        "name",
        "createdAt"
      ],
      "type": "object"
    }
  },
  "description": "Public repositories an appview has indexed, newest first.",
  "id": "dev.knotless.listRepos",
  "lexicon": 1
}
