app.protoimsg.chat.room
Declares a chat room. Created by whoever starts the room.
Details · record, key tid
| Kind | record |
|---|---|
| Record key | tid |
| Authority | chat.protoimsg.app |
| Indexed |
Checks
Validunlimited-stringdefs.main.record.properties.purposeNo maxLength, maxGraphemes or format limits this string.unlimited-stringdefs.roomSettings.properties.visibilityNo maxLength, maxGraphemes or format limits this string.
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "Declares a chat room. Created by whoever starts the room.",
"key": "tid",
"record": {
"properties": {
"category": {
"description": "Broad category for room discovery (e.g., music, tech, gaming). Lowercased.",
"maxLength": 50,
"type": "string"
},
"createdAt": {
"description": "Timestamp of room creation.",
"format": "datetime",
"type": "string"
},
"description": {
"description": "What the room is about.",
"maxLength": 500,
"type": "string"
},
"name": {
"description": "Display name for the room.",
"maxLength": 100,
"type": "string"
},
"purpose": {
"description": "Room purpose categorization.",
"knownValues": [
"discussion",
"event",
"community",
"support"
],
"type": "string"
},
"settings": {
"ref": "#roomSettings",
"type": "ref"
},
"topic": {
"description": "Room topic for sorting, filtering, and discovery.",
"maxLength": 200,
"type": "string"
}
},
"required": [
"name",
"topic",
"purpose",
"createdAt"
],
"type": "object"
},
"type": "record"
},
"roomSettings": {
"description": "Configurable room settings.",
"properties": {
"allowlistEnabled": {
"default": false,
"description": "When true, only users on the room allowlist can send messages.",
"type": "boolean"
},
"minAccountAgeDays": {
"default": 0,
"description": "Minimum atproto account age in days to participate.",
"minimum": 0,
"type": "integer"
},
"slowModeSeconds": {
"default": 0,
"description": "Minimum seconds between messages per user. 0 = disabled.",
"minimum": 0,
"type": "integer"
},
"visibility": {
"default": "public",
"description": "Room discoverability. public = listed in directory, unlisted = link only, private = invite only.",
"knownValues": [
"public",
"unlisted",
"private"
],
"type": "string"
}
},
"type": "object"
}
},
"id": "app.protoimsg.chat.room",
"lexicon": 1
}