# net.wireservice.content

> Published by [wireservice.net](https://lexicon.garden/identity/did:plc:lktj64hp7lc3fzuf6iyy7lwj)

✓ This is the authoritative definition for this NSID.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:lktj64hp7lc3fzuf6iyy7lwj/net.wireservice.content)
- [Documentation](https://lexicon.garden/lexicon/did:plc:lktj64hp7lc3fzuf6iyy7lwj/net.wireservice.content/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:lktj64hp7lc3fzuf6iyy7lwj/net.wireservice.content/examples)

## Definitions

### `net.wireservice.content#border`

**Type**: `object`

Border definition. The stroke property defines the line style; the boolean flags control which sides are drawn (all true by default when omitted).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `bottom` | `boolean` | No |  |
| `left` | `boolean` | No |  |
| `right` | `boolean` | No |  |
| `stroke` | `ref` → `net.wireservice.defs#strokeStyle` | No |  |
| `top` | `boolean` | No |  |

### `net.wireservice.content#componentLayoutValues`

**Type**: `object`

The actual layout values: column placement, margins, padding, alignment, sizing. Used as the values payload for both namedComponentLayout (defaults) and conditionalComponentLayout (overrides).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `columnSpan` | `integer` | No | Number of columns this component spans. |
| `columnStart` | `integer` | No | Starting column index (zero-based). |
| `horizontalContentAlignment` | `string` | No |  |
| `ignoreDocumentGutter` | `string` | No | Which sides should ignore the document gutter. |
| `ignoreDocumentMargin` | `string` | No | Which sides should ignore the document margin. |
| `margin` | `ref` → `net.wireservice.defs#margin` | No |  |
| `maximumContentWidth` | `ref` → `net.wireservice.defs#measurement` | No |  |
| `minimumHeight` | `ref` → `net.wireservice.defs#measurement` | No |  |
| `padding` | `ref` → `net.wireservice.defs#padding` | No |  |

### `net.wireservice.content#componentStyleValues`

**Type**: `object`

The actual visual style values: background color, border, corner radius, opacity. Used as the values payload for both namedComponentStyle (defaults) and conditionalComponentStyle (overrides).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `backgroundColor` | `string` | No | Background color as hex string (e.g., '#F7F7F7'). |
| `border` | `ref` → `#border` | No |  |
| `cornerRadius` | `integer` | No | Corner radius in points. |
| `opacity` | `integer` | No | Opacity as integer 0-100 (100 = fully opaque). |

### `net.wireservice.content#conditionalComponentLayout`

**Type**: `object`

Conditional override for a named component layout. The values field carries the override payload; conditions describe when it applies.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `conditions` | `array` | Yes | Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND. |
| `values` | `ref` → `#componentLayoutValues` | No | Override values. Fields not set here keep the parent's defaults. |

### `net.wireservice.content#conditionalComponentStyle`

**Type**: `object`

Conditional override for a named component style. The values field carries the override payload; conditions describe when it applies.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `conditions` | `array` | Yes | Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND. |
| `values` | `ref` → `#componentStyleValues` | No | Override values. Fields not set here keep the parent's defaults. |

### `net.wireservice.content#conditionalTextStyle`

**Type**: `object`

Conditional override for a named text style. The values field carries the override payload; conditions describe when it applies.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `conditions` | `array` | Yes | Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND. |
| `values` | `ref` → `#textStyleValues` | No | Override values. Fields not set here keep the parent's defaults. |

### `net.wireservice.content#correction`

**Type**: `object`

A notice appended to an article after publication.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `createdAt` | `string` (datetime) | Yes |  |
| `kind` | `string` | Yes |  |
| `text` | `array` | Yes | Notice text as an array of text runs with optional formatting marks. |

### `net.wireservice.content#documentLayout`

**Type**: `object`

Document-level layout grid defining the column structure for component placement.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `columns` | `integer` | Yes | Number of columns in the layout grid. |
| `gutter` | `integer` | No | Gutter width between columns in points. |
| `margin` | `integer` | No | Document margin in points. |
| `minimumColumnWidth` | `integer` | No | Narrowest a column may get, in points. Below the viewport width where columns would be narrower, the layout collapses to one column. Defaults to 40. |
| `width` | `integer` | Yes | Maximum layout width in points. |

### `net.wireservice.content`

**Type**: `object`

Apple News Format-derived rich article content for standard.site documents. Plugs into the open content union of site.standard.document.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `blob` | `blob` | No | External JSON blob containing the components array. Used when content exceeds the record size limit. Mutually exclusive with the inline components array. |
| `blobRefs` | `array` | No | Blob references used within content. Required in blob mode to prevent garbage collection of image and media blobs. |
| `componentLayouts` | `array` | No | Named component layout definitions. Components reference these by name via their layout field. |
| `componentStyles` | `array` | No | Named component style definitions. Components reference these by name via their style field. |
| `componentTextStyles` | `array` | No | Named text style definitions. Text components reference these by name via their textStyle field. |
| `components` | `array` | No | Inline component array. Used when content fits within the record size limit. |
| `corrections` | `array` | No | Published corrections, clarifications, and updates, oldest first. Entries are appended, never edited or removed. |
| `language` | `string` (language) | No | BCP-47 language code for the article content. |
| `layout` | `ref` → `#documentLayout` | No | Document-level layout grid. Overrides the stylesheet's default grid if a stylesheet is referenced. |
| `stylesheet` | `string` (at-uri) | No | AT URI of a net.wireservice.stylesheet record providing default named layouts, styles, and text styles. Document-level componentLayouts/componentStyles/componentTextStyles entries with the same name override the stylesheet's. |

### `net.wireservice.content#namedComponentLayout`

**Type**: `object`

A named component layout definition controlling column placement, margins, and sizing. Components reference these by the name field.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `conditional` | `array` | No | Conditional overrides. Each entry's values replace the layout's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins. |
| `name` | `string` | Yes | Identifier for this layout, referenced by components. |
| `values` | `ref` → `#componentLayoutValues` | No | Default layout values. Conditional entries can override individual fields. |

### `net.wireservice.content#namedComponentStyle`

**Type**: `object`

A named component style definition controlling visual appearance. Components reference these by the name field.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `conditional` | `array` | No | Conditional overrides. Each entry's values replace the style's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins. |
| `name` | `string` | Yes | Identifier for this style, referenced by components. |
| `values` | `ref` → `#componentStyleValues` | No | Default style values. Conditional entries can override individual fields. |

### `net.wireservice.content#namedTextStyle`

**Type**: `object`

A named text style definition. Text components reference these by the name field.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `conditional` | `array` | No | Conditional overrides. Each entry's values replace the text style's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins. |
| `name` | `string` | Yes | Identifier for this style, referenced by components. |
| `values` | `ref` → `#textStyleValues` | No | Default text style values. Conditional entries can override individual fields. |

### `net.wireservice.content#textStyleValues`

**Type**: `object`

The actual text style values: font, size, color, alignment, spacing, decoration. Used as the values payload for both namedTextStyle (defaults) and conditionalTextStyle (overrides).

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `backgroundColor` | `string` | No | Text background color as hex string. |
| `firstLineIndent` | `integer` | No | First line indent in points. |
| `fontFamily` | `string` | No | Font family name (e.g., 'Georgia', 'Helvetica Neue'). |
| `fontName` | `string` | No | PostScript font name for precise font selection. |
| `fontSize` | `integer` | No | Font size in points. |
| `fontStyle` | `string` | No |  |
| `fontWeight` | `integer` | No | Font weight (100 = thin, 400 = normal, 700 = bold, 900 = black). |
| `hyphenation` | `boolean` | No | Whether to enable automatic hyphenation. |
| `lineHeight` | `integer` | No | Line height in points. |
| `paragraphSpacingAfter` | `integer` | No | Space after paragraphs in points. |
| `paragraphSpacingBefore` | `integer` | No | Space before paragraphs in points. |
| `strikethrough` | `boolean` | No | Whether text has strikethrough decoration. |
| `textAlignment` | `string` | No |  |
| `textColor` | `string` | No | Text color as hex string (e.g., '#333333'). |
| `textTransform` | `string` | No |  |
| `tracking` | `integer` | No | Letter spacing in hundredths of a point. |
| `underline` | `boolean` | No | Whether text has underline decoration. |
| `verticalAlignment` | `string` | No |  |

## Raw Schema

```json
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "border": {
      "description": "Border definition. The stroke property defines the line style; the boolean flags control which sides are drawn (all true by default when omitted).",
      "properties": {
        "bottom": {
          "type": "boolean"
        },
        "left": {
          "type": "boolean"
        },
        "right": {
          "type": "boolean"
        },
        "stroke": {
          "ref": "net.wireservice.defs#strokeStyle",
          "type": "ref"
        },
        "top": {
          "type": "boolean"
        }
      },
      "type": "object"
    },
    "componentLayoutValues": {
      "description": "The actual layout values: column placement, margins, padding, alignment, sizing. Used as the values payload for both namedComponentLayout (defaults) and conditionalComponentLayout (overrides).",
      "properties": {
        "columnSpan": {
          "description": "Number of columns this component spans.",
          "minimum": 1,
          "type": "integer"
        },
        "columnStart": {
          "description": "Starting column index (zero-based).",
          "minimum": 0,
          "type": "integer"
        },
        "horizontalContentAlignment": {
          "knownValues": [
            "left",
            "center",
            "right"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "ignoreDocumentGutter": {
          "description": "Which sides should ignore the document gutter.",
          "knownValues": [
            "none",
            "left",
            "right",
            "both"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "ignoreDocumentMargin": {
          "description": "Which sides should ignore the document margin.",
          "knownValues": [
            "none",
            "left",
            "right",
            "both"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "margin": {
          "ref": "net.wireservice.defs#margin",
          "type": "ref"
        },
        "maximumContentWidth": {
          "ref": "net.wireservice.defs#measurement",
          "type": "ref"
        },
        "minimumHeight": {
          "ref": "net.wireservice.defs#measurement",
          "type": "ref"
        },
        "padding": {
          "ref": "net.wireservice.defs#padding",
          "type": "ref"
        }
      },
      "type": "object"
    },
    "componentStyleValues": {
      "description": "The actual visual style values: background color, border, corner radius, opacity. Used as the values payload for both namedComponentStyle (defaults) and conditionalComponentStyle (overrides).",
      "properties": {
        "backgroundColor": {
          "description": "Background color as hex string (e.g., '#F7F7F7').",
          "maxLength": 64,
          "type": "string"
        },
        "border": {
          "ref": "#border",
          "type": "ref"
        },
        "cornerRadius": {
          "description": "Corner radius in points.",
          "minimum": 0,
          "type": "integer"
        },
        "opacity": {
          "description": "Opacity as integer 0-100 (100 = fully opaque).",
          "maximum": 100,
          "minimum": 0,
          "type": "integer"
        }
      },
      "type": "object"
    },
    "conditionalComponentLayout": {
      "description": "Conditional override for a named component layout. The values field carries the override payload; conditions describe when it applies.",
      "properties": {
        "conditions": {
          "description": "Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND.",
          "items": {
            "ref": "net.wireservice.defs#condition",
            "type": "ref"
          },
          "type": "array"
        },
        "values": {
          "description": "Override values. Fields not set here keep the parent's defaults.",
          "ref": "#componentLayoutValues",
          "type": "ref"
        }
      },
      "required": [
        "conditions"
      ],
      "type": "object"
    },
    "conditionalComponentStyle": {
      "description": "Conditional override for a named component style. The values field carries the override payload; conditions describe when it applies.",
      "properties": {
        "conditions": {
          "description": "Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND.",
          "items": {
            "ref": "net.wireservice.defs#condition",
            "type": "ref"
          },
          "type": "array"
        },
        "values": {
          "description": "Override values. Fields not set here keep the parent's defaults.",
          "ref": "#componentStyleValues",
          "type": "ref"
        }
      },
      "required": [
        "conditions"
      ],
      "type": "object"
    },
    "conditionalTextStyle": {
      "description": "Conditional override for a named text style. The values field carries the override payload; conditions describe when it applies.",
      "properties": {
        "conditions": {
          "description": "Conditions that trigger this override. Multiple conditions combine as OR (any match applies). Combine criteria within a single condition object for AND.",
          "items": {
            "ref": "net.wireservice.defs#condition",
            "type": "ref"
          },
          "type": "array"
        },
        "values": {
          "description": "Override values. Fields not set here keep the parent's defaults.",
          "ref": "#textStyleValues",
          "type": "ref"
        }
      },
      "required": [
        "conditions"
      ],
      "type": "object"
    },
    "correction": {
      "description": "A notice appended to an article after publication.",
      "properties": {
        "createdAt": {
          "format": "datetime",
          "type": "string"
        },
        "kind": {
          "knownValues": [
            "correction",
            "clarification",
            "update",
            "editorsNote"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "text": {
          "description": "Notice text as an array of text runs with optional formatting marks.",
          "items": {
            "ref": "net.wireservice.defs#textRun",
            "type": "ref"
          },
          "type": "array"
        }
      },
      "required": [
        "kind",
        "text",
        "createdAt"
      ],
      "type": "object"
    },
    "documentLayout": {
      "description": "Document-level layout grid defining the column structure for component placement.",
      "properties": {
        "columns": {
          "description": "Number of columns in the layout grid.",
          "minimum": 1,
          "type": "integer"
        },
        "gutter": {
          "description": "Gutter width between columns in points.",
          "minimum": 0,
          "type": "integer"
        },
        "margin": {
          "description": "Document margin in points.",
          "minimum": 0,
          "type": "integer"
        },
        "minimumColumnWidth": {
          "description": "Narrowest a column may get, in points. Below the viewport width where columns would be narrower, the layout collapses to one column. Defaults to 40.",
          "minimum": 1,
          "type": "integer"
        },
        "width": {
          "description": "Maximum layout width in points.",
          "minimum": 1,
          "type": "integer"
        }
      },
      "required": [
        "columns",
        "width"
      ],
      "type": "object"
    },
    "main": {
      "description": "Apple News Format-derived rich article content for standard.site documents. Plugs into the open content union of site.standard.document.",
      "properties": {
        "blob": {
          "description": "External JSON blob containing the components array. Used when content exceeds the record size limit. Mutually exclusive with the inline components array.",
          "type": "blob"
        },
        "blobRefs": {
          "description": "Blob references used within content. Required in blob mode to prevent garbage collection of image and media blobs.",
          "items": {
            "type": "blob"
          },
          "type": "array"
        },
        "componentLayouts": {
          "description": "Named component layout definitions. Components reference these by name via their layout field.",
          "items": {
            "ref": "#namedComponentLayout",
            "type": "ref"
          },
          "type": "array"
        },
        "componentStyles": {
          "description": "Named component style definitions. Components reference these by name via their style field.",
          "items": {
            "ref": "#namedComponentStyle",
            "type": "ref"
          },
          "type": "array"
        },
        "componentTextStyles": {
          "description": "Named text style definitions. Text components reference these by name via their textStyle field.",
          "items": {
            "ref": "#namedTextStyle",
            "type": "ref"
          },
          "type": "array"
        },
        "components": {
          "description": "Inline component array. Used when content fits within the record size limit.",
          "items": {
            "closed": false,
            "refs": [
              "net.wireservice.component.body",
              "net.wireservice.component.heading",
              "net.wireservice.component.image",
              "net.wireservice.component.photo",
              "net.wireservice.component.video",
              "net.wireservice.component.audio",
              "net.wireservice.component.gallery",
              "net.wireservice.component.container",
              "net.wireservice.component.divider",
              "net.wireservice.component.quote",
              "net.wireservice.component.byline",
              "net.wireservice.component.embed",
              "net.wireservice.component.map",
              "net.wireservice.component.linkButton",
              "net.wireservice.component.adSlot"
            ],
            "type": "union"
          },
          "type": "array"
        },
        "corrections": {
          "description": "Published corrections, clarifications, and updates, oldest first. Entries are appended, never edited or removed.",
          "items": {
            "ref": "#correction",
            "type": "ref"
          },
          "type": "array"
        },
        "language": {
          "description": "BCP-47 language code for the article content.",
          "format": "language",
          "maxLength": 64,
          "type": "string"
        },
        "layout": {
          "description": "Document-level layout grid. Overrides the stylesheet's default grid if a stylesheet is referenced.",
          "ref": "#documentLayout",
          "type": "ref"
        },
        "stylesheet": {
          "description": "AT URI of a net.wireservice.stylesheet record providing default named layouts, styles, and text styles. Document-level componentLayouts/componentStyles/componentTextStyles entries with the same name override the stylesheet's.",
          "format": "at-uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "namedComponentLayout": {
      "description": "A named component layout definition controlling column placement, margins, and sizing. Components reference these by the name field.",
      "properties": {
        "conditional": {
          "description": "Conditional overrides. Each entry's values replace the layout's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins.",
          "items": {
            "ref": "#conditionalComponentLayout",
            "type": "ref"
          },
          "type": "array"
        },
        "name": {
          "description": "Identifier for this layout, referenced by components.",
          "maxLength": 256,
          "type": "string"
        },
        "values": {
          "description": "Default layout values. Conditional entries can override individual fields.",
          "ref": "#componentLayoutValues",
          "type": "ref"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "namedComponentStyle": {
      "description": "A named component style definition controlling visual appearance. Components reference these by the name field.",
      "properties": {
        "conditional": {
          "description": "Conditional overrides. Each entry's values replace the style's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins.",
          "items": {
            "ref": "#conditionalComponentStyle",
            "type": "ref"
          },
          "type": "array"
        },
        "name": {
          "description": "Identifier for this style, referenced by components.",
          "maxLength": 256,
          "type": "string"
        },
        "values": {
          "description": "Default style values. Conditional entries can override individual fields.",
          "ref": "#componentStyleValues",
          "type": "ref"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "namedTextStyle": {
      "description": "A named text style definition. Text components reference these by the name field.",
      "properties": {
        "conditional": {
          "description": "Conditional overrides. Each entry's values replace the text style's defaults when any of its conditions match the rendering context. Entries are evaluated in order; the first match wins.",
          "items": {
            "ref": "#conditionalTextStyle",
            "type": "ref"
          },
          "type": "array"
        },
        "name": {
          "description": "Identifier for this style, referenced by components.",
          "maxLength": 256,
          "type": "string"
        },
        "values": {
          "description": "Default text style values. Conditional entries can override individual fields.",
          "ref": "#textStyleValues",
          "type": "ref"
        }
      },
      "required": [
        "name"
      ],
      "type": "object"
    },
    "textStyleValues": {
      "description": "The actual text style values: font, size, color, alignment, spacing, decoration. Used as the values payload for both namedTextStyle (defaults) and conditionalTextStyle (overrides).",
      "properties": {
        "backgroundColor": {
          "description": "Text background color as hex string.",
          "maxLength": 64,
          "type": "string"
        },
        "firstLineIndent": {
          "description": "First line indent in points.",
          "minimum": 0,
          "type": "integer"
        },
        "fontFamily": {
          "description": "Font family name (e.g., 'Georgia', 'Helvetica Neue').",
          "maxLength": 256,
          "type": "string"
        },
        "fontName": {
          "description": "PostScript font name for precise font selection.",
          "maxLength": 256,
          "type": "string"
        },
        "fontSize": {
          "description": "Font size in points.",
          "maximum": 500,
          "minimum": 1,
          "type": "integer"
        },
        "fontStyle": {
          "knownValues": [
            "normal",
            "italic",
            "oblique"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "fontWeight": {
          "description": "Font weight (100 = thin, 400 = normal, 700 = bold, 900 = black).",
          "maximum": 900,
          "minimum": 100,
          "type": "integer"
        },
        "hyphenation": {
          "description": "Whether to enable automatic hyphenation.",
          "type": "boolean"
        },
        "lineHeight": {
          "description": "Line height in points.",
          "minimum": 1,
          "type": "integer"
        },
        "paragraphSpacingAfter": {
          "description": "Space after paragraphs in points.",
          "minimum": 0,
          "type": "integer"
        },
        "paragraphSpacingBefore": {
          "description": "Space before paragraphs in points.",
          "minimum": 0,
          "type": "integer"
        },
        "strikethrough": {
          "description": "Whether text has strikethrough decoration.",
          "type": "boolean"
        },
        "textAlignment": {
          "knownValues": [
            "left",
            "center",
            "right",
            "justified",
            "none"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "textColor": {
          "description": "Text color as hex string (e.g., '#333333').",
          "maxLength": 64,
          "type": "string"
        },
        "textTransform": {
          "knownValues": [
            "uppercase",
            "lowercase",
            "capitalize",
            "none"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "tracking": {
          "description": "Letter spacing in hundredths of a point.",
          "type": "integer"
        },
        "underline": {
          "description": "Whether text has underline decoration.",
          "type": "boolean"
        },
        "verticalAlignment": {
          "knownValues": [
            "superscript",
            "subscript",
            "baseline"
          ],
          "maxLength": 64,
          "type": "string"
        }
      },
      "type": "object"
    }
  },
  "id": "net.wireservice.content",
  "lexicon": 1
}
```
