{
"id": "lol.dids.sites.tile",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"content"
],
"properties": {
"icon": {
"type": "blob",
"accept": [
"image/png",
"image/jpeg",
"image/webp"
],
"maxSize": 1048576
},
"name": {
"type": "string",
"maxLength": 1000,
"description": "Display name; limits match the Web Tiles specification.",
"maxGraphemes": 100
},
"params": {
"type": "array",
"items": {
"ref": "#param",
"type": "ref"
},
"maxLength": 32,
"description": "Parameters a binding site must or may supply. Names are unique within a tile."
},
"content": {
"ref": "lol.dids.sites.defs#manifest",
"type": "ref",
"description": "The tile's resources. Must name the bundle and contain a '/' entry."
},
"description": {
"type": "string",
"maxLength": 3000,
"maxGraphemes": 300
}
}
}
},
"param": {
"type": "object",
"required": [
"name",
"type"
],
"properties": {
"enum": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 64,
"description": "string: closed set of permitted values."
},
"name": {
"type": "string",
"maxLength": 64,
"description": "Key in the site record's parameters map. Matches [A-Za-z][A-Za-z0-9_]*; must not begin with an underscore."
},
"type": {
"type": "string",
"maxLength": 317,
"description": "One of string, integer, boolean, blob, array — or an NSID naming the record type a value must carry as its $type, which may also be supplied by strong reference."
},
"items": {
"ref": "#itemSchema",
"type": "ref",
"description": "array: the element type. Required when type is array, forbidden otherwise. One level: an item is never itself an array."
},
"accept": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 16,
"description": "blob: accepted MIME types, wildcards as in Lexicon (image/*)."
},
"format": {
"type": "string",
"description": "string: Lexicon string format.",
"knownValues": [
"at-identifier",
"at-uri",
"cid",
"datetime",
"did",
"handle",
"language",
"nsid",
"record-key",
"tid",
"uri"
]
},
"maxSize": {
"type": "integer",
"minimum": 1,
"description": "blob: maximum size in bytes."
},
"maximum": {
"type": "integer",
"description": "integer."
},
"minimum": {
"type": "integer",
"description": "integer."
},
"required": {
"type": "boolean",
"description": "Default false. An absent optional parameter is simply absent; tile code defaults it."
},
"maxLength": {
"type": "integer",
"minimum": 1,
"description": "string: maximum UTF-8 bytes; array: maximum item count."
},
"description": {
"type": "string",
"maxLength": 1000
},
"knownValues": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 64,
"description": "string: open, advisory set."
},
"maxGraphemes": {
"type": "integer",
"minimum": 1,
"description": "string."
}
},
"description": "A parameter a binding site supplies. type is a Lexicon primitive or an NSID; the constraint fields mirror Lexicon's own and apply only where Lexicon applies them — a constraint on a type it does not govern makes the tile invalid."
},
"itemSchema": {
"type": "object",
"required": [
"type"
],
"properties": {
"enum": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 64
},
"type": {
"type": "string",
"maxLength": 317
},
"accept": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 16
},
"format": {
"type": "string",
"knownValues": [
"at-identifier",
"at-uri",
"cid",
"datetime",
"did",
"handle",
"language",
"nsid",
"record-key",
"tid",
"uri"
]
},
"maxSize": {
"type": "integer",
"minimum": 1
},
"maximum": {
"type": "integer"
},
"minimum": {
"type": "integer"
},
"maxLength": {
"type": "integer",
"minimum": 1
},
"knownValues": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 64
},
"maxGraphemes": {
"type": "integer",
"minimum": 1
}
},
"description": "Element type of an array parameter: any #param type except array, with the same constraint fields."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1,
"description": "A reusable, parameterized web tile: a bundle of static resources a lol.dids.sites.site may bind to a domain by strong reference. Tiles are published under a TID key by their authors and are never tied to a domain."
}