{
  "lexicon": 1,
  "id": "app.bsky.feed.defs",
  "defs": {
    "postView": {
      "type": "object",
      "required": ["uri", "cid", "author", "record", "indexedAt"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "cid": { "type": "string", "format": "cid" },
        "author": {
          "type": "ref",
          "ref": "app.bsky.actor.defs#profileViewBasic"
        },
        "record": { "type": "unknown" },
        "embed": {
          "type": "union",
          "refs": [
            "app.bsky.embed.images#view",
            "app.bsky.embed.video#view",
            "app.bsky.embed.external#view",
            "app.bsky.embed.record#view",
            "app.bsky.embed.recordWithMedia#view"
          ]
        },
        "replyCount": { "type": "integer" },
        "repostCount": { "type": "integer" },
        "likeCount": { "type": "integer" },
        "quoteCount": { "type": "integer" },
        "indexedAt": { "type": "string", "format": "datetime" },
        "viewer": { "type": "ref", "ref": "#viewerState" },
        "labels": {
          "type": "array",
          "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
        },
        "threadgate": { "type": "ref", "ref": "#threadgateView" }
      }
    },
    "viewerState": {
      "type": "object",
      "description": "Metadata about the requesting account's relationship with the subject content. Only has meaningful content for authed requests.",
      "properties": {
        "repost": { "type": "string", "format": "at-uri" },
        "like": { "type": "string", "format": "at-uri" },
        "threadMuted": { "type": "boolean" },
        "replyDisabled": { "type": "boolean" },
        "embeddingDisabled": { "type": "boolean" },
        "pinned": { "type": "boolean" }
      }
    },
    "threadContext": {
      "type": "object",
      "description": "Metadata about this post within the context of the thread it is in.",
      "properties": {
        "rootAuthorLike": { "type": "string", "format": "at-uri" }
      }
    },
    "feedViewPost": {
      "type": "object",
      "required": ["post"],
      "properties": {
        "post": { "type": "ref", "ref": "#postView" },
        "reply": { "type": "ref", "ref": "#replyRef" },
        "reason": { "type": "union", "refs": ["#reasonRepost", "#reasonPin"] },
        "feedContext": {
          "type": "string",
          "description": "Context provided by feed generator that may be passed back alongside interactions.",
          "maxLength": 2000
        }
      }
    },
    "replyRef": {
      "type": "object",
      "required": ["root", "parent"],
      "properties": {
        "root": {
          "type": "union",
          "refs": ["#postView", "#notFoundPost", "#blockedPost"]
        },
        "parent": {
          "type": "union",
          "refs": ["#postView", "#notFoundPost", "#blockedPost"]
        },
        "grandparentAuthor": {
          "type": "ref",
          "ref": "app.bsky.actor.defs#profileViewBasic",
          "description": "When parent is a reply to another post, this is the author of that post."
        }
      }
    },
    "reasonRepost": {
      "type": "object",
      "required": ["by", "indexedAt"],
      "properties": {
        "by": { "type": "ref", "ref": "app.bsky.actor.defs#profileViewBasic" },
        "indexedAt": { "type": "string", "format": "datetime" }
      }
    },
    "reasonPin": {
      "type": "object",
      "properties": {}
    },
    "threadViewPost": {
      "type": "object",
      "required": ["post"],
      "properties": {
        "post": { "type": "ref", "ref": "#postView" },
        "parent": {
          "type": "union",
          "refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"]
        },
        "replies": {
          "type": "array",
          "items": {
            "type": "union",
            "refs": ["#threadViewPost", "#notFoundPost", "#blockedPost"]
          }
        },
        "threadContext": { "type": "ref", "ref": "#threadContext" }
      }
    },
    "notFoundPost": {
      "type": "object",
      "required": ["uri", "notFound"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "notFound": { "type": "boolean", "const": true }
      }
    },
    "blockedPost": {
      "type": "object",
      "required": ["uri", "blocked", "author"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "blocked": { "type": "boolean", "const": true },
        "author": { "type": "ref", "ref": "#blockedAuthor" }
      }
    },
    "blockedAuthor": {
      "type": "object",
      "required": ["did"],
      "properties": {
        "did": { "type": "string", "format": "did" },
        "viewer": { "type": "ref", "ref": "app.bsky.actor.defs#viewerState" }
      }
    },
    "generatorView": {
      "type": "object",
      "required": ["uri", "cid", "did", "creator", "displayName", "indexedAt"],
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "cid": { "type": "string", "format": "cid" },
        "did": { "type": "string", "format": "did" },
        "creator": { "type": "ref", "ref": "app.bsky.actor.defs#profileView" },
        "displayName": { "type": "string" },
        "description": {
          "type": "string",
          "maxGraphemes": 300,
          "maxLength": 3000
        },
        "descriptionFacets": {
          "type": "array",
          "items": { "type": "ref", "ref": "app.bsky.richtext.facet" }
        },
        "avatar": { "type": "string", "format": "uri" },
        "likeCount": { "type": "integer", "minimum": 0 },
        "acceptsInteractions": { "type": "boolean" },
        "labels": {
          "type": "array",
          "items": { "type": "ref", "ref": "com.atproto.label.defs#label" }
        },
        "viewer": { "type": "ref", "ref": "#generatorViewerState" },
        "contentMode": {
          "type": "string",
          "knownValues": [
            "app.bsky.feed.defs#contentModeUnspecified",
            "app.bsky.feed.defs#contentModeVideo"
          ]
        },
        "indexedAt": { "type": "string", "format": "datetime" }
      }
    },
    "generatorViewerState": {
      "type": "object",
      "properties": {
        "like": { "type": "string", "format": "at-uri" }
      }
    },
    "skeletonFeedPost": {
      "type": "object",
      "required": ["post"],
      "properties": {
        "post": { "type": "string", "format": "at-uri" },
        "reason": {
          "type": "union",
          "refs": ["#skeletonReasonRepost", "#skeletonReasonPin"]
        },
        "feedContext": {
          "type": "string",
          "description": "Context that will be passed through to client and may be passed to feed generator back alongside interactions.",
          "maxLength": 2000
        }
      }
    },
    "skeletonReasonRepost": {
      "type": "object",
      "required": ["repost"],
      "properties": {
        "repost": { "type": "string", "format": "at-uri" }
      }
    },
    "skeletonReasonPin": {
      "type": "object",
      "properties": {}
    },
    "threadgateView": {
      "type": "object",
      "properties": {
        "uri": { "type": "string", "format": "at-uri" },
        "cid": { "type": "string", "format": "cid" },
        "record": { "type": "unknown" },
        "lists": {
          "type": "array",
          "items": { "type": "ref", "ref": "app.bsky.graph.defs#listViewBasic" }
        }
      }
    },
    "interaction": {
      "type": "object",
      "properties": {
        "item": { "type": "string", "format": "at-uri" },
        "event": {
          "type": "string",
          "knownValues": [
            "app.bsky.feed.defs#requestLess",
            "app.bsky.feed.defs#requestMore",
            "app.bsky.feed.defs#clickthroughItem",
            "app.bsky.feed.defs#clickthroughAuthor",
            "app.bsky.feed.defs#clickthroughReposter",
            "app.bsky.feed.defs#clickthroughEmbed",
            "app.bsky.feed.defs#interactionSeen",
            "app.bsky.feed.defs#interactionLike",
            "app.bsky.feed.defs#interactionRepost",
            "app.bsky.feed.defs#interactionReply",
            "app.bsky.feed.defs#interactionQuote",
            "app.bsky.feed.defs#interactionShare"
          ]
        },
        "feedContext": {
          "type": "string",
          "description": "Context on a feed item that was originally supplied by the feed generator on getFeedSkeleton.",
          "maxLength": 2000
        }
      }
    },
    "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"
    },
    "clickthroughItem": {
      "type": "token",
      "description": "User clicked through to 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"
    },
    "clickthroughEmbed": {
      "type": "token",
      "description": "User clicked through to the embedded content of the feed item"
    },
    "contentModeUnspecified": {
      "type": "token",
      "description": "Declares the feed generator returns any types of posts."
    },
    "contentModeVideo": {
      "type": "token",
      "description": "Declares the feed generator returns posts containing app.bsky.embed.video embeds."
    },
    "interactionSeen": {
      "type": "token",
      "description": "Feed item was seen by user"
    },
    "interactionLike": {
      "type": "token",
      "description": "User liked the feed item"
    },
    "interactionRepost": {
      "type": "token",
      "description": "User reposted the feed item"
    },
    "interactionReply": {
      "type": "token",
      "description": "User replied to the feed item"
    },
    "interactionQuote": {
      "type": "token",
      "description": "User quoted the feed item"
    },
    "interactionShare": {
      "type": "token",
      "description": "User shared the feed item"
    }
  }
}
