Skip to content

Instantly share code, notes, and snippets.

@zicklag
Last active December 30, 2025 19:44
Show Gist options
  • Select an option

  • Save zicklag/94c61451ad977372834141e285b31552 to your computer and use it in GitHub Desktop.

Select an option

Save zicklag/94c61451ad977372834141e285b31552 to your computer and use it in GitHub Desktop.
Work-in-progress lexicons for https://a.roomy.space
[
{
"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