{
"id": "app.bsky.embed.gallery",
"defs": {
"main": {
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"refs": [
"#image"
],
"type": "union",
"description": "The media items in the gallery. Each item may be of a different type, but all types must be supported by the client."
},
"maxLength": 20,
"description": "The schema-level maxLength of 20 is a future-proof ceiling. Clients should currently enforce a soft limit of 10 items in authoring UIs."
}
}
},
"view": {
"type": "object",
"required": [
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"refs": [
"#viewImage"
],
"type": "union"
}
}
}
},
"image": {
"type": "object",
"required": [
"image",
"alt",
"aspectRatio"
],
"properties": {
"alt": {
"type": "string",
"description": "Alt text description of the image, for accessibility."
},
"image": {
"type": "blob",
"accept": [
"image/*"
],
"maxSize": 2000000
},
"aspectRatio": {
"ref": "app.bsky.embed.defs#aspectRatio",
"type": "ref"
}
}
},
"viewImage": {
"type": "object",
"required": [
"thumbnail",
"fullsize",
"alt",
"aspectRatio"
],
"properties": {
"alt": {
"type": "string",
"description": "Alt text description of the image, for accessibility."
},
"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."
},
"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."
},
"aspectRatio": {
"ref": "app.bsky.embed.defs#aspectRatio",
"type": "ref"
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "An assortment of media embedded in a Bluesky record (eg, a post)."
}