# so.sprk.embed.defs

> Published by [sprk.so](https://lexicon.garden/identity/did:plc:cveom2iroj3mt747sd4qqnr2)

✓ This is the authoritative definition for this NSID.

## Description

Shared definitions for Spark interactive embeds.

## Links

- [View on Lexicon Garden](https://lexicon.garden/lexicon/did:plc:cveom2iroj3mt747sd4qqnr2/so.sprk.embed.defs)
- [Documentation](https://lexicon.garden/lexicon/did:plc:cveom2iroj3mt747sd4qqnr2/so.sprk.embed.defs/docs)
- [Examples](https://lexicon.garden/lexicon/did:plc:cveom2iroj3mt747sd4qqnr2/so.sprk.embed.defs/examples)

## Definitions

### `so.sprk.embed.defs#frame`

**Type**: `object`

Bounding box in 10,000-based normalized coordinates relative to media canvas dimensions.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `h` | `integer` | Yes |  |
| `w` | `integer` | Yes |  |
| `x` | `integer` | Yes |  |
| `y` | `integer` | Yes |  |

### `so.sprk.embed.defs#views`

**Type**: `array`

**Items**:

Type: `union`

### `so.sprk.embed.defs#embeds`

**Type**: `array`

**Items**:

Type: `union`

### `so.sprk.embed.defs#mediaRef`

**Type**: `object`

Optional media locator for records containing multiple media items.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `index` | `integer` | Yes |  |

### `so.sprk.embed.defs#placement`

**Type**: `object`

Placement and layer metadata for an embed on a media canvas.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `frame` | `ref` → `#frame` | Yes |  |
| `zIndex` | `integer` | No |  |
| `mediaRef` | `ref` → `#mediaRef` | No |  |
| `rotation` | `integer` | No |  |

## Raw Schema

```json
{
  "id": "so.sprk.embed.defs",
  "defs": {
    "frame": {
      "type": "object",
      "required": [
        "x",
        "y",
        "w",
        "h"
      ],
      "properties": {
        "h": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1
        },
        "w": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 1
        },
        "x": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 0
        },
        "y": {
          "type": "integer",
          "maximum": 10000,
          "minimum": 0
        }
      },
      "description": "Bounding box in 10,000-based normalized coordinates relative to media canvas dimensions."
    },
    "views": {
      "type": "array",
      "items": {
        "refs": [
          "so.sprk.embed.mention#view",
          "so.sprk.embed.record#view"
        ],
        "type": "union"
      }
    },
    "embeds": {
      "type": "array",
      "items": {
        "refs": [
          "so.sprk.embed.mention",
          "so.sprk.embed.record"
        ],
        "type": "union"
      }
    },
    "mediaRef": {
      "type": "object",
      "required": [
        "index"
      ],
      "properties": {
        "index": {
          "type": "integer",
          "minimum": 0
        }
      },
      "description": "Optional media locator for records containing multiple media items."
    },
    "placement": {
      "type": "object",
      "required": [
        "frame"
      ],
      "properties": {
        "frame": {
          "ref": "#frame",
          "type": "ref"
        },
        "zIndex": {
          "type": "integer",
          "minimum": 0
        },
        "mediaRef": {
          "ref": "#mediaRef",
          "type": "ref"
        },
        "rotation": {
          "type": "integer",
          "maximum": 359,
          "minimum": 0
        }
      },
      "description": "Placement and layer metadata for an embed on a media canvas."
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1,
  "description": "Shared definitions for Spark interactive embeds."
}
```
