# page.corvus.contentBlocks

> Published by [corvus.page](https://lexicon.garden/identity/did:plc:3qc4cbzcriye72qqqodeda26)

✓ This is the authoritative definition for this NSID.

## Description

Content block variants — atomic content types that compose into documents and database cells. Each sub-def is a block content shape selected by `page.corvus.block.blockType`.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:3qc4cbzcriye72qqqodeda26/page.corvus.contentBlocks)
- [Documentation](https://lexicon.garden/lexicon/did:plc:3qc4cbzcriye72qqqodeda26/page.corvus.contentBlocks/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:3qc4cbzcriye72qqqodeda26/page.corvus.contentBlocks/examples)

## Definitions

### `page.corvus.contentBlocks#code`

**Type**: `object`

A code block

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `text` | `ref` → `page.corvus.core#sequence` | No | The code content as a text sequence |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `language` | `ref` → `page.corvus.core#register` | No | Language identifier for syntax highlighting (string register, known values: javascript, typescript, python, rust, java, c, c++, c#, go) |
| `syntaxHighlightingTheme` | `ref` → `page.corvus.core#register` | No | Optional theme hint (string register) |

### `page.corvus.contentBlocks#image`

**Type**: `object`

An image block

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `alt` | `ref` → `page.corvus.core#register` | No | Accessibility text describing the image (string register) |
| `image` | `blob` | Yes | The image blob |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `aspectRatio` | `ref` → `page.corvus.core#register` | No | The aspect ratio of the image (register of #aspectRatio) |

### `page.corvus.contentBlocks#option`

**Type**: `object`

An option for a select block

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `color` | `ref` → `page.corvus.core#register` | No | Optional color hint (string register) |
| `label` | `ref` → `page.corvus.core#sequence` | Yes | Display name of the option as a text sequence |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |

### `page.corvus.contentBlocks#select`

**Type**: `object`

A select block — a set of options with one or more selected

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `options` | `ref` → `page.corvus.core#set` | No | The set of option block ids (set of #option) |
| `selected` | `ref` → `page.corvus.core#set` | No | The set of selected option block ids |
| `allowMultiple` | `ref` → `page.corvus.core#register` | No | True if multiple options can be selected (boolean register, defaults to false) |

### `page.corvus.contentBlocks#tagged`

**Type**: `object`

A tagged block — a set of string tags with an optional allowlist

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `values` | `ref` → `page.corvus.core#set` | No | The set of tag strings |
| `allowed` | `ref` → `page.corvus.core#set` | No | Optional allowlist of permitted tag strings |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |

### `page.corvus.contentBlocks#comment`

**Type**: `object`

A comment block

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `body` | `ref` → `page.corvus.core#register` | No | Comment body as a child block id |
| `author` | `string` (did) | Yes | The DID of the comment author |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `resolved` | `ref` → `page.corvus.core#register` | No | True if the comment is resolved (boolean register, defaults to false) |
| `reactions` | `ref` → `page.corvus.core#set` | No | Emoji reactions on the comment (set of #reaction) |
| `responseTo` | `union` | No | The content this comment is a response to |

### `page.corvus.contentBlocks#checkbox`

**Type**: `object`

A checkbox block — label content plus a checked flag

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `checked` | `ref` → `page.corvus.core#register` | No | True if the checkbox is checked (boolean register, defaults to false) |

### `page.corvus.contentBlocks#reaction`

**Type**: `object`

An emoji reaction with its author

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `emoji` | `string` | Yes | The emoji or short string of the reaction |
| `author` | `string` (did) | Yes | The DID of the reaction author |

### `page.corvus.contentBlocks#plainText`

**Type**: `object`

A plain text block

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `text` | `ref` → `page.corvus.core#sequence` | No | The text content as a text sequence |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |

### `page.corvus.contentBlocks#aspectRatio`

**Type**: `object`

A width:height aspect ratio

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `width` | `integer` | Yes | Width component of the ratio |
| `height` | `integer` | Yes | Height component of the ratio |

### `page.corvus.contentBlocks#commentBlockReference`

**Type**: `object`

A reference to a comment block

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |

### `page.corvus.contentBlocks#commentOrSetReference`

**Type**: `object`

A reference to a comment OR-set

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `orSet` | `string` | Yes | The OR-set of the comment reference |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `valueOp` | `string` | Yes | The operation id of the referenced value |

### `page.corvus.contentBlocks#commentRegisterReference`

**Type**: `object`

A reference to a comment register

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `valueOp` | `string` | Yes | The operation id of the referenced value |
| `register` | `string` | Yes | The register of the comment reference |

### `page.corvus.contentBlocks#commentSequenceReference`

**Type**: `object`

A reference to a comment sequence

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `atomEnd` | `string` | Yes | The end atom id of the comment reference (inclusive) - formatted as `operationId.atomIdx` |
| `blockId` | `string` (at-uri) | Yes | The AT-URI of this block record |
| `sequence` | `string` | Yes | The sequence of the comment reference |
| `atomStart` | `string` | Yes | The start atom id of the comment reference (inclusive) - formatted as `operationId.atomIdx` |

## Raw Schema

```json
{
  "id": "page.corvus.contentBlocks",
  "defs": {
    "code": {
      "type": "object",
      "required": [
        "blockId"
      ],
      "properties": {
        "text": {
          "ref": "page.corvus.core#sequence",
          "type": "ref",
          "description": "The code content as a text sequence"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "language": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "Language identifier for syntax highlighting (string register, known values: javascript, typescript, python, rust, java, c, c++, c#, go)"
        },
        "syntaxHighlightingTheme": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "Optional theme hint (string register)"
        }
      },
      "description": "A code block"
    },
    "image": {
      "type": "object",
      "required": [
        "blockId",
        "image"
      ],
      "properties": {
        "alt": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "Accessibility text describing the image (string register)"
        },
        "image": {
          "type": "blob",
          "mimeType": "image/*",
          "description": "The image blob"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "aspectRatio": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "The aspect ratio of the image (register of #aspectRatio)"
        }
      },
      "description": "An image block"
    },
    "option": {
      "type": "object",
      "required": [
        "blockId",
        "label"
      ],
      "properties": {
        "color": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "Optional color hint (string register)"
        },
        "label": {
          "ref": "page.corvus.core#sequence",
          "type": "ref",
          "description": "Display name of the option as a text sequence"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        }
      },
      "description": "An option for a select block"
    },
    "select": {
      "type": "object",
      "required": [
        "blockId"
      ],
      "properties": {
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "options": {
          "ref": "page.corvus.core#set",
          "type": "ref",
          "description": "The set of option block ids (set of #option)"
        },
        "selected": {
          "ref": "page.corvus.core#set",
          "type": "ref",
          "description": "The set of selected option block ids"
        },
        "allowMultiple": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "True if multiple options can be selected (boolean register, defaults to false)"
        }
      },
      "description": "A select block — a set of options with one or more selected"
    },
    "tagged": {
      "type": "object",
      "required": [
        "blockId"
      ],
      "properties": {
        "values": {
          "ref": "page.corvus.core#set",
          "type": "ref",
          "description": "The set of tag strings"
        },
        "allowed": {
          "ref": "page.corvus.core#set",
          "type": "ref",
          "description": "Optional allowlist of permitted tag strings"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        }
      },
      "description": "A tagged block — a set of string tags with an optional allowlist"
    },
    "comment": {
      "type": "object",
      "required": [
        "blockId",
        "author"
      ],
      "properties": {
        "body": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "Comment body as a child block id"
        },
        "author": {
          "type": "string",
          "format": "did",
          "description": "The DID of the comment author"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "resolved": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "True if the comment is resolved (boolean register, defaults to false)"
        },
        "reactions": {
          "ref": "page.corvus.core#set",
          "type": "ref",
          "description": "Emoji reactions on the comment (set of #reaction)"
        },
        "responseTo": {
          "refs": [
            "#commentBlockReference",
            "#commentSequenceReference",
            "#commentRegisterReference",
            "#commentOrSetReference"
          ],
          "type": "union",
          "closed": true,
          "description": "The content this comment is a response to"
        }
      },
      "description": "A comment block"
    },
    "checkbox": {
      "type": "object",
      "required": [
        "blockId"
      ],
      "properties": {
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "checked": {
          "ref": "page.corvus.core#register",
          "type": "ref",
          "description": "True if the checkbox is checked (boolean register, defaults to false)"
        }
      },
      "description": "A checkbox block — label content plus a checked flag"
    },
    "reaction": {
      "type": "object",
      "required": [
        "emoji",
        "author"
      ],
      "properties": {
        "emoji": {
          "type": "string",
          "description": "The emoji or short string of the reaction"
        },
        "author": {
          "type": "string",
          "format": "did",
          "description": "The DID of the reaction author"
        }
      },
      "description": "An emoji reaction with its author"
    },
    "plainText": {
      "type": "object",
      "required": [
        "blockId"
      ],
      "properties": {
        "text": {
          "ref": "page.corvus.core#sequence",
          "type": "ref",
          "description": "The text content as a text sequence"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        }
      },
      "description": "A plain text block"
    },
    "aspectRatio": {
      "type": "object",
      "required": [
        "width",
        "height"
      ],
      "properties": {
        "width": {
          "type": "integer",
          "minimum": 1,
          "description": "Width component of the ratio"
        },
        "height": {
          "type": "integer",
          "minimum": 1,
          "description": "Height component of the ratio"
        }
      },
      "description": "A width:height aspect ratio"
    },
    "commentBlockReference": {
      "type": "object",
      "required": [
        "blockId"
      ],
      "properties": {
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        }
      },
      "description": "A reference to a comment block"
    },
    "commentOrSetReference": {
      "type": "object",
      "required": [
        "blockId",
        "orSet",
        "valueOp"
      ],
      "properties": {
        "orSet": {
          "type": "string",
          "description": "The OR-set of the comment reference"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "valueOp": {
          "type": "string",
          "description": "The operation id of the referenced value"
        }
      },
      "description": "A reference to a comment OR-set"
    },
    "commentRegisterReference": {
      "type": "object",
      "required": [
        "blockId",
        "register",
        "valueOp"
      ],
      "properties": {
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "valueOp": {
          "type": "string",
          "description": "The operation id of the referenced value"
        },
        "register": {
          "type": "string",
          "description": "The register of the comment reference"
        }
      },
      "description": "A reference to a comment register"
    },
    "commentSequenceReference": {
      "type": "object",
      "required": [
        "blockId",
        "sequence",
        "atomStart",
        "atomEnd"
      ],
      "properties": {
        "atomEnd": {
          "type": "string",
          "description": "The end atom id of the comment reference (inclusive) - formatted as `operationId.atomIdx`"
        },
        "blockId": {
          "type": "string",
          "format": "at-uri",
          "description": "The AT-URI of this block record"
        },
        "sequence": {
          "type": "string",
          "description": "The sequence of the comment reference"
        },
        "atomStart": {
          "type": "string",
          "description": "The start atom id of the comment reference (inclusive) - formatted as `operationId.atomIdx`"
        }
      },
      "description": "A reference to a comment sequence"
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "Content block variants — atomic content types that compose into documents and database cells. Each sub-def is a block content shape selected by `page.corvus.block.blockType`."
}
```
