{
  "lexicon": 1,
  "id": "app.bsky.embed.gallery",
  "description": "An assortment of media embedded in a Bluesky record (eg, a post).",
  "defs": {
    "main": {
      "type": "object",
      "required": ["items"],
      "properties": {
        "items": {
          "type": "array",
          "maxLength": 20,
          "items": {
            "type": "union",
            "refs": ["#image"],
            "description": "The media items in the gallery. Each item may be of a different type, but all types must be supported by the client. Max length may change in the future, and therefore applications should be prepared to handle more or fewer items than the current max length."
          }
        }
      }
    },
    "image": {
      "type": "object",
      "required": ["image", "alt", "aspectRatio"],
      "properties": {
        "image": {
          "type": "blob",
          "accept": ["image/*"],
          "maxSize": 2000000
        },
        "alt": {
          "type": "string",
          "description": "Alt text description of the image, for accessibility."
        },
        "aspectRatio": {
          "type": "ref",
          "ref": "app.bsky.embed.defs#aspectRatio"
        }
      }
    },
    "view": {
      "type": "object",
      "required": ["items"],
      "properties": {
        "items": {
          "type": "array",
          "items": {
            "type": "union",
            "refs": ["#viewImage"]
          }
        }
      }
    },
    "viewImage": {
      "type": "object",
      "required": ["thumbnail", "fullsize", "alt", "aspectRatio"],
      "properties": {
        "thumbnail": {
          "type": "string",
          "format": "uri",
          "description": "Fully-qualified URL where a thumbnail of the image can be fetched. For example, CDN location provided by the App View."
        },
        "fullsize": {
          "type": "string",
          "format": "uri",
          "description": "Fully-qualified URL where a large version of the image can be fetched. May or may not be the exact original blob. For example, CDN location provided by the App View."
        },
        "alt": {
          "type": "string",
          "description": "Alt text description of the image, for accessibility."
        },
        "aspectRatio": {
          "type": "ref",
          "ref": "app.bsky.embed.defs#aspectRatio"
        }
      }
    }
  }
}
