{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Lists the nodes of this AppView network that currently accept clients. Clients measure the round trip to each probe URL and connect their event socket, voice signaling and media requests to the fastest node.",
      "errors": [],
      "output": {
        "encoding": "application/json",
        "schema": {
          "properties": {
            "nodes": {
              "description": "Nodes that accept clients, in no particular order.",
              "items": {
                "ref": "#nodeView",
                "type": "ref"
              },
              "type": "array"
            }
          },
          "required": [
            "nodes"
          ],
          "type": "object"
        }
      },
      "type": "query"
    },
    "nodeView": {
      "description": "A node that accepts clients.",
      "properties": {
        "endpoint": {
          "description": "Base URL of the node. Event sockets, voice signaling, blobs and embeds use it.",
          "format": "uri",
          "type": "string"
        },
        "id": {
          "description": "Stable node identifier.",
          "type": "string"
        },
        "probeUrl": {
          "description": "A cheap URL to measure the round trip to this node.",
          "format": "uri",
          "type": "string"
        },
        "region": {
          "description": "Region name, such as 'eu-north' or 'us-east'.",
          "type": "string"
        },
        "roles": {
          "description": "What the node serves.",
          "items": {
            "knownValues": [
              "main",
              "failover",
              "api",
              "live",
              "voice"
            ],
            "type": "string"
          },
          "type": "array"
        }
      },
      "required": [
        "id",
        "region",
        "roles",
        "endpoint",
        "probeUrl"
      ],
      "type": "object"
    }
  },
  "id": "social.colibri.beta.server.listNodes",
  "lexicon": 1
}
