# so.sprk.feed.defs

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

✓ This is the authoritative definition for this NSID.

## Links

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

## Definitions

### `so.sprk.feed.defs#postView`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `uri` | `string` (at-uri) | Yes |  |
| `media` | `union` | No |  |
| `sound` | `ref` → `so.sprk.sound.defs#audioView` | No |  |
| `author` | `ref` → `so.sprk.actor.defs#profileViewBasic` | Yes |  |
| `labels` | `array` | No |  |
| `record` | `unknown` | Yes |  |
| `viewer` | `ref` → `#viewerState` | No |  |
| `indexedAt` | `string` (datetime) | Yes |  |
| `likeCount` | `integer` | No |  |
| `replyCount` | `integer` | No |  |
| `threadgate` | `ref` → `#threadgateView` | No |  |
| `repostCount` | `integer` | No |  |

### `so.sprk.feed.defs#replyRef`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `root` | `union` | Yes |  |
| `parent` | `union` | Yes |  |
| `grandparentAuthor` | `ref` → `so.sprk.actor.defs#profileViewBasic` | No | When parent is a reply to another post, this is the author of that post. |

### `so.sprk.feed.defs#knownLike`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `by` | `ref` → `so.sprk.actor.defs#profileViewBasic` | Yes |  |
| `cid` | `string` (cid) | No |  |
| `uri` | `string` (at-uri) | No |  |
| `indexedAt` | `string` (datetime) | Yes |  |

### `so.sprk.feed.defs#replyView`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `uri` | `string` (at-uri) | Yes |  |
| `media` | `union` | No |  |
| `author` | `ref` → `so.sprk.actor.defs#profileViewBasic` | Yes |  |
| `labels` | `array` | No |  |
| `record` | `unknown` | Yes |  |
| `viewer` | `ref` → `#replyViewerState` | No |  |
| `indexedAt` | `string` (datetime) | Yes |  |
| `likeCount` | `integer` | No |  |
| `replyCount` | `integer` | No |  |

### `so.sprk.feed.defs#knownReply`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `by` | `ref` → `so.sprk.actor.defs#profileViewBasic` | Yes |  |
| `cid` | `string` (cid) | No |  |
| `uri` | `string` (at-uri) | No |  |
| `text` | `string` | No |  |
| `indexedAt` | `string` (datetime) | Yes |  |

### `so.sprk.feed.defs#blockedPost`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uri` | `string` (at-uri) | Yes |  |
| `author` | `ref` → `#blockedAuthor` | Yes |  |
| `blocked` | `boolean` | Yes |  |

### `so.sprk.feed.defs#interaction`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `item` | `string` (at-uri) | No |  |
| `event` | `string` | No |  |
| `feedContext` | `string` | No | Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton. |

### `so.sprk.feed.defs#knownRepost`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `by` | `ref` → `so.sprk.actor.defs#profileViewBasic` | Yes |  |
| `cid` | `string` (cid) | No |  |
| `uri` | `string` (at-uri) | No |  |
| `indexedAt` | `string` (datetime) | Yes |  |

### `so.sprk.feed.defs#requestLess`

**Type**: `token`

Request that less content like the given feed item be shown in the feed

Request that less content like the given feed item be shown in the feed

### `so.sprk.feed.defs#requestMore`

**Type**: `token`

Request that more content like the given feed item be shown in the feed

Request that more content like the given feed item be shown in the feed

### `so.sprk.feed.defs#viewerState`

**Type**: `object`

Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `like` | `string` (at-uri) | No |  |
| `repost` | `string` (at-uri) | No |  |
| `threadMuted` | `boolean` | No |  |
| `replyDisabled` | `boolean` | No |  |
| `embeddingDisabled` | `boolean` | No |  |
| `knownInteractions` | `array` | No |  |

### `so.sprk.feed.defs#feedViewPost`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `post` | `ref` → `#postView` | Yes |  |
| `feedContext` | `string` | No | Context provided by feed generator that may be passed back alongside interactions. |

### `so.sprk.feed.defs#notFoundPost`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `uri` | `string` (at-uri) | Yes |  |
| `notFound` | `boolean` | Yes |  |

### `so.sprk.feed.defs#blockedAuthor`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `did` | `string` (did) | Yes |  |
| `viewer` | `ref` → `so.sprk.actor.defs#viewerState` | No |  |

