social.coves.community.postv2
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"bridgedStats": {
"description": "Aggregate vote counts asserted by the bridge for content federated from an origin platform (e.g. Lemmy). These supplement, and are kept separate from, native atproto votes.",
"properties": {
"asOf": {
"description": "Timestamp the origin-platform counts were sampled; used to discard stale updates",
"format": "datetime",
"type": "string"
},
"downvotes": {
"description": "Number of downvotes on the origin platform as of asOf",
"minimum": 0,
"type": "integer"
},
"upvotes": {
"description": "Number of upvotes on the origin platform as of asOf",
"minimum": 0,
"type": "integer"
}
},
"required": [
"upvotes",
"downvotes",
"asOf"
],
"type": "object"
},
"main": {
"description": "A post authored by a user, living in the author's repository. Successor to the deprecated social.coves.community.post: authorship is derived from the repository the record lives in, so there is no in-record author field. A post claiming a community is not visible in it until the community writes a social.coves.community.acceptance for it - community surfaces render from acceptance records only. Repo placement attributes authorship as vouched for by a verifying relay or a direct DID-resolved PDS fetch; firehose events themselves carry no commit-signature proof.",
"key": "tid",
"record": {
"properties": {
"bridgedStats": {
"description": "Bridge-asserted aggregate of origin-platform votes for federated/bridged content. Set by the bridge that materialized this record; absent for natively-authored posts.",
"ref": "#bridgedStats",
"type": "ref"
},
"community": {
"description": "DID of the community this was submitted to. Immutable across updates: consumers MUST ignore the entire update event that changes it - discard the whole event, not merely retain the old community value - since retargeting a post means writing a new post record.",
"format": "did",
"type": "string"
},
"content": {
"description": "Post content - supports rich text via facets",
"maxGraphemes": 50000,
"maxLength": 500000,
"type": "string"
},
"createdAt": {
"description": "Timestamp of post creation",
"format": "datetime",
"type": "string"
},
"crosspostChain": {
"description": "Full chain of crossposts with version pinning. First element is original, last is immediate parent.",
"items": {
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"maxLength": 25,
"type": "array"
},
"crosspostOf": {
"description": "If this is a crosspost, strong reference to the immediate parent post",
"ref": "com.atproto.repo.strongRef",
"type": "ref"
},
"embed": {
"description": "Embedded media, external links, or quoted posts",
"refs": [
"social.coves.embed.images",
"social.coves.embed.video",
"social.coves.embed.external",
"social.coves.embed.post"
],
"type": "union"
},
"facets": {
"description": "Annotations for rich text (mentions, links, formatting, block structure)",
"items": {
"ref": "social.coves.richtext.facet",
"type": "ref"
},
"maxLength": 200,
"type": "array"
},
"federatedFrom": {
"description": "The origin platform or instance this post was federated from, for bridged content. Unconstrained for the same reason as originalAuthor.",
"type": "unknown"
},
"labels": {
"description": "Self-applied content labels (NSFW, spoilers, etc.)",
"ref": "com.atproto.label.defs#selfLabels",
"type": "ref"
},
"langs": {
"description": "Languages used in the post content (ISO 639-1)",
"items": {
"format": "language",
"type": "string"
},
"maxLength": 3,
"type": "array"
},
"location": {
"description": "Optional place this post is about or was authored from. Unconstrained pending a geo vocabulary; absent for the overwhelming majority of posts.",
"type": "unknown"
},
"originalAuthor": {
"description": "The author on the origin platform, for content a bridge materialized here. Deliberately unconstrained: no bridge has fixed this shape yet, and pinning one now would be inventing a contract the first real bridge would contradict. Consumers MUST tolerate any object here and MUST NOT treat it as an authorship claim about this repo - authorship is the repository the record lives in.",
"type": "unknown"
},
"tags": {
"description": "User-applied topic tags",
"items": {
"maxGraphemes": 64,
"maxLength": 640,
"type": "string"
},
"maxLength": 8,
"type": "array"
},
"title": {
"description": "Post title (optional for media-only posts)",
"maxGraphemes": 300,
"maxLength": 3000,
"type": "string"
}
},
"required": [
"community",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"id": "social.coves.community.postv2",
"lexicon": 1
}
Metadata
- DID
-
did:web:coves.social - CID
-
bafyreiafob42haygigskb2bc2hpaa7urv6t2nmf5eod4axnedbveawjxoq - Indexed At
- 2026-09-07 20:28 UTC
- AT-URI
-
at://did:web:coves.social/com.atproto.lexicon.schema/social.coves.community.postv2
Referenced Schemas (6)
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
social.coves.community.post record
A post in a Coves community. Posts live in community repositories and persist independently of the author. DEPRECATED: no new records are written to this collection. Successor: social.coves.community.postv2, which lives…
-
A comment on a post or another comment. Comments live in user repositories and support nested threading.
-
Minimal author info for blocked posts
-
forum.barazo.topic.post record
A forum topic post with title, content, community attribution, and optional tags and content labels.
-
net.anisota.feed.post record
A post that can be created in the world of Anisota