# space.highport.sites.tile

> Published by [lexicons.highport.space](https://lexicon.garden/identity/did:plc:ciygg5hma4q7ah2kxaszkyob)

✓ This is the authoritative definition for this NSID.

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

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:ciygg5hma4q7ah2kxaszkyob/space.highport.sites.tile)
- [Documentation](https://lexicon.garden/lexicon/did:plc:ciygg5hma4q7ah2kxaszkyob/space.highport.sites.tile/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:ciygg5hma4q7ah2kxaszkyob/space.highport.sites.tile/examples)

## Definitions

### `space.highport.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 must be unique within the tile. |
| `content` | `ref` → `space.highport.sites.defs#manifest` | Yes | The tile's resources. Must have a bundle name and a '/' entry. |
| `description` | `string` | No |  |

### `space.highport.sites.tile#param`

**Type**: `object`

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.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `enum` | `array` | No | For string: a closed set of allowed values. |
| `name` | `string` | Yes | 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` | `string` | Yes | 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` | No | For array: the element type. Required when type is array and not allowed otherwise. An item is never itself an array. |
| `accept` | `array` | No | For blob: accepted MIME types, with wildcards as in Lexicon (image/*). |
| `format` | `string` | No | For string: a Lexicon string format. |
| `maxSize` | `integer` | No | For blob: the maximum size in bytes. |
| `maximum` | `integer` | No | For integer: the maximum value. |
| `minimum` | `integer` | No | For integer: the minimum value. |
| `required` | `boolean` | No | Defaults to false. An optional parameter that is left out stays absent, and the tile's code supplies the default. |
| `maxLength` | `integer` | No | For string, the maximum UTF-8 bytes; for array, the maximum number of items. |
| `description` | `string` | No |  |
| `knownValues` | `array` | No | For string: an open, advisory set of values. |
| `maxGraphemes` | `integer` | No | For string: the maximum graphemes. |

### `space.highport.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": "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."
}
```