### `so.sprk.feed.defs#generatorView`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | Yes |  |
| `did` | `string` (did) | Yes |  |
| `uri` | `string` (at-uri) | Yes |  |
| `avatar` | `string` (uri) | No |  |
| `labels` | `array` | No |  |
| `viewer` | `ref` → `#generatorViewerState` | No |  |
| `creator` | `ref` → `so.sprk.actor.defs#profileView` | Yes |  |
| `indexedAt` | `string` (datetime) | Yes |  |
| `likeCount` | `integer` | No |  |
| `description` | `string` | No |  |
| `displayName` | `string` | Yes |  |
| `descriptionFacets` | `array` | No |  |
| `acceptsInteractions` | `boolean` | No |  |

### `so.sprk.feed.defs#threadContext`

**Type**: `object`

Metadata about this post within the context of the thread it is in.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `rootAuthorLike` | `string` (at-uri) | No |  |

### `so.sprk.feed.defs#threadViewPost`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `post` | `union` | Yes |  |
| `parent` | `union` | No |  |
| `replies` | `array` | No |  |
| `threadContext` | `ref` → `#threadContext` | No |  |

### `so.sprk.feed.defs#threadgateView`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `cid` | `string` (cid) | No |  |
| `uri` | `string` (at-uri) | No |  |
| `record` | `unknown` | No |  |

### `so.sprk.feed.defs#interactionLike`

**Type**: `token`

User liked the feed item

User liked the feed item

### `so.sprk.feed.defs#interactionSeen`

**Type**: `token`

Feed item was seen by user

Feed item was seen by user

### `so.sprk.feed.defs#clickthroughItem`

**Type**: `token`

User clicked through to the feed item

User clicked through to the feed item

### `so.sprk.feed.defs#interactionReply`

**Type**: `token`

User replied to the feed item

User replied to the feed item

### `so.sprk.feed.defs#interactionShare`

**Type**: `token`

User shared the feed item

User shared the feed item

### `so.sprk.feed.defs#replyViewerState`

**Type**: `object`

Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `like` | `string` (at-uri) | No |  |
| `threadMuted` | `boolean` | No |  |
| `replyDisabled` | `boolean` | No |  |
| `embeddingDisabled` | `boolean` | No |  |

### `so.sprk.feed.defs#skeletonFeedPost`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `post` | `string` (at-uri) | Yes |  |
| `feedContext` | `string` | No | Context that will be passed through to client and may be passed to feed generator back alongside interactions. |

### `so.sprk.feed.defs#clickthroughEmbed`

**Type**: `token`

User clicked through to the embedded content of the feed item

User clicked through to the embedded content of the feed item

### `so.sprk.feed.defs#interactionRepost`

**Type**: `token`

User reposted the feed item

User reposted the feed item

### `so.sprk.feed.defs#clickthroughAuthor`

**Type**: `token`

User clicked through to the author of the feed item

User clicked through to the author of the feed item

### `so.sprk.feed.defs#clickthroughReposter`

**Type**: `token`

User clicked through to the reposter of the feed item

User clicked through to the reposter of the feed item

### `so.sprk.feed.defs#generatorViewerState`

**Type**: `object`

| Property | Type | Required | Description |
|----------|------|----------|-------------|
| `like` | `string` (at-uri) | No |  |

## Raw Schema

