Last active
December 30, 2025 19:44
-
-
Save zicklag/94c61451ad977372834141e285b31552 to your computer and use it in GitHub Desktop.
Work-in-progress lexicons for https://a.roomy.space
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| [ | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.event.v0", | |
| "description": "Roomy's top-level event schema.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Roomy's top-level event schema.", | |
| "properties": { | |
| "id": { | |
| "type": "string", | |
| "description": "Unique event ID, also encodes timestamp" | |
| }, | |
| "variant": { | |
| "type": "union", | |
| "refs": [ | |
| "space.roomy.message.deleteMessage.v0", | |
| "space.roomy.message.editMessage.v0", | |
| "space.roomy.message.sendMessage.v0", | |
| "space.roomy.page.editPage.v0", | |
| "space.roomy.reaction.addBridgedReaction.v0", | |
| "space.roomy.reaction.addReaction.v0", | |
| "space.roomy.reaction.removeBridgedReaction.v0", | |
| "space.roomy.reaction.removeReaction.v0", | |
| "space.roomy.room.addMember.v0", | |
| "space.roomy.room.createRoom.v0", | |
| "space.roomy.room.deleteRoom.v0", | |
| "space.roomy.room.joinRoom.v0", | |
| "space.roomy.room.leaveRoom.v0", | |
| "space.roomy.room.removeMember.v0", | |
| "space.roomy.room.updateMember.v0", | |
| "space.roomy.room.updateRoom.v0", | |
| "space.roomy.stream.addAdmin.v0", | |
| "space.roomy.stream.personal.joinSpace.v0", | |
| "space.roomy.stream.personal.leaveSpace.v0", | |
| "space.roomy.stream.personal.setLastRead.v0", | |
| "space.roomy.stream.removeAdmin.v0", | |
| "space.roomy.stream.setHandleAccount.v0", | |
| "space.roomy.stream.updateStreamInfo.v0", | |
| "space.roomy.user.overrideHandle.v0", | |
| "space.roomy.user.updateProfile.v0" | |
| ] | |
| }, | |
| "room": { | |
| "type": "string", | |
| "description": "Parent room. This is not set for space-level events." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "id", | |
| "variant" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.message.deleteMessage.v0", | |
| "description": "Delete a message.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Delete a message.", | |
| "properties": { | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the message being deleted." | |
| }, | |
| "reason": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.comment.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "from": { | |
| "type": "integer", | |
| "description": "Start index in document." | |
| }, | |
| "snippet": { | |
| "type": "string", | |
| "description": "Text snippet being referenced." | |
| }, | |
| "to": { | |
| "type": "integer", | |
| "description": "End index in document." | |
| }, | |
| "version": { | |
| "type": "string", | |
| "description": "The version of the document being commented on." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "from", | |
| "snippet", | |
| "to", | |
| "version" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.file.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "mimeType": { | |
| "type": "string" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "mimeType", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.image.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "mimeType": { | |
| "type": "string" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| }, | |
| "alt": { | |
| "type": "string" | |
| }, | |
| "blurhash": { | |
| "type": "string" | |
| }, | |
| "height": { | |
| "type": "integer" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| }, | |
| "width": { | |
| "type": "integer" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "mimeType", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.link.v0", | |
| "description": "Link with optional preview", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Link with optional preview", | |
| "properties": { | |
| "showPreview": { | |
| "type": "boolean" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "showPreview", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.reply.v0", | |
| "description": "Marks the message a reply to the target message.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Marks the message a reply to the target message.", | |
| "properties": { | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the message being replied to." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.video.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "mimeType": { | |
| "type": "string" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| }, | |
| "alt": { | |
| "type": "string" | |
| }, | |
| "blurhash": { | |
| "type": "string" | |
| }, | |
| "height": { | |
| "type": "integer" | |
| }, | |
| "length": { | |
| "type": "integer" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| }, | |
| "width": { | |
| "type": "integer" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "mimeType", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.message.editMessage.v0", | |
| "description": "Edit a previously sent message.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Edit a previously sent message.", | |
| "properties": { | |
| "body": { | |
| "type": "ref", | |
| "ref": "#def1", | |
| "description": "New content. If mimeType is text/x-dmp-diff, this is a diff-match-patch diff to apply to the previous content." | |
| }, | |
| "target": { | |
| "type": "string", | |
| "description": "Id of message being edited." | |
| }, | |
| "extensions": { | |
| "type": "ref", | |
| "ref": "#def2", | |
| "description": "A list of extensions to update. Setting an extension to `null` will remove it. Any extension not specified will be left as-is." | |
| }, | |
| "previous": { | |
| "type": "string", | |
| "description": "Id of last known edit event, or the message itself." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "body", | |
| "target" | |
| ] | |
| }, | |
| "def1": { | |
| "type": "object", | |
| "description": "New content. If mimeType is text/x-dmp-diff, this is a diff-match-patch diff to apply to the previous content.", | |
| "properties": { | |
| "data": { | |
| "type": "bytes" | |
| }, | |
| "mimeType": { | |
| "type": "string", | |
| "description": "The mime type of the data field." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "data", | |
| "mimeType" | |
| ] | |
| }, | |
| "def2": { | |
| "type": "object", | |
| "description": "A list of extensions to update. Setting an extension to `null` will remove it. Any extension not specified will be left as-is.", | |
| "properties": { | |
| "space.roomy.extension.attachments.v0": { | |
| "type": "ref", | |
| "ref": "#def3", | |
| "description": "Attachments to the message, like files, link embeds, or images." | |
| }, | |
| "space.roomy.extension.authorOverride.v0": { | |
| "type": "ref", | |
| "ref": "#def4", | |
| "description": "An override for the author of the message. This is often used to set the original author of a bridged chat message." | |
| }, | |
| "space.roomy.extension.timestampOverride.v0": { | |
| "type": "ref", | |
| "ref": "#def5", | |
| "description": "An override for the timestamp of the message. This is often used to set the time that a bridged message was originally sent." | |
| } | |
| }, | |
| "nullable": [ | |
| "space.roomy.extension.attachments.v0", | |
| "space.roomy.extension.authorOverride.v0", | |
| "space.roomy.extension.timestampOverride.v0" | |
| ], | |
| "required": [] | |
| }, | |
| "def3": { | |
| "type": "object", | |
| "description": "Attachments to the message, like files, link embeds, or images.", | |
| "properties": { | |
| "attachments": { | |
| "type": "array", | |
| "items": { | |
| "type": "union", | |
| "refs": [ | |
| "space.roomy.attachment.comment.v0", | |
| "space.roomy.attachment.file.v0", | |
| "space.roomy.attachment.image.v0", | |
| "space.roomy.attachment.link.v0", | |
| "space.roomy.attachment.reply.v0", | |
| "space.roomy.attachment.video.v0" | |
| ] | |
| }, | |
| "description": "The list of attachments." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "attachments" | |
| ] | |
| }, | |
| "def4": { | |
| "type": "object", | |
| "description": "An override for the author of the message. This is often used to set the original author of a bridged chat message.", | |
| "properties": { | |
| "did": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "did" | |
| ] | |
| }, | |
| "def5": { | |
| "type": "object", | |
| "description": "An override for the timestamp of the message. This is often used to set the time that a bridged message was originally sent.", | |
| "properties": { | |
| "timestamp": { | |
| "type": "integer", | |
| "description": "A timestamp: the milliseconds since the unix epoch." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "timestamp" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.comment.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "from": { | |
| "type": "integer", | |
| "description": "Start index in document." | |
| }, | |
| "snippet": { | |
| "type": "string", | |
| "description": "Text snippet being referenced." | |
| }, | |
| "to": { | |
| "type": "integer", | |
| "description": "End index in document." | |
| }, | |
| "version": { | |
| "type": "string", | |
| "description": "The version of the document being commented on." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "from", | |
| "snippet", | |
| "to", | |
| "version" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.file.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "mimeType": { | |
| "type": "string" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "mimeType", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.image.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "mimeType": { | |
| "type": "string" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| }, | |
| "alt": { | |
| "type": "string" | |
| }, | |
| "blurhash": { | |
| "type": "string" | |
| }, | |
| "height": { | |
| "type": "integer" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| }, | |
| "width": { | |
| "type": "integer" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "mimeType", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.link.v0", | |
| "description": "Link with optional preview", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Link with optional preview", | |
| "properties": { | |
| "showPreview": { | |
| "type": "boolean" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "showPreview", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.reply.v0", | |
| "description": "Marks the message a reply to the target message.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Marks the message a reply to the target message.", | |
| "properties": { | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the message being replied to." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.attachment.video.v0", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "properties": { | |
| "mimeType": { | |
| "type": "string" | |
| }, | |
| "uri": { | |
| "type": "string" | |
| }, | |
| "alt": { | |
| "type": "string" | |
| }, | |
| "blurhash": { | |
| "type": "string" | |
| }, | |
| "height": { | |
| "type": "integer" | |
| }, | |
| "length": { | |
| "type": "integer" | |
| }, | |
| "size": { | |
| "type": "integer" | |
| }, | |
| "width": { | |
| "type": "integer" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "mimeType", | |
| "uri" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.message.sendMessage.v0", | |
| "description": "Create a new message.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Create a new message.", | |
| "properties": { | |
| "body": { | |
| "type": "ref", | |
| "ref": "#def1", | |
| "description": "The main content of the chat message. Usually this uses the text/markdown mime type." | |
| }, | |
| "extensions": { | |
| "type": "ref", | |
| "ref": "#def2", | |
| "description": "A mapping of extensions to add. Each extension is optional." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "body", | |
| "extensions" | |
| ] | |
| }, | |
| "def1": { | |
| "type": "object", | |
| "description": "The main content of the chat message. Usually this uses the text/markdown mime type.", | |
| "properties": { | |
| "data": { | |
| "type": "bytes" | |
| }, | |
| "mimeType": { | |
| "type": "string", | |
| "description": "The mime type of the data field." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "data", | |
| "mimeType" | |
| ] | |
| }, | |
| "def2": { | |
| "type": "object", | |
| "description": "A mapping of extensions to add. Each extension is optional.", | |
| "properties": { | |
| "space.roomy.extension.attachments.v0": { | |
| "type": "ref", | |
| "ref": "#def3", | |
| "description": "Attachments to the message, like files, link embeds, or images." | |
| }, | |
| "space.roomy.extension.authorOverride.v0": { | |
| "type": "ref", | |
| "ref": "#def4", | |
| "description": "An override for the author of the message. This is often used to set the original author of a bridged chat message." | |
| }, | |
| "space.roomy.extension.timestampOverride.v0": { | |
| "type": "ref", | |
| "ref": "#def5", | |
| "description": "An override for the timestamp of the message. This is often used to set the time that a bridged message was originally sent." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [] | |
| }, | |
| "def3": { | |
| "type": "object", | |
| "description": "Attachments to the message, like files, link embeds, or images.", | |
| "properties": { | |
| "attachments": { | |
| "type": "array", | |
| "items": { | |
| "type": "union", | |
| "refs": [ | |
| "space.roomy.attachment.comment.v0", | |
| "space.roomy.attachment.file.v0", | |
| "space.roomy.attachment.image.v0", | |
| "space.roomy.attachment.link.v0", | |
| "space.roomy.attachment.reply.v0", | |
| "space.roomy.attachment.video.v0" | |
| ] | |
| }, | |
| "description": "The list of attachments." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "attachments" | |
| ] | |
| }, | |
| "def4": { | |
| "type": "object", | |
| "description": "An override for the author of the message. This is often used to set the original author of a bridged chat message.", | |
| "properties": { | |
| "did": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "did" | |
| ] | |
| }, | |
| "def5": { | |
| "type": "object", | |
| "description": "An override for the timestamp of the message. This is often used to set the time that a bridged message was originally sent.", | |
| "properties": { | |
| "timestamp": { | |
| "type": "integer", | |
| "description": "A timestamp: the milliseconds since the unix epoch." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "timestamp" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.page.editPage.v0", | |
| "description": "Edit a page/document.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Edit a page/document.", | |
| "properties": { | |
| "body": { | |
| "type": "ref", | |
| "ref": "#def1", | |
| "description": "The edit content. The content can either fully replace the previous content, or if mimeType is 'text/x-dmp-diff', it's a diff-match-patch diff to apply to the previous content." | |
| }, | |
| "previous": { | |
| "type": "string", | |
| "description": "Previous edit event or undefined if this is the first." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "body" | |
| ] | |
| }, | |
| "def1": { | |
| "type": "object", | |
| "description": "The edit content. The content can either fully replace the previous content, or if mimeType is 'text/x-dmp-diff', it's a diff-match-patch diff to apply to the previous content.", | |
| "properties": { | |
| "data": { | |
| "type": "bytes" | |
| }, | |
| "mimeType": { | |
| "type": "string", | |
| "description": "The mime type of the data field." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "data", | |
| "mimeType" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.reaction.addBridgedReaction.v0", | |
| "description": "Add a reaction from another user. This is used for bridging reactions from other platforms.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Add a reaction from another user. This is used for bridging reactions from other platforms.", | |
| "properties": { | |
| "reactingUser": { | |
| "type": "string", | |
| "description": "The external user ID doing the reacting" | |
| }, | |
| "reaction": { | |
| "type": "string", | |
| "description": "Unicode emoji or URI describing the reaction." | |
| }, | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the event being reacted to." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "reactingUser", | |
| "reaction", | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.reaction.addReaction.v0", | |
| "description": "Add a reaction.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Add a reaction.", | |
| "properties": { | |
| "reaction": { | |
| "type": "string", | |
| "description": "Unicode emoji or URI describing the reaction." | |
| }, | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the event being reacted to." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "reaction", | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.reaction.removeBridgedReaction.v0", | |
| "description": "Remove a reaction from another user. This is used for bridging reactions from other platforms.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Remove a reaction from another user. This is used for bridging reactions from other platforms.", | |
| "properties": { | |
| "previous": { | |
| "type": "string", | |
| "description": "The ID of the addBridgedReaction event to undo." | |
| }, | |
| "reactingUser": { | |
| "type": "string", | |
| "description": "The external user ID doing the reacting" | |
| }, | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the event being reacted to." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "previous", | |
| "reactingUser", | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.reaction.removeReaction.v0", | |
| "description": "Remove a reaction.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Remove a reaction.", | |
| "properties": { | |
| "previous": { | |
| "type": "string", | |
| "description": "The ID of the addReaction event to undo." | |
| }, | |
| "target": { | |
| "type": "string", | |
| "description": "The ID of the event being reacted to." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "previous", | |
| "target" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.anonymous.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.authenticated.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.room.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": { | |
| "roomId": { | |
| "type": "string", | |
| "description": "The ID of the room" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "roomId" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.user.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": { | |
| "did": { | |
| "type": "string", | |
| "description": "The DID of the user." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "did" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.addMember.v0", | |
| "description": "Add a member to the room's access list", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Add a member to the room's access list", | |
| "properties": { | |
| "access": { | |
| "type": "string", | |
| "knownValues": [ | |
| "read", | |
| "write" | |
| ], | |
| "description": "The access level, either read or write." | |
| }, | |
| "member": { | |
| "type": "union", | |
| "refs": [ | |
| "space.roomy.member.anonymous.v0", | |
| "space.roomy.member.authenticated.v0", | |
| "space.roomy.member.room.v0", | |
| "space.roomy.member.user.v0" | |
| ], | |
| "description": "The group member identifier" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "access", | |
| "member" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.createRoom.v0", | |
| "description": "Create a room. This can be sent at the space level ( no room ), or in parent room. The ulid of this event becomes the id of the room.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Create a room. This can be sent at the space level ( no room ), or in parent room. The ulid of this event becomes the id of the room.", | |
| "properties": { | |
| "kind": { | |
| "type": "string", | |
| "knownValues": [ | |
| "category", | |
| "channel", | |
| "page", | |
| "thread" | |
| ], | |
| "description": "A kind of room, such as a channel, thread, or page." | |
| }, | |
| "avatar": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "kind" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.deleteRoom.v0", | |
| "description": "Delete a room. Sent at top level or in the parent room.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Delete a room. Sent at top level or in the parent room.", | |
| "properties": { | |
| "roomId": { | |
| "type": "string", | |
| "description": "The room to delete" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "roomId" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.joinRoom.v0", | |
| "description": "Join the room specified in envelope. If no room specified, the event is an announcement on joining a space.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Join the room specified in envelope. If no room specified, the event is an announcement on joining a space.", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.leaveRoom.v0", | |
| "description": "Leave a room", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Leave a room", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.anonymous.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.authenticated.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.room.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": { | |
| "roomId": { | |
| "type": "string", | |
| "description": "The ID of the room" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "roomId" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.user.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": { | |
| "did": { | |
| "type": "string", | |
| "description": "The DID of the user." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "did" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.removeMember.v0", | |
| "description": "Remove a member from the room's access list", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Remove a member from the room's access list", | |
| "properties": { | |
| "access": { | |
| "type": "string", | |
| "knownValues": [ | |
| "read", | |
| "write" | |
| ], | |
| "description": "The access level, either read or write." | |
| }, | |
| "member": { | |
| "type": "union", | |
| "refs": [ | |
| "space.roomy.member.anonymous.v0", | |
| "space.roomy.member.authenticated.v0", | |
| "space.roomy.member.room.v0", | |
| "space.roomy.member.user.v0" | |
| ], | |
| "description": "The group member identifier" | |
| }, | |
| "reason": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "access", | |
| "member" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.anonymous.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.authenticated.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": {}, | |
| "nullable": [], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.room.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": { | |
| "roomId": { | |
| "type": "string", | |
| "description": "The ID of the room" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "roomId" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.member.user.v0", | |
| "description": "The group member identifier", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "The group member identifier", | |
| "properties": { | |
| "did": { | |
| "type": "string", | |
| "description": "The DID of the user." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "did" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.updateMember.v0", | |
| "description": "Change a room member's access permissions", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Change a room member's access permissions", | |
| "properties": { | |
| "access": { | |
| "type": "string", | |
| "knownValues": [ | |
| "read", | |
| "write" | |
| ], | |
| "description": "The access level, either read or write." | |
| }, | |
| "member": { | |
| "type": "union", | |
| "refs": [ | |
| "space.roomy.member.anonymous.v0", | |
| "space.roomy.member.authenticated.v0", | |
| "space.roomy.member.room.v0", | |
| "space.roomy.member.user.v0" | |
| ], | |
| "description": "The group member identifier" | |
| }, | |
| "reason": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "access", | |
| "member" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.room.updateRoom.v0", | |
| "description": "Allows you to set the room kind, basic information, or to change it's parent", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Allows you to set the room kind, basic information, or to change it's parent", | |
| "properties": { | |
| "avatar": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "kind": { | |
| "type": "string", | |
| "knownValues": [ | |
| "category", | |
| "channel", | |
| "page", | |
| "thread" | |
| ] | |
| }, | |
| "name": { | |
| "type": "string" | |
| }, | |
| "parentRoom": { | |
| "type": "string", | |
| "description": "The new parent room, if you want to re-parent the room." | |
| } | |
| }, | |
| "nullable": [ | |
| "avatar", | |
| "description", | |
| "kind", | |
| "name", | |
| "parentRoom" | |
| ], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.addAdmin.v0", | |
| "description": "Add an admin to the space", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Add an admin to the space", | |
| "properties": { | |
| "userDid": { | |
| "type": "string", | |
| "description": "The user to add as an admin." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "userDid" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.personal.joinSpace.v0", | |
| "description": "Join a Roomy space. This must be sent in a user's personal stream and is how you update the joined spaces list. Signaling that you have joined a space inside the space you are joining should be done with a room.joinRoom event.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Join a Roomy space. This must be sent in a user's personal stream and is how you update the joined spaces list. Signaling that you have joined a space inside the space you are joining should be done with a room.joinRoom event.", | |
| "properties": { | |
| "spaceDid": { | |
| "type": "string", | |
| "description": "The space being joined." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "spaceDid" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.personal.leaveSpace.v0", | |
| "description": "Leave a Roomy space. This must be sent in a user's personal stream and is how you update the joined spaces list.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Leave a Roomy space. This must be sent in a user's personal stream and is how you update the joined spaces list.", | |
| "properties": { | |
| "spaceDid": { | |
| "type": "string", | |
| "description": "The space being left." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "spaceDid" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.personal.setLastRead.v0", | |
| "description": "Mark a room as read. Sent to the user's personal stream to track when they last visited a room. The event's ULID timestamp encodes when the room was read.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Mark a room as read. Sent to the user's personal stream to track when they last visited a room. The event's ULID timestamp encodes when the room was read.", | |
| "properties": { | |
| "roomId": { | |
| "type": "string", | |
| "description": "The room being marked as read" | |
| }, | |
| "streamDid": { | |
| "type": "string", | |
| "description": "The stream containing the room" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "roomId", | |
| "streamDid" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.removeAdmin.v0", | |
| "description": "Remove an admin from the space", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Remove an admin from the space", | |
| "properties": { | |
| "userDid": { | |
| "type": "string", | |
| "description": "The user to remove as an admin." | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "userDid" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.setHandleAccount.v0", | |
| "description": "Set the ATProto account DID for the space handle. For verification, the ATProto account must also have a `space.roomy.stream` PDS record with rkey `handle` pointing back to this stream's ID.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Set the ATProto account DID for the space handle. For verification, the ATProto account must also have a `space.roomy.stream` PDS record with rkey `handle` pointing back to this stream's ID.", | |
| "properties": { | |
| "did": { | |
| "type": "string", | |
| "description": "The ATProto DID, or null to unset." | |
| } | |
| }, | |
| "nullable": [ | |
| "did" | |
| ], | |
| "required": [ | |
| "did" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.stream.updateStreamInfo.v0", | |
| "description": "Update a stream's basic info. This is used to set things like the name, icon, and description for a space.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Update a stream's basic info. This is used to set things like the name, icon, and description for a space.", | |
| "properties": { | |
| "avatar": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [ | |
| "avatar", | |
| "description", | |
| "name" | |
| ], | |
| "required": [] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.user.overrideHandle.v0", | |
| "description": "Override user metadata in this space. Primarily used for bridged accounts (e.g. Discord) where we can't retrieve the handle from the ID.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Override user metadata in this space. Primarily used for bridged accounts (e.g. Discord) where we can't retrieve the handle from the ID.", | |
| "properties": { | |
| "did": { | |
| "type": "string", | |
| "description": "The DID of the user to override the info for" | |
| }, | |
| "handle": { | |
| "type": "string", | |
| "description": "The original handle from the bridged platform" | |
| } | |
| }, | |
| "nullable": [], | |
| "required": [ | |
| "did", | |
| "handle" | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "lexicon": 1, | |
| "id": "space.roomy.user.updateProfile.v0", | |
| "description": "Set a user profile. This can be used to update the profile info of bridged accounts. It can also be used by a user to set a space-specific profile.", | |
| "defs": { | |
| "main": { | |
| "type": "object", | |
| "description": "Set a user profile. This can be used to update the profile info of bridged accounts. It can also be used by a user to set a space-specific profile.", | |
| "properties": { | |
| "did": { | |
| "type": "string", | |
| "description": "The DID of the user to set the profile for." | |
| }, | |
| "avatar": { | |
| "type": "string" | |
| }, | |
| "description": { | |
| "type": "string" | |
| }, | |
| "name": { | |
| "type": "string" | |
| } | |
| }, | |
| "nullable": [ | |
| "avatar", | |
| "description", | |
| "name" | |
| ], | |
| "required": [ | |
| "did" | |
| ] | |
| } | |
| } | |
| } | |
| ] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment