social.coves.community.comment.defs

Repository @coves.social did:web:coves.social namespace authority
Details · defs
Kinddefs
Authoritycomment.community.coves.social
Indexed
cid bafyreiau7yirximboqs7h2b4xwfwhen3rrlcvnn2rjg3x6aythuppgbmia

Checks

Valid Lint pass
JSONDownload
{
  "$type": "com.atproto.lexicon.schema",
  "defs": {
    "blockedComment": {
      "description": "Comment is blocked due to viewer blocking author or moderation action",
      "properties": {
        "blocked": {
          "const": true,
          "description": "Always true for blocked comments",
          "type": "boolean"
        },
        "blockedBy": {
          "description": "What caused the block: viewer blocked author, or comment was removed by moderators",
          "knownValues": [
            "author",
            "moderator"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "uri": {
          "description": "AT-URI of the blocked comment",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "blocked"
      ],
      "type": "object"
    },
    "commentRef": {
      "description": "Reference to a comment record",
      "properties": {
        "cid": {
          "description": "CID of the comment record",
          "format": "cid",
          "type": "string"
        },
        "uri": {
          "description": "AT-URI of the comment",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "cid"
      ],
      "type": "object"
    },
    "commentStats": {
      "description": "Statistics for a comment",
      "properties": {
        "downvotes": {
          "description": "Number of downvotes",
          "minimum": 0,
          "type": "integer"
        },
        "replyCount": {
          "description": "Number of direct replies to this comment",
          "minimum": 0,
          "type": "integer"
        },
        "score": {
          "description": "Calculated score (upvotes - downvotes)",
          "type": "integer"
        },
        "upvotes": {
          "description": "Number of upvotes",
          "minimum": 0,
          "type": "integer"
        }
      },
      "required": [
        "upvotes",
        "downvotes",
        "score",
        "replyCount"
      ],
      "type": "object"
    },
    "commentView": {
      "description": "Base view for a single comment with voting, stats, and viewer state",
      "properties": {
        "author": {
          "description": "Comment author information",
          "ref": "social.coves.community.post.defs#authorView",
          "type": "ref"
        },
        "cid": {
          "description": "CID of the comment record",
          "format": "cid",
          "type": "string"
        },
        "createdAt": {
          "description": "When the comment was created",
          "format": "datetime",
          "type": "string"
        },
        "embed": {
          "description": "Embedded content from the comment record (images or quoted post). The AppView transforms blob references into fetchable image URLs and enriches quoted posts with a resolved view, so a served embed carries a #view type.",
          "refs": [
            "social.coves.embed.images",
            "social.coves.embed.images#view",
            "social.coves.embed.post",
            "social.coves.embed.post#view"
          ],
          "type": "union"
        },
        "indexedAt": {
          "description": "When this comment was indexed by the AppView",
          "format": "datetime",
          "type": "string"
        },
        "parent": {
          "description": "Reference to parent comment if this is a nested reply",
          "ref": "#commentRef",
          "type": "ref"
        },
        "post": {
          "description": "Reference to the parent post",
          "ref": "#postRef",
          "type": "ref"
        },
        "record": {
          "description": "The actual comment record verbatim",
          "type": "unknown"
        },
        "stats": {
          "description": "Comment statistics (votes, replies)",
          "ref": "#commentStats",
          "type": "ref"
        },
        "uri": {
          "description": "AT-URI of the comment record",
          "format": "at-uri",
          "type": "string"
        },
        "viewer": {
          "description": "Viewer-specific state (vote, saved, etc.)",
          "ref": "#commentViewerState",
          "type": "ref"
        }
      },
      "required": [
        "uri",
        "cid",
        "author",
        "record",
        "post",
        "createdAt",
        "indexedAt",
        "stats"
      ],
      "type": "object"
    },
    "commentViewerState": {
      "description": "Viewer-specific state for a comment",
      "properties": {
        "vote": {
          "description": "Viewer's vote on this comment",
          "knownValues": [
            "up",
            "down"
          ],
          "maxLength": 64,
          "type": "string"
        },
        "voteUri": {
          "description": "AT-URI of the viewer's vote record",
          "format": "at-uri",
          "type": "string"
        }
      },
      "type": "object"
    },
    "notFoundComment": {
      "description": "Comment was not found (deleted, never indexed, or invalid URI)",
      "properties": {
        "notFound": {
          "const": true,
          "description": "Always true for not found comments",
          "type": "boolean"
        },
        "uri": {
          "description": "AT-URI of the missing comment",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "notFound"
      ],
      "type": "object"
    },
    "postRef": {
      "description": "Reference to a post record",
      "properties": {
        "cid": {
          "description": "CID of the post record",
          "format": "cid",
          "type": "string"
        },
        "uri": {
          "description": "AT-URI of the post",
          "format": "at-uri",
          "type": "string"
        }
      },
      "required": [
        "uri",
        "cid"
      ],
      "type": "object"
    },
    "threadViewComment": {
      "description": "Wrapper for threaded comment structure, similar to Bluesky's threadViewPost pattern",
      "properties": {
        "comment": {
          "description": "The comment itself",
          "ref": "#commentView",
          "type": "ref"
        },
        "hasMore": {
          "description": "True if more replies exist but are not included in this response",
          "type": "boolean"
        },
        "replies": {
          "description": "Nested replies to this comment",
          "items": {
            "refs": [
              "#threadViewComment",
              "#notFoundComment",
              "#blockedComment"
            ],
            "type": "union"
          },
          "type": "array"
        }
      },
      "required": [
        "comment"
      ],
      "type": "object"
    }
  },
  "id": "social.coves.community.comment.defs",
  "lexicon": 1
}