{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "main": {
      "description": "Everything needed for first paint, in one round trip: the viewer's servers, the active server's channels and roster, and one channel's newest timeline page.\n\nOne method rather than five because this is the server-rendered path — every extra round trip here is latency a reader sees before anything appears. Warm navigations do not call it at all; the client's store already holds the answer.",
      "output": {
        "encoding": "application/json",
        "schema": {
          "ref": "#output",
          "type": "ref"
        }
      },
      "parameters": {
        "properties": {
          "channel": {
            "description": "Which channel's timeline to include. Omit for the server's default.",
            "type": "string"
          },
          "server": {
            "description": "Which server to open. Omit to let the appview choose the viewer's first.",
            "format": "did",
            "type": "string"
          }
        },
        "type": "params"
      },
      "type": "query"
    },
    "output": {
      "properties": {
        "activeChannelId": {
          "type": "string"
        },
        "activeServerDid": {
          "format": "did",
          "type": "string"
        },
        "channels": {
          "items": {
            "ref": "chat.yakka.defs#channelView",
            "type": "ref"
          },
          "type": "array"
        },
        "members": {
          "items": {
            "ref": "chat.yakka.defs#memberView",
            "type": "ref"
          },
          "type": "array"
        },
        "readState": {
          "items": {
            "ref": "chat.yakka.defs#channelReadState",
            "type": "ref"
          },
          "type": "array"
        },
        "servers": {
          "items": {
            "ref": "chat.yakka.defs#serverView",
            "type": "ref"
          },
          "type": "array"
        },
        "timeline": {
          "ref": "chat.yakka.defs#timelinePage",
          "type": "ref"
        },
        "viewer": {
          "ref": "chat.yakka.defs#memberView",
          "type": "ref"
        }
      },
      "required": [
        "servers",
        "channels",
        "members"
      ],
      "type": "object"
    }
  },
  "id": "chat.yakka.getSnapshot",
  "lexicon": 1
}
