# club.syntax.content.files

> Published by [syntax.club](https://lexicon.garden/identity/did:plc:vwcdvcrlwwvfs4bfmevarcz5)

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:vwcdvcrlwwvfs4bfmevarcz5/club.syntax.content.files)
- [Documentation](https://lexicon.garden/lexicon/did:plc:vwcdvcrlwwvfs4bfmevarcz5/club.syntax.content.files/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:vwcdvcrlwwvfs4bfmevarcz5/club.syntax.content.files/examples)

## Definitions

### `club.syntax.content.files#file`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | `string` | Yes | Stable identifier unique within the snap (e.g. TID, UUID). |
| `name` | `string` | No | Optional file name including extension. |
| `content` | `string` | Yes | Raw file content. |
| `variant` | `string` | No | Optional language variant (e.g. jsx, tsx, vue). |
| `language` | `string` | Yes | Canonical programming language identifier. |
| `description` | `string` | No | Optional description or context. |

### `club.syntax.content.files`

**Type**: `object`

A collection of embedded files forming a multi-file code snap.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `files` | `array` | Yes | Ordered list of files defining display and traversal order. |
| `primaryId` | `string` | Yes | Identifier of the primary file. Must match the `id` of one of the items. |

## Raw Schema

```json
{
  "id": "club.syntax.content.files",
  "defs": {
    "file": {
      "type": "object",
      "required": [
        "id",
        "language",
        "content"
      ],
      "properties": {
        "id": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Stable identifier unique within the snap (e.g. TID, UUID)."
        },
        "name": {
          "type": "string",
          "description": "Optional file name including extension.",
          "maxGraphemes": 140
        },
        "content": {
          "type": "string",
          "maxLength": 5000,
          "minLength": 1,
          "description": "Raw file content."
        },
        "variant": {
          "type": "string",
          "maxLength": 32,
          "description": "Optional language variant (e.g. jsx, tsx, vue)."
        },
        "language": {
          "type": "string",
          "maxLength": 32,
          "minLength": 1,
          "description": "Canonical programming language identifier."
        },
        "description": {
          "type": "string",
          "description": "Optional description or context.",
          "maxGraphemes": 500
        }
      }
    },
    "main": {
      "type": "object",
      "required": [
        "files",
        "primaryId"
      ],
      "properties": {
        "files": {
          "type": "array",
          "items": {
            "ref": "#file",
            "type": "ref"
          },
          "maxLength": 4,
          "minLength": 1,
          "description": "Ordered list of files defining display and traversal order."
        },
        "primaryId": {
          "type": "string",
          "maxLength": 64,
          "description": "Identifier of the primary file. Must match the `id` of one of the items."
        }
      },
      "description": "A collection of embedded files forming a multi-file code snap."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