```json
{
  "id": "so.sprk.feed.defs",
  "defs": {
    "postView": {
      "type": "object",
      "required": [
        "uri",
        "cid",
        "author",
        "record",
        "indexedAt"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "media": {
          "refs": [
            "so.sprk.media.images#view",
            "so.sprk.media.video#view"
          ],
          "type": "union"
        },
        "sound": {
          "ref": "so.sprk.sound.defs#audioView",
          "type": "ref"
        },
        "author": {
          "ref": "so.sprk.actor.defs#profileViewBasic",
          "type": "ref"
        },
        "labels": {
          "type": "array",
          "items": {
            "ref": "com.atproto.label.defs#label",
            "type": "ref"
          }
        },
        "record": {
          "type": "unknown"
        },
        "viewer": {
          "ref": "#viewerState",
          "type": "ref"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "likeCount": {
          "type": "integer"
        },
        "replyCount": {
          "type": "integer"
        },
        "threadgate": {
          "ref": "#threadgateView",
          "type": "ref"
        },
        "repostCount": {
          "type": "integer"
        }
      }
    },
    "replyRef": {
      "type": "object",
      "required": [
        "root",
        "parent"
      ],
      "properties": {
        "root": {
          "refs": [
            "#postView",
            "#notFoundPost",
            "#blockedPost"
          ],
          "type": "union"
        },
        "parent": {
          "refs": [
            "#postView",
            "#replyView",
            "#notFoundPost",
            "#blockedPost"
          ],
          "type": "union"
        },
        "grandparentAuthor": {
          "ref": "so.sprk.actor.defs#profileViewBasic",
          "type": "ref",
          "description": "When parent is a reply to another post, this is the author of that post."
        }
      }
    },
    "knownLike": {
      "type": "object",
      "required": [
        "by",
        "indexedAt"
      ],
      "properties": {
        "by": {
          "ref": "so.sprk.actor.defs#profileViewBasic",
          "type": "ref"
        },
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        }
      }
    },
    "replyView": {
      "type": "object",
      "required": [
        "uri",
        "cid",
        "author",
        "record",
        "indexedAt"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "media": {
          "refs": [
            "so.sprk.media.image#view"
          ],
          "type": "union"
        },
        "author": {
          "ref": "so.sprk.actor.defs#profileViewBasic",
          "type": "ref"
        },
        "labels": {
          "type": "array",
          "items": {
            "ref": "com.atproto.label.defs#label",
            "type": "ref"
          }
        },
        "record": {
          "type": "unknown"
        },
        "viewer": {
          "ref": "#replyViewerState",
          "type": "ref"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "likeCount": {
          "type": "integer"
        },
        "replyCount": {
          "type": "integer"
        }
      }
    },
    "knownReply": {
      "type": "object",
      "required": [
        "by",
        "indexedAt"
      ],
      "properties": {
        "by": {
          "ref": "so.sprk.actor.defs#profileViewBasic",
          "type": "ref"
        },
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "text": {
          "type": "string",
          "maxLength": 3000,
          "maxGraphemes": 300
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        }
      }
    },
    "blockedPost": {
      "type": "object",
      "required": [
        "uri",
        "blocked",
        "author"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "author": {
          "ref": "#blockedAuthor",
          "type": "ref"
        },
        "blocked": {
          "type": "boolean",
          "const": true
        }
      }
    },
    "interaction": {
      "type": "object",
      "properties": {
        "item": {
          "type": "string",
          "format": "at-uri"
        },
        "event": {
          "type": "string",
          "knownValues": [
            "so.sprk.feed.defs#requestLess",
            "so.sprk.feed.defs#requestMore",
            "so.sprk.feed.defs#clickthroughItem",
            "so.sprk.feed.defs#clickthroughAuthor",
            "so.sprk.feed.defs#clickthroughReposter",
            "so.sprk.feed.defs#clickthroughEmbed",
            "so.sprk.feed.defs#interactionSeen",
            "so.sprk.feed.defs#interactionLike",
            "so.sprk.feed.defs#interactionRepost",
            "so.sprk.feed.defs#interactionReply",
            "so.sprk.feed.defs#interactionShare"
          ]
        },
        "feedContext": {
          "type": "string",
          "maxLength": 2000,
          "description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton."
        }
      }
    },
    "knownRepost": {
      "type": "object",
      "required": [
        "by",
        "indexedAt"
      ],
      "properties": {
        "by": {
          "ref": "so.sprk.actor.defs#profileViewBasic",
          "type": "ref"
        },
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        }
      }
    },
    "requestLess": {
      "type": "token",
      "description": "Request that less content like the given feed item be shown in the feed"
    },
    "requestMore": {
      "type": "token",
      "description": "Request that more content like the given feed item be shown in the feed"
    },
    "viewerState": {
      "type": "object",
      "properties": {
        "like": {
          "type": "string",
          "format": "at-uri"
        },
        "repost": {
          "type": "string",
          "format": "at-uri"
        },
        "threadMuted": {
          "type": "boolean"
        },
        "replyDisabled": {
          "type": "boolean"
        },
        "embeddingDisabled": {
          "type": "boolean"
        },
        "knownInteractions": {
          "type": "array",
          "items": {
            "refs": [
              "#knownRepost",
              "#knownLike",
              "#knownReply"
            ],
            "type": "union"
          }
        }
      },
      "description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."
    },
    "feedViewPost": {
      "type": "object",
      "required": [
        "post"
      ],
      "properties": {
        "post": {
          "ref": "#postView",
          "type": "ref"
        },
        "feedContext": {
          "type": "string",
          "maxLength": 2000,
          "description": "Context provided by feed generator that may be passed back alongside interactions."
        }
      }
    },
    "notFoundPost": {
      "type": "object",
      "required": [
        "uri",
        "notFound"
      ],
      "properties": {
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "notFound": {
          "type": "boolean",
          "const": true
        }
      }
    },
    "blockedAuthor": {
      "type": "object",
      "required": [
        "did"
      ],
      "properties": {
        "did": {
          "type": "string",
          "format": "did"
        },
        "viewer": {
          "ref": "so.sprk.actor.defs#viewerState",
          "type": "ref"
        }
      }
    },
    "generatorView": {
      "type": "object",
      "required": [
        "uri",
        "cid",
        "did",
        "creator",
        "displayName",
        "indexedAt"
      ],
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "did": {
          "type": "string",
          "format": "did"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "avatar": {
          "type": "string",
          "format": "uri"
        },
        "labels": {
          "type": "array",
          "items": {
            "ref": "com.atproto.label.defs#label",
            "type": "ref"
          }
        },
        "viewer": {
          "ref": "#generatorViewerState",
          "type": "ref"
        },
        "creator": {
          "ref": "so.sprk.actor.defs#profileView",
          "type": "ref"
        },
        "indexedAt": {
          "type": "string",
          "format": "datetime"
        },
        "likeCount": {
          "type": "integer",
          "minimum": 0
        },
        "description": {
          "type": "string",
          "maxLength": 3000,
          "maxGraphemes": 300
        },
        "displayName": {
          "type": "string"
        },
        "descriptionFacets": {
          "type": "array",
          "items": {
            "ref": "so.sprk.richtext.facet",
            "type": "ref"
          }
        },
        "acceptsInteractions": {
          "type": "boolean"
        }
      }
    },
    "threadContext": {
      "type": "object",
      "properties": {
        "rootAuthorLike": {
          "type": "string",
          "format": "at-uri"
        }
      },
      "description": "Metadata about this post within the context of the thread it is in."
    },
    "threadViewPost": {
      "type": "object",
      "required": [
        "post"
      ],
      "properties": {
        "post": {
          "refs": [
            "#postView",
            "#replyView"
          ],
          "type": "union"
        },
        "parent": {
          "refs": [
            "#threadViewPost",
            "#notFoundPost",
            "#blockedPost"
          ],
          "type": "union"
        },
        "replies": {
          "type": "array",
          "items": {
            "refs": [
              "#threadViewPost",
              "#notFoundPost",
              "#blockedPost"
            ],
            "type": "union"
          }
        },
        "threadContext": {
          "ref": "#threadContext",
          "type": "ref"
        }
      }
    },
    "threadgateView": {
      "type": "object",
      "properties": {
        "cid": {
          "type": "string",
          "format": "cid"
        },
        "uri": {
          "type": "string",
          "format": "at-uri"
        },
        "record": {
          "type": "unknown"
        }
      }
    },
    "interactionLike": {
      "type": "token",
      "description": "User liked the feed item"
    },
    "interactionSeen": {
      "type": "token",
      "description": "Feed item was seen by user"
    },
    "clickthroughItem": {
      "type": "token",
      "description": "User clicked through to the feed item"
    },
    "interactionReply": {
      "type": "token",
      "description": "User replied to the feed item"
    },
    "interactionShare": {
      "type": "token",
      "description": "User shared the feed item"
    },
    "replyViewerState": {
      "type": "object",
      "properties": {
        "like": {
          "type": "string",
          "format": "at-uri"
        },
        "threadMuted": {
          "type": "boolean"
        },
        "replyDisabled": {
          "type": "boolean"
        },
        "embeddingDisabled": {
          "type": "boolean"
        }
      },
      "description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests."
    },
    "skeletonFeedPost": {
      "type": "object",
      "required": [
        "post"
      ],
      "properties": {
        "post": {
          "type": "string",
          "format": "at-uri"
        },
        "feedContext": {
          "type": "string",
          "maxLength": 2000,
          "description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions."
        }
      }
    },
    "clickthroughEmbed": {
      "type": "token",
      "description": "User clicked through to the embedded content of the feed item"
    },
    "interactionRepost": {
      "type": "token",
      "description": "User reposted the feed item"
    },
    "clickthroughAuthor": {
      "type": "token",
      "description": "User clicked through to the author of the feed item"
    },
    "clickthroughReposter": {
      "type": "token",
      "description": "User clicked through to the reposter of the feed item"
    },
    "generatorViewerState": {
      "type": "object",
      "properties": {
        "like": {
          "type": "string",
          "format": "at-uri"
        }
      }
    }
  },
  "$type": "com.atproto.lexicon.schema",
  "lexicon": 1
}
```
