social.coves.community.postv2

coves.social

{
  "$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
}

Validate Record

Validate a record against social.coves.community.postv2

Validation Options
Automatically resolve and include external schemas for full validation
Treat any remaining unresolved references as valid

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.

  • 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

  • A forum topic post with title, content, community attribution, and optional tags and content labels.

  • A post that can be created in the world of Anisota

Lexicon Garden

@