{
"id": "social.coves.community.defs",
"defs": {
"viewerState": {
"type": "object",
"properties": {
"banUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the ban record if viewer is banned"
},
"banned": {
"type": "boolean",
"description": "Whether the viewer is banned from this community"
},
"member": {
"type": "boolean",
"description": "Whether the viewer has membership status (AppView-computed)"
},
"creator": {
"type": "boolean",
"description": "Whether the viewer created this community"
},
"moderator": {
"type": "boolean",
"description": "Whether the viewer is a moderator of this community"
},
"reputation": {
"type": "integer",
"description": "Viewer's reputation in this community"
},
"subscribed": {
"type": "boolean",
"description": "Whether the viewer is subscribed to this community"
},
"subscriptionUri": {
"type": "string",
"format": "at-uri",
"description": "AT-URI of the viewer's subscription record if subscribed"
}
},
"description": "The viewing user's relationship to this community"
},
"communityView": {
"type": "object",
"required": [
"did",
"name"
],
"properties": {
"did": {
"type": "string",
"format": "did",
"description": "DID of the community"
},
"name": {
"type": "string",
"maxLength": 63,
"description": "Short community name"
},
"avatar": {
"type": "string",
"format": "uri",
"description": "URL to community avatar image"
},
"handle": {
"type": "string",
"format": "handle",
"description": "Current handle resolved from DID"
},
"viewer": {
"type": "object",
"properties": {
"member": {
"type": "boolean",
"description": "Whether the viewer has membership status"
},
"subscribed": {
"type": "boolean",
"description": "Whether the viewer is subscribed"
}
},
"description": "Simplified viewer state for list views"
},
"postCount": {
"type": "integer",
"minimum": 0,
"description": "Total number of posts in the community"
},
"visibility": {
"type": "string",
"maxLength": 64,
"description": "Community visibility level",
"knownValues": [
"public",
"unlisted",
"private"
]
},
"displayName": {
"type": "string",
"maxLength": 1280,
"description": "Display name for the community",
"maxGraphemes": 128
},
"memberCount": {
"type": "integer",
"minimum": 0,
"description": "Number of users with formal membership status"
},
"subscriberCount": {
"type": "integer",
"minimum": 0,
"description": "Total number of subscribers"
}
},
"description": "Basic community view with essential information and basic stats"
},
"communityStats": {
"type": "object",
"properties": {
"postCount": {
"type": "integer",
"minimum": 0,
"description": "Total number of posts in the community"
},
"memberCount": {
"type": "integer",
"minimum": 0,
"description": "Number of users with formal membership status"
},
"commentCount": {
"type": "integer",
"minimum": 0,
"description": "Total number of comments across all posts"
},
"moderatorCount": {
"type": "integer",
"minimum": 0,
"description": "Number of active moderators"
},
"activeUserCount": {
"type": "integer",
"minimum": 0,
"description": "Number of users active in the last 30 days"
},
"subscriberCount": {
"type": "integer",
"minimum": 0,
"description": "Total number of subscribers"
},
"activePostersCount": {
"type": "integer",
"minimum": 0,
"description": "Number of unique posters in the last 30 days"
}
},
"description": "Aggregated statistics for a community"
},
"communityViewDetailed": {
"type": "object",
"required": [
"did",
"name"
],
"properties": {
"did": {
"type": "string",
"format": "did",
"description": "DID of the community"
},
"name": {
"type": "string",
"maxLength": 63,
"description": "Short community name"
},
"stats": {
"ref": "#communityStats",
"type": "ref",
"description": "Aggregated community statistics"
},
"avatar": {
"type": "string",
"format": "uri",
"description": "URL to community avatar image"
},
"banner": {
"type": "string",
"format": "uri",
"description": "URL to community banner image"
},
"handle": {
"type": "string",
"format": "handle",
"description": "Current handle resolved from DID"
},
"viewer": {
"ref": "#viewerState",
"type": "ref",
"description": "Viewer's relationship to this community"
},
"hostedBy": {
"type": "string",
"format": "did",
"description": "DID of the instance hosting this community"
},
"createdAt": {
"type": "string",
"format": "datetime"
},
"createdBy": {
"type": "string",
"format": "did",
"description": "DID of the user who created this community"
},
"visibility": {
"type": "string",
"maxLength": 64,
"description": "Community visibility level",
"knownValues": [
"public",
"unlisted",
"private"
]
},
"description": {
"type": "string",
"maxLength": 10000,
"description": "Community description with rich text support",
"maxGraphemes": 1000
},
"displayName": {
"type": "string",
"maxLength": 1280,
"description": "Display name for the community",
"maxGraphemes": 128
},
"moderationType": {
"type": "string",
"maxLength": 64,
"description": "Type of moderation system",
"knownValues": [
"moderator",
"sortition"
]
},
"contentWarnings": {
"type": "array",
"items": {
"type": "string",
"maxLength": 32,
"knownValues": [
"nsfw",
"violence",
"spoilers"
]
},
"description": "Required content warnings for this community"
},
"createdByProfile": {
"ref": "social.coves.actor.defs#profileView",
"type": "ref",
"description": "Profile of the community creator"
},
"descriptionFacets": {
"type": "array",
"items": {
"ref": "social.coves.richtext.facet",
"type": "ref"
},
"description": "Rich text annotations for description"
}
},
"description": "Detailed community view with stats and viewer state"
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}