{
"id": "space.highport.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 must be unique within the tile."
},
"content": {
"ref": "space.highport.sites.defs#manifest",
"type": "ref",
"description": "The tile's resources. Must have a bundle name and 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": "For string: a closed set of allowed values."
},
"name": {
"type": "string",
"maxLength": 64,
"description": "Key in the site record's parameters map. Must match [A-Za-z][A-Za-z0-9_]*, so it cannot start with an underscore."
},
"type": {
"type": "string",
"maxLength": 317,
"description": "One of string, integer, boolean, blob or array, or an NSID naming the $type a value must have. A value of NSID type may also be given by strong reference."
},
"items": {
"ref": "#itemSchema",
"type": "ref",
"description": "For array: the element type. Required when type is array and not allowed otherwise. An item is never itself an array."
},
"accept": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 16,
"description": "For blob: accepted MIME types, with wildcards as in Lexicon (image/*)."
},
"format": {
"type": "string",
"description": "For string: a Lexicon string format.",
"knownValues": [
"at-identifier",
"at-uri",
"cid",
"datetime",
"did",
"handle",
"language",
"nsid",
"record-key",
"tid",
"uri"
]
},
"maxSize": {
"type": "integer",
"minimum": 1,
"description": "For blob: the maximum size in bytes."
},
"maximum": {
"type": "integer",
"description": "For integer: the maximum value."
},
"minimum": {
"type": "integer",
"description": "For integer: the minimum value."
},
"required": {
"type": "boolean",
"description": "Defaults to false. An optional parameter that is left out stays absent, and the tile's code supplies the default."
},
"maxLength": {
"type": "integer",
"minimum": 1,
"description": "For string, the maximum UTF-8 bytes; for array, the maximum number of items."
},
"description": {
"type": "string",
"maxLength": 1000
},
"knownValues": {
"type": "array",
"items": {
"type": "string"
},
"maxLength": 64,
"description": "For string: an open, advisory set of values."
},
"maxGraphemes": {
"type": "integer",
"minimum": 1,
"description": "For string: the maximum graphemes."
}
},
"description": "A parameter a binding site supplies. type is a Lexicon primitive or an NSID. The constraint fields work like Lexicon's and apply only where Lexicon applies them; using one 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 that a space.highport.sites.site can bind to a domain by strong reference. Authors publish tiles under a TID key, and a tile is never tied to a domain."
}