# com.linxtape.tape

> Published by [linxtape.com](https://lexicon.garden/identity/did:plc:m3miohxmpd3sbnaapp3kvh2p)

✓ This is the authoritative definition for this NSID.

## Description

A tape: a public collection of links around a topic, in order, like a mixtape. Every track plays on its creator's own site or player.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:m3miohxmpd3sbnaapp3kvh2p/com.linxtape.tape)
- [Documentation](https://lexicon.garden/lexicon/did:plc:m3miohxmpd3sbnaapp3kvh2p/com.linxtape.tape/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:m3miohxmpd3sbnaapp3kvh2p/com.linxtape.tape/examples)

## Definitions

### `com.linxtape.tape#liner`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `note` | `string` | No |  |
| `signOff` | `string` | No |  |
| `tips` | `array` | No |  |

### `com.linxtape.tape`

**Type**: `record`

**Key**: `tid`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `afterThey` | `string` | No | Optional goal: what they'll get from it. |
| `createdAt` | `string` (datetime) | Yes |  |
| `forWho` | `string` | No | Optional goal: who it's for. |
| `liner` | `ref` → `#liner` | No |  |
| `listed` | `boolean` | Yes | true = listed in search. false = link-only: kept out of search, but still public. |
| `look` | `string` | No | Cassette shell and stripe set. |
| `oneLiner` | `string` | No | What the tape is about, in one line. |
| `sides` | `array` | Yes |  |
| `title` | `string` | Yes |  |
| `updatedAt` | `string` (datetime) | No |  |

### `com.linxtape.tape#side`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `letter` | `string` | Yes |  |
| `name` | `string` | No |  |
| `tracks` | `array` | Yes |  |

### `com.linxtape.tape#track`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `id` | `string` | Yes | Stable identifier, generated once when the track is added and never reused within the tape. |
| `kind` | `string` | Yes |  |
| `minutes` | `integer` | Yes | Video duration or estimated reading time, in whole minutes. |
| `note` | `string` | No | The curator's note: why this one. |
| `pages` | `integer` | No |  |
| `sourceDomain` | `string` | No |  |
| `title` | `string` | Yes |  |
| `url` | `string` (uri) | Yes |  |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "liner": {
      "properties": {
        "note": {
          "maxGraphemes": 280,
          "maxLength": 2800,
          "type": "string"
        },
        "signOff": {
          "maxGraphemes": 60,
          "maxLength": 600,
          "type": "string"
        },
        "tips": {
          "items": {
            "maxGraphemes": 140,
            "maxLength": 1400,
            "type": "string"
          },
          "maxLength": 3,
          "type": "array"
        }
      },
      "type": "object"
    },
    "main": {
      "key": "tid",
      "record": {
        "properties": {
          "afterThey": {
            "description": "Optional goal: what they'll get from it.",
            "maxGraphemes": 200,
            "maxLength": 2000,
            "type": "string"
          },
          "createdAt": {
            "format": "datetime",
            "type": "string"
          },
          "forWho": {
            "description": "Optional goal: who it's for.",
            "maxGraphemes": 200,
            "maxLength": 2000,
            "type": "string"
          },
          "liner": {
            "ref": "#liner",
            "type": "ref"
          },
          "listed": {
            "description": "true = listed in search. false = link-only: kept out of search, but still public.",
            "type": "boolean"
          },
          "look": {
            "description": "Cassette shell and stripe set.",
            "knownValues": [
              "smoke-sunset",
              "red-mono",
              "blue-ocean",
              "clear-sunset"
            ],
            "maxLength": 64,
            "type": "string"
          },
          "oneLiner": {
            "description": "What the tape is about, in one line.",
            "maxGraphemes": 200,
            "maxLength": 2000,
            "type": "string"
          },
          "sides": {
            "items": {
              "ref": "#side",
              "type": "ref"
            },
            "maxLength": 2,
            "minLength": 1,
            "type": "array"
          },
          "title": {
            "maxGraphemes": 100,
            "maxLength": 1000,
            "minLength": 1,
            "type": "string"
          },
          "updatedAt": {
            "format": "datetime",
            "type": "string"
          }
        },
        "required": [
          "title",
          "sides",
          "listed",
          "createdAt"
        ],
        "type": "object"
      },
      "type": "record"
    },
    "side": {
      "properties": {
        "letter": {
          "enum": [
            "A",
            "B"
          ],
          "type": "string"
        },
        "name": {
          "maxGraphemes": 60,
          "maxLength": 600,
          "type": "string"
        },
        "tracks": {
          "items": {
            "ref": "#track",
            "type": "ref"
          },
          "maxLength": 50,
          "type": "array"
        }
      },
      "required": [
        "letter",
        "tracks"
      ],
      "type": "object"
    },
    "track": {
      "properties": {
        "id": {
          "description": "Stable identifier, generated once when the track is added and never reused within the tape.",
          "maxLength": 32,
          "minLength": 1,
          "type": "string"
        },
        "kind": {
          "knownValues": [
            "video",
            "page",
            "pdf"
          ],
          "maxLength": 32,
          "type": "string"
        },
        "minutes": {
          "description": "Video duration or estimated reading time, in whole minutes.",
          "maximum": 100000,
          "minimum": 0,
          "type": "integer"
        },
        "note": {
          "description": "The curator's note: why this one.",
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        },
        "pages": {
          "maximum": 100000,
          "minimum": 0,
          "type": "integer"
        },
        "sourceDomain": {
          "maxLength": 253,
          "type": "string"
        },
        "title": {
          "maxGraphemes": 300,
          "maxLength": 3000,
          "type": "string"
        },
        "url": {
          "format": "uri",
          "maxLength": 2048,
          "type": "string"
        }
      },
      "required": [
        "id",
        "url",
        "kind",
        "title",
        "minutes"
      ],
      "type": "object"
    }
  },
  "description": "A tape: a public collection of links around a topic, in order, like a mixtape. Every track plays on its creator's own site or player.",
  "id": "com.linxtape.tape",
  "lexicon": 1
}
```
