# lol.dids.sites.tile

> Published by [ngerakines.me](https://lexicon.garden/identity/did:plc:cbkjy5n7bk3ax2wplmtjofq2)

✓ This is the authoritative definition for this NSID.

## 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.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:cbkjy5n7bk3ax2wplmtjofq2/lol.dids.sites.tile)
- [Documentation](https://lexicon.garden/lexicon/did:plc:cbkjy5n7bk3ax2wplmtjofq2/lol.dids.sites.tile/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:cbkjy5n7bk3ax2wplmtjofq2/lol.dids.sites.tile/examples)

## Definitions

### `lol.dids.sites.tile`

**Type**: `record`

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `icon` | `blob` | No |  |
| `name` | `string` | Yes | Display name; limits match the Web Tiles specification. |
| `params` | `array` | No | Parameters a binding site must or may supply. Names are unique within a tile. |
| `content` | `ref` → `lol.dids.sites.defs#manifest` | Yes | The tile's resources. Must name the bundle and contain a '/' entry. |
| `description` | `string` | No |  |

### `lol.dids.sites.tile#param`

**Type**: `object`

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.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `enum` | `array` | No | string: closed set of permitted values. |
| `name` | `string` | Yes | Key in the site record's parameters map. Matches [A-Za-z][A-Za-z0-9_]*; must not begin with an underscore. |
| `type` | `string` | Yes | 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` | No | array: the element type. Required when type is array, forbidden otherwise. One level: an item is never itself an array. |
| `accept` | `array` | No | blob: accepted MIME types, wildcards as in Lexicon (image/*). |
| `format` | `string` | No | string: Lexicon string format. |
| `maxSize` | `integer` | No | blob: maximum size in bytes. |
| `maximum` | `integer` | No | integer. |
| `minimum` | `integer` | No | integer. |
| `required` | `boolean` | No | Default false. An absent optional parameter is simply absent; tile code defaults it. |
| `maxLength` | `integer` | No | string: maximum UTF-8 bytes; array: maximum item count. |
| `description` | `string` | No |  |
| `knownValues` | `array` | No | string: open, advisory set. |
| `maxGraphemes` | `integer` | No | string. |

### `lol.dids.sites.tile#itemSchema`

**Type**: `object`

Element type of an array parameter: any #param type except array, with the same constraint fields.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `enum` | `array` | No |  |
| `type` | `string` | Yes |  |
| `accept` | `array` | No |  |
| `format` | `string` | No |  |
| `maxSize` | `integer` | No |  |
| `maximum` | `integer` | No |  |
| `minimum` | `integer` | No |  |
| `maxLength` | `integer` | No |  |
| `knownValues` | `array` | No |  |
| `maxGraphemes` | `integer` | No |  |

## Raw Schema

```json
{
  "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."
}
```
