{
"id": "social.smallbury.feed.list",
"defs": {
"main": {
"type": "query",
"output": {
"schema": {
"ref": "#feedPage",
"type": "ref"
},
"encoding": "application/json"
},
"parameters": {
"type": "params",
"properties": {
"limit": {
"type": "integer",
"default": 50,
"maximum": 100,
"minimum": 1
},
"cursor": {
"type": "string"
}
}
},
"description": "Authenticated home feed: root shouts from followed authors, root Smallbury posts from mutually trusted authors, plus all indexed comments on those roots. Includes trust-record revision hints so the client can refresh cached trust records from PDS when needed."
},
"feedPage": {
"type": "object",
"required": [
"posts"
],
"properties": {
"posts": {
"type": "array",
"items": {
"ref": "#feedPost",
"type": "ref"
}
},
"cursor": {
"type": "string"
},
"trustRevisions": {
"type": "array",
"items": {
"ref": "#trustRevision",
"type": "ref"
},
"description": "Trust-record revision hints for the viewer, feed authors, and mutual contacts relevant to this page. Client compares trustRecordCid to cache and fetches full records from PDS on mismatch."
}
}
},
"feedPost": {
"type": "object",
"properties": {
"cid": {
"type": "string",
"format": "cid"
},
"uri": {
"type": "string",
"format": "at-uri"
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"creatorDid": {
"type": "string",
"format": "did"
},
"reactionCounts": {
"type": "array",
"items": {
"ref": "#reactionCount",
"type": "ref"
},
"description": "Aggregated cleartext emoji reactions indexed by AppView, for public posts only. Encrypted post reactions are not included."
},
"viewerReactions": {
"type": "array",
"items": {
"ref": "#viewerReaction",
"type": "ref"
},
"description": "Cleartext reactions the authenticated viewer has on this post, with repo record URIs for removal."
}
},
"description": "Post row returned by AppView (cleartext metadata; private posts may include ciphertext from the repo)."
},
"reactionCount": {
"type": "object",
"required": [
"emoji",
"count"
],
"properties": {
"count": {
"type": "integer",
"minimum": 1
},
"emoji": {
"type": "string",
"maxLength": 32,
"maxGraphemes": 1
}
}
},
"trustRevision": {
"type": "object",
"required": [
"did",
"trustRecordCid"
],
"properties": {
"did": {
"type": "string",
"format": "did",
"description": "Actor whose social.smallbury.actor.trust record changed."
},
"trustRecordCid": {
"type": "string",
"format": "cid",
"description": "CID of the trust record commit; primary cache invalidation key."
},
"trustRecordUpdatedAt": {
"type": "string",
"format": "datetime",
"description": "Optional updatedAt from the record; secondary hint only."
}
}
},
"viewerReaction": {
"type": "object",
"required": [
"emoji",
"uri"
],
"properties": {
"uri": {
"type": "string",
"format": "at-uri"
},
"emoji": {
"type": "string",
"maxLength": 32,
"maxGraphemes": 1
}
}
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}