Lexicons
Colibri defines a set of AT Protocol lexicons for its data types and AppView endpoints. They are grouped below by kind.
Records
Section titled “Records”Persisted records that live in a user’s or community’s repository.
social.colibri.actor.data
The main actor data used in Colibri
The type of the record.
The status for the user, displayed on their profile.
The emoji displayed next to status.
The DIDs of the communities this user is a member of, in the user's preferred sidebar order. Read back by `social.colibri.actor.listCommunities` to restore ordering.
social.colibri.actor.profile
A Colibri-specific user profile. Singleton record on the user's own repo, kept separate from app.bsky.actor.profile so Colibri never needs write access to the Bluesky record.
The type of the record.
The user's display name.
The user's profile description / bio.
The user's avatar image.
The user's profile banner image.
When true, the AppView serves displayName/avatar/banner/description from the user's app.bsky.actor.profile record (Bluesky stays the live source); these mirrored fields may be omitted here.
Colibri-only profile theming. Always sourced from this record regardless of syncBluesky.
DID of the AppView authorized to emit off-protocol presence (status, typing, voice) for this user via Humming. A receiving AppView MUST drop any Hum about this user whose authenticated origin does not equal this value. Absent means the user has not opted into cross-instance presence.
Label value of the badge the user chose to display as their primary badge. Absent means automatic (highest-priority badge).
Two-color gradient profile theme.
Primary gradient color as #rrggbb.
Secondary gradient color as #rrggbb.
social.colibri.community
A community, or "server", is where users join to interact with each other on Colibri. Singleton record on the community DID's repo.
The type of the record.
The name of the community.
A description of the community.
An image for the community that will be shown to users.
A banner for the community that will be shown to users.
The order of the categories in this community.
Whether users can chat in this community without the owner having to create an acknowledgement record.
Whether link previews are displayed in this community by default. Individual channels may override this.
Set on a legacy community record once it has been migrated. Points at the new community record that replaces it; consumers treat this community as retired and hide it.
Set on a community created by migrating a legacy community. Points at the legacy community record this one replaces.
DID of the AppView that administers this community and acts as its off-protocol hub (Humming presence relay and voice SFU host). Written by the credential-holding AppView. Consumers that find this field absent fall back to did:web:api.colibri.social.
social.colibri.category
A category belongs to a community and contains multiple channels on Colibri.
The type of the record.
The name of the category.
The order of the channels in this category.
The community this category belongs to.
social.colibri.channel
A channel that belongs to a category on Colibri.
The type of the record.
The name of the channel.
A description of the channel.
The type of the channel. Colibri provides social.colibri.channel.text, social.colibri.channel.forum, social.colibri.channel.link, and social.colibri.channel.voice.
The category this channel belongs to.
The record key of the community this channel belongs to.
Whether the owner of the community is the only one allowed to post in the channel or not.
Role record-keys allowed to post in this channel. Empty/absent means no role restriction.
Member DIDs explicitly allowed to post in this channel, in addition to allowedRoles.
Whether link previews are displayed in this channel. Absent means the community default applies.
Set on a channel created by migrating a legacy community. Points at the legacy channel record this one replaces, so message history for the old channel can be surfaced here.
social.colibri.channel.read
A read cursor for a Colibri channel, indicating the last read message by a user.
The type of the record.
The channel this message was sent in.
The timestamp the channel was last read at.
social.colibri.message
A message sent in a channel on Colibri
The type of the record.
The message content.
Annotations of sections of the text.
When the message was sent.
The channel this message was sent in.
Whether this message has been edited.
The record key of a message this message is replying to.
An array of attachment objects for this message.
URLs from this message's link facets whose embed the author has chosen not to display. Only the author writes this; moderator suppression is recorded separately in the community's moderation log.
A file attached to a message.
The attached file.
The original filename.
social.colibri.reaction
A reaction on a Colibri message.
The type of the record.
The emoji of the reaction. This allows for any string to support for custom emojis later down the line.
The AT-URI of the message this reaction belongs to.
social.colibri.membership
AT-URI of the social.colibri.community record being joined
social.colibri.approval
AT-URI of the user's social.colibri.membership record
AT-URI of the social.colibri.community record
social.colibri.role
A named bundle of permissions assignable to community members. Lives on the community repo.
The type of the record.
Display name of the role.
Optional hex color displayed alongside the role (e.g. '#ff8800').
Permission identifiers granted by this role.
Hierarchy position. Higher values sit higher in the role hierarchy and outrank lower values.
Whether members of this role are displayed separately in the member list.
Whether `@role`-style mentions resolve to this role.
Whether this role is protected from modification or deletion. Set true for system-managed roles (e.g. the bootstrap 'Owner' role minted by `community.create`).
Per-channel permission overrides for this role.
Allow / deny lists scoped to a single channel.
The channel this override applies to.
Permissions granted within this channel.
Permissions denied within this channel. Deny wins over base permissions and overrides allow.
social.colibri.member
A community-side member record granting a user roles within the community. Lives on the community repo and is written when an admission is finalized.
The type of the record.
DID of the admitted user.
Role record-keys assigned to this member on the same community repo.
Optional per-community display-name override for this member.
Optional AT-URI of the user's `social.colibri.membership` declaration this admission was based on.
social.colibri.moderation
A moderation event scoped to the community that owns this repo. Acts as an append-only audit log; current state is derived from the action history per subject.
The type of the record.
The moderation action being recorded.
URLs this action applies to, used by suppressEmbeds and unsuppressEmbeds. Ignored by every other action.
Optional human-readable reason for the action.
DID of the issuer (typically a member with the required permission).
Target of the moderation action. Use `did` for user-targeted actions, `uri` for content-targeted actions.
social.colibri.labeler.service
Declares that this account operates a Colibri labeler and describes the badges it issues. The Colibri equivalent of `app.bsky.labeler.service`. Labels themselves stay standard `com.atproto.label` labels, served from the `#atproto_labeler` service endpoint in this account's DID document.
The type of the record.
Every badge this labeler can issue. A label value absent from this list is not a recognised badge.
Metadata for a single badge. `identifier` is the `val` carried by the corresponding label.
The label value, lowercase kebab-case, as it appears in `com.atproto.label` records.
Short display name shown on the badge itself.
What holding this badge means.
Sort order when a user holds several badges. Lower sorts first, so the lowest value is the default primary badge.
How the badge is coloured. Clients fall back to a neutral style when this is absent or unrecognised.
Colours for a single badge. Every colour is a `#rrggbb` or `#rrggbbaa` hex literal so clients can render it without interpreting arbitrary CSS.
How `colors` is applied. `solid` fills the badge with the first colour. `gradientBorder` renders every colour as a stop in a gradient border over a darkened gradient fill. Defaults to `solid`.
Badge colours, each a `#rrggbb` or `#rrggbbaa` hex literal. `solid` uses only the first entry.
Text colour, a `#rrggbb` or `#rrggbbaa` hex literal.
social.colibri.labeler.attestation
Published by a labeler to attest that a subject account proved control of an account on an external funding platform. This is what lets the labeler issue supporter badges without a maintainer in the loop, and it stands in for a private mapping table: the attestation is public, auditable, and replicated like any other record. The record key is the subject DID, so one subject resolves with a single `getRecord`. Holding an attestation is not itself a badge, the labeler still issues ordinary `com.atproto.label` labels based on what the external platform reports.
The type of the record.
The account this attestation is about. Must equal the record key.
The external platform the account lives on.
Stable identifier of the external account, as issued by the platform. Opaque to clients, used by the labeler to match the subject against the platform's own records.
Human-readable handle of the external account, for display only.
When control of the external account was last proved.
Shared definitions
Section titled “Shared definitions”Reusable object definitions (*.defs) referenced by records, queries, and
events across the other lexicons.
social.colibri.richtext.facet
A rich text facet annotation on a message.
The features of this facet.
Specifies the sub-string range a facet feature applies to. Start index is inclusive, end index is exclusive. Indices are zero-based, counting bytes of the UTF-8 encoded text.
The start index of the byte slice (inclusive).
The end index of the byte slice (exclusive).
A facet feature for a channel reference.
The record key of the referenced channel.
A facet feature for bold text.
A facet feature for italic text.
A facet feature for underlined text.
A facet feature for strikethrough text.
A facet feature for inline code text.
A facet feature for a multi-line code block.
The language of the code block, if specified.
A facet feature for a block quote.
A facet feature for a heading line (levels 1–3).
The heading level.
A facet feature for a single list item line.
Whether the item belongs to an ordered (numbered) list.
A facet feature for a subtext line (small, muted).
A facet feature for inline spoiler text.
A facet feature for a user mention.
The DID of the mentioned user.
A facet feature for a role mention. Resolves to a community role, at index time the AppView notifies every member holding the role (gated by the role's `mentionable` flag or the author's `mention.roles` permission).
The AT-URI of the mentioned role record.
A facet feature for a hyperlink.
The URI of the link.
A facet feature for a timestamp.
The ISO 8601 timestamp.
Display style for the timestamp (mirrors Discord-style formats).
social.colibri.actor.defs
A hydrated Colibri actor: identity plus profile data.
The profile and presence data for a Colibri actor.
A user's Colibri status line.
Colibri-only profile theming.
Two-color gradient profile theme.
social.colibri.channel.defs
A hydrated message as served by the AppView.
The message this one replies to, if any. Never itself nested (the parent's own parent is omitted).
URLs whose embed the author suppressed, mirrored from the message record.
URLs whose embed a moderator suppressed, derived from the community's moderation log. Only the moderator who can hide messages may clear these.
A file attached to a message.
Pixel width of the attachment's intrinsic dimensions, when it is a decodable image or video. Lets a client reserve the correct box before the bytes arrive.
Pixel height of the attachment's intrinsic dimensions, when it is a decodable image or video.
An aggregated reaction on a message.
The authenticated user's read cursor for a channel.
Per-channel unread state for the authenticated user.
social.colibri.community.defs
Core community record data, hydrated with its AT-URI.
A community member, hydrated with their actor data.
AT-URI of the voice channel the member is currently connected to, if any.
Whether the member's microphone is muted in the voice channel.
Whether the member is deafened in the voice channel.
Whether the member has been server-muted by a moderator in the voice channel.
Whether the member has been server-deafened by a moderator in the voice channel.
A pending or dismissed membership application.
An invitation with its creator as a bare DID.
An invitation with its creator hydrated as an actor.
An invitation hydrated with its community's public details, for the invite accept screen.
social.colibri.embed.defs
A single GIF result.
An image referenced by link metadata.
Pixel width declared by the source page, when it publishes one.
Pixel height declared by the source page, when it publishes one.
A playable clip referenced by link metadata, for pages that publish their animation as a video rather than an animated image.
The clip's media type, always one the AppView will proxy (video/mp4 or video/webm).
Pixel width declared by the source page, when it publishes one.
Pixel height declared by the source page, when it publishes one.
social.colibri.notification.defs
A notification in the authenticated user's feed.
Display name of the role that triggered this notification, when it was a role mention rather than a direct mention.
The message a notification refers to.
A minimal unseen-notification pointer.
Queries
Section titled “Queries”Read-only GET endpoints served by the AppView.
social.colibri.actor.getData
Resolves an identifier (DID or handle) to its hydrated Colibri actor data.
The DID or handle to resolve.
social.colibri.actor.listCommunities
Lists the communities the authenticated user is a member of, in their preferred sidebar order.
Missing, malformed, or unverifiable service auth.
A community summary as seen from the member's perspective.
social.colibri.actor.listMutes
Lists the subjects the authenticated user has muted.
Missing, malformed, or unverifiable service auth.
AT-URI of the mute record.
The muted subject (a DID).
social.colibri.actor.getNotificationPreference
Returns the authenticated user's notification level, defaulting to 'all' when they haven't set one.
Missing, malformed, or unverifiable service auth.
social.colibri.actor.getDeletionStatus
Reports whether the authenticated user's Colibri data can be deleted, and how much data deletion would remove.
Communities the user is the only owner of. Deletion is blocked while this is non-empty.
The account page the caller's PDS serves at /account, when it serves one. Absent otherwise.
Missing, malformed, or unverifiable service auth.
Row counts the AppView holds for the authenticated user.
social.colibri.channel.getChannelView
Returns the initial view of a channel: recent messages, the read cursor, and unseen notifications.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
social.colibri.channel.getReadCursor
Returns the authenticated user's read cursor for a channel.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
The referenced record does not exist.
social.colibri.channel.listMessages
Lists messages in a channel, newest first, paginated.
Include hidden (moderated) messages.
A parameter or body field was missing or malformed.
social.colibri.channel.listReactions
Lists the aggregated reactions on a message.
A parameter or body field was missing or malformed.
social.colibri.channel.listUnreadStatus
Lists the unread status of every channel in a community for the authenticated user.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
social.colibri.community.getData
Returns the full state of a community: metadata, categories, channels, roles, and members.
A parameter or body field was missing or malformed.
The referenced record does not exist.
social.colibri.community.listCategories
Lists the categories of a community.
A parameter or body field was missing or malformed.
social.colibri.community.listChannels
Lists the channels of a community.
A parameter or body field was missing or malformed.
social.colibri.community.listMembers
Lists the members of a community.
A parameter or body field was missing or malformed.
social.colibri.community.listRoles
Lists the roles of a community.
A parameter or body field was missing or malformed.
social.colibri.community.listApplications
Lists pending and dismissed membership applications for a community.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
social.colibri.community.listBannedUsers
Lists the banned users of a community.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
social.colibri.community.getInvitation
Resolves an invitation code to its community, hydrated with the community's public details for the invite accept screen.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
The referenced record does not exist.
social.colibri.embed.getMetadata
Fetches Open Graph-style link preview metadata for a URL.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
social.colibri.embed.getImage
Proxies and returns an external image, guarding against SSRF.
The linked resource is not an image type the AppView serves.
The caller exceeded its rate budget.
social.colibri.embed.getVideo
Proxies and returns an external embed video, guarding against SSRF. Honours byte ranges.
The linked resource is not a video type the AppView serves.
The caller exceeded its rate budget.
social.colibri.embed.searchGifs
Searches GIFs by query.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
social.colibri.embed.trendingGifs
Returns trending GIFs.
Missing, malformed, or unverifiable service auth.
social.colibri.embed.gifCategories
Lists GIF categories for the picker.
Missing, malformed, or unverifiable service auth.
social.colibri.notification.listNotifications
Lists the authenticated user's notifications, paginated.
Missing, malformed, or unverifiable service auth.
social.colibri.notification.getUnreadCount
Returns the count of unread notifications.
Missing, malformed, or unverifiable service auth.
social.colibri.notification.getUnseen
Returns unseen notifications for a specific channel.
Missing, malformed, or unverifiable service auth.
social.colibri.server.describeServer
Returns metadata describing the Colibri AppView deployment. Public and side-effect free.
Procedures
Section titled “Procedures”Mutating POST endpoints served by the AppView.
social.colibri.actor.setState
Sets the authenticated user's online presence state.
The presence state to set.
Missing, malformed, or unverifiable service auth.
The given state is not one of the accepted values.
social.colibri.actor.deleteAccount
Deletes everything the AppView holds for the authenticated user.
Missing, malformed, or unverifiable service auth.
The request is not valid for the current state.
What the purge removed, per storage area.
social.colibri.channel.create
Creates a channel in a category of a community.
The channel type, e.g. social.colibri.channel.text.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.channel.update
Updates a channel's settings.
Drops the channel's own linkEmbeds setting so the community default applies again.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.channel.delete
Deletes a channel.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.create
Creates a community, bootstrapping its DID repo with a default category, channel, owner role, and member record.
Bring-your-own PDS endpoint.
Bring-your-own DID or handle.
Bring-your-own account password.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.migrate
Migrates a source record into a fresh community, cloning its structure and importing its members. The 'kind' discriminator selects the migration; today only legacy communities are supported, but the endpoint is designed to host future migrations. Provisioning mirrors community.create (managed when no PDS credentials are supplied, bring-your-own otherwise).
The migration to run. 'legacy-community' migrates a pre-rework community record.
The record being migrated (e.g. the legacy community).
Bring-your-own PDS endpoint.
Bring-your-own DID or handle.
Bring-your-own account password.
Maps each cloned channel from its old AT-URI to its new AT-URI.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
The referenced record does not exist.
A service outside this AppView failed.
A single channel's old AT-URI mapped to its new AT-URI.
social.colibri.community.update
Updates a community's metadata and optionally its picture and banner.
Drops the community's current picture. Cannot be combined with a new picture blob.
Drops the community's current banner. Cannot be combined with a new banner blob.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.delete
Deletes a community.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The referenced record does not exist.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.approveMembership
Approves a pending membership application, minting the member record.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.dismissApplication
Dismisses a membership application without approving it.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
social.colibri.community.undismissApplication
Restores a previously dismissed membership application.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
social.colibri.community.registerCredentials
Registers bring-your-own PDS credentials for a community DID.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
A service outside this AppView failed.
social.colibri.community.setMemberRoles
Replaces the set of roles assigned to a member.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.reorderChannels
Reorders the channels within a category.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.reorderCategories
Reorders the categories within a community.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.banUser
Bans a user from a community.
DID or handle of the user to ban.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.unbanUser
Lifts a ban on a user.
DID or handle of the user to unban.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.kickUser
Kicks a user from a community by DID or handle.
DID or handle of the user to kick.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.kick
Kicks a member from a community by member record.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.blockMessage
Hides (moderates) a message within a community.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.suppressMessageEmbeds
Suppresses link previews on a message within a community by writing a suppressEmbeds moderation record. Does not touch the author's own suppression, which only the author may change.
URLs whose previews should be suppressed.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.unsuppressMessageEmbeds
Restores link previews a moderator previously suppressed. Cannot restore previews the author suppressed themselves.
URLs whose previews should be restored.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.community.createInvitation
Creates an invitation code for a community.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
The referenced record does not exist.
social.colibri.community.listInvitations
Lists the active invitations of a community.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
The referenced record does not exist.
social.colibri.community.deleteInvitation
Deletes an invitation code.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
The referenced record does not exist.
social.colibri.community.leave
Leaves a community, removing the authenticated user's membership.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.category.create
Creates a category in a community.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.category.update
Renames a category.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.category.delete
Deletes a category.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.role.create
Creates a role in a community.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.role.update
Updates a role.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.role.delete
Deletes a role.
The acting account has not published this AppView as authorized to act for it.
Missing, malformed, or unverifiable service auth.
The AppView cannot write to the community's repo and could not repair its own access.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
This AppView does not administer the community; the hub field names the one that does.
The PDS this operation needs is unreachable or is not a PDS.
A service outside this AppView failed.
social.colibri.notification.updateSeen
Marks all notifications up to a timestamp as seen.
Defaults to now if omitted.
Missing, malformed, or unverifiable service auth.
social.colibri.notification.updateSeenForMessage
Marks notifications for a specific message as seen.
Missing, malformed, or unverifiable service auth.
social.colibri.notification.registerPush
Registers a push subscription (Web Push or FCM) for the authenticated user.
Missing, malformed, or unverifiable service auth.
A parameter or body field was missing or malformed.
A browser Web Push subscription.
A Firebase Cloud Messaging registration token.
FCM registration token from FirebaseMessaging.getInstance().token.
Web Push subscription keys.
social.colibri.notification.unregisterPush
Removes a push subscription.
Defaults to "web" if omitted.
The Web Push endpoint URL or FCM registration token to remove.
Missing, malformed, or unverifiable service auth.
social.colibri.sync.sendHum
Informs this AppView of an off-protocol event that occurred on a peer AppView. Requires inter-service auth: a JWT signed by the caller's AppView signing key, aud = this AppView's did:web, lxm = social.colibri.sync.sendHum. The receiver drops the Hum unless the JWT issuer equals both the envelope `origin` and the `subject`'s declared presenceService.
Missing or invalid service-auth JWT.
A trust-model check failed (origin is not the subject's declared presenceService, subject is not a community member, origin is not an AppView, or a channel does not belong to the community).
A parameter or body field was missing or malformed.
Humming is disabled on this AppView.
The peer exceeded its per-peer sendHum rate budget.
social.colibri.voice.moderate
Moderates a member's participation in a voice channel: server-mute, server-deafen, or force-disconnect. Requires the `voice.moderate` community permission and the caller must outrank the target. Server-mute/deafen are enforced by the SFU and persist for the room's lifetime, disconnect is transient (the target may rejoin).
AT-URI of the community the channel belongs to.
AT-URI of the voice channel.
DID of the member to moderate.
The moderation action to apply.
DID of the moderated member.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
A parameter or body field was missing or malformed.
social.colibri.labeler.linkExternalAccount
Starts linking the calling account to an account on an external funding platform, so the labeler can issue supporter badges automatically. Returns the platform's authorization URL, which the client opens in a browser. The caller's identity comes from service auth (aud = the labeler's did with the `#atproto_labeler` fragment, lxm = this method), and the returned URL carries a signed, short-lived state token binding the flow to that DID. On success the labeler publishes a `social.colibri.labeler.attestation` record and evaluates the subject's entitlements immediately. This grants no privileged access: any authenticated account may link itself, and only itself.
The external platform to link.
True when the caller is a native app that expects the completed flow to hand back control over a custom URL scheme rather than a web redirect.
Where to send the user to authorize the link. Single use and short lived.
Missing, malformed, or unverifiable service auth.
A parameter was missing or malformed.
This labeler is not configured to link the requested platform.
social.colibri.labeler.unlinkExternalAccount
Removes the link between the calling account and an external funding platform. Deletes the `social.colibri.labeler.attestation` record and negates any badge the link was the basis for. Authorized the same way as `social.colibri.labeler.linkExternalAccount`, so an account can only unlink itself.
The external platform to unlink.
False when there was no link to remove, which is not an error.
Badge values revoked as part of unlinking.
Missing, malformed, or unverifiable service auth.
A parameter was missing or malformed.
Subscriptions
Section titled “Subscriptions”WebSocket event streams.
social.colibri.sync.subscribeEvents
Opens a WebSocket stream that transmits relevant events for the authenticated user.
Missing, malformed, or unverifiable service auth.
Sent in response to a heartbeat message.
Sent when a community has been updated or deleted.
Sent when a member has joined or left a community.
The affected member, hydrated. Present on `join` and `roles_updated`.
DID of the member who left. Present on `leave`.
The affected member as carried by a member event. Mirrors `social.colibri.community.defs#memberView`, including the member's current voice channel state so a receiving client can place them in a voice channel without refetching.
AT-URI of the voice channel the member is currently connected to, if any. Only set when that channel belongs to `community`.
Sent when a category has been created, updated, or deleted.
Sent when a channel has been created, updated, or deleted.
Sent when a message has been sent, edited, or deleted.
Sent when a reaction has been added to or removed from a message.
Sent when a known user has updated their profile or Colibri status.
Sent when a user is typing in a channel the client is viewing.
Sent when a user joins or leaves a voice channel.
Sent when a user's voice state changes within a voice channel. `muted` and `deafened` are the user's own choices; `serverMuted` and `serverDeafened` are moderator-applied and enforced by the SFU. Each field is absent when unchanged.
An off-protocol event relayed between AppViews. The authenticated sender (inter-service auth JWT: aud = receiving AppView did:web, lxm = social.colibri.sync.sendHum) is the origin of record; `origin` is echoed for relay/loop control and MUST match the JWT issuer. Only off-protocol event types are permitted — on-protocol events are never carried by a Hum and are derived from the firehose instead.
DID of the AppView that first emitted this Hum.
Unique id for this Hum, used by receivers to dedup across relay paths.
Remaining relay hops. Decremented on each forward; a Hum at ttl 0 is delivered locally but never relayed.
The user this event is about. Receiver MUST verify origin equals subject's declared presenceService before trusting or relaying.
Community the event is scoped to. Receiver relays to local clients only if they are members of this community.
Ephemeral event payload. Only off-protocol types are permitted.
social.colibri.sync.subscribeHums
Egress-only WebSocket stream of Hums this AppView is relaying. Peers subscribe to receive off-protocol events for shared communities, optionally narrowing to declared `communities` (repeated query param). Requires inter-service auth (subprotocol-carried, as with subscribeEvents). Clients cannot send messages on this stream.
DIDs of the communities the peer wants Hums for, repeated once per community. Narrowing only: the intersection with what the peer is authorised for is what gets streamed, so declaring a community grants nothing. Omit it entirely to receive every authorised community.
Missing, malformed, or unverifiable service auth.
Humming is disabled on this AppView.
The hub is at its subscribeHums connection limit.
social.colibri.voice.signal
Opens a WebSocket to the community hub AppView's embedded voice SFU (mediasoup) for a single voice channel. Bidirectional signaling: the client sends transport/produce/consume requests and the server replies and pushes producer and active-speaker events. Media itself flows over WebRTC (SRTP), not this socket. Requires service auth (aud = the community hub AppView's did:web, lxm = social.colibri.voice.signal), carried via the Sec-WebSocket-Protocol subprotocol as with subscribeEvents.
AT-URI of the voice channel to join.
Missing, malformed, or unverifiable service auth.
The caller lacks the permission this method requires.
The SFU could not create the channel router or a transport.
A mediasoup signaling frame. `action` discriminates the frame; the remaining fields carry opaque mediasoup structures (transport options, RTP parameters/capabilities, DTLS parameters) that the client's mediasoup-client library interprets. The AppView does not validate the nested payloads.
Permission sets
Section titled “Permission sets”OAuth permission sets bundling the scopes a client can request.
social.colibri.permissionAccount
Manage your Colibri profile, status, and mutes, and receive realtime updates.
- social.colibri.actor.data
- social.colibri.actor.profile
- social.colibri.actor.mute
- social.colibri.actor.notificationPreference
- social.colibri.actor.gifFavorites
- social.colibri.actor.getData
- social.colibri.actor.listCommunities
- social.colibri.actor.listMutes
- social.colibri.actor.getNotificationPreference
- social.colibri.actor.setState
- social.colibri.actor.getDeletionStatus
- social.colibri.actor.deleteAccount
- social.colibri.sync.subscribeEvents
- social.colibri.sync.sendHum
social.colibri.permissionCommunity
Create and manage communities, categories, channels, and roles, including moderation and invitations.
- social.colibri.community
- social.colibri.category
- social.colibri.channel
- social.colibri.role
- social.colibri.channel.read
- social.colibri.community.create
- social.colibri.community.migrate
- social.colibri.community.update
- social.colibri.community.delete
- social.colibri.community.registerCredentials
- social.colibri.community.approveMembership
- social.colibri.community.listApplications
- social.colibri.community.dismissApplication
- social.colibri.community.undismissApplication
- social.colibri.community.kick
- social.colibri.community.kickUser
- social.colibri.community.setMemberRoles
- social.colibri.community.leave
- social.colibri.community.reorderChannels
- social.colibri.community.reorderCategories
- social.colibri.community.blockMessage
- social.colibri.community.suppressMessageEmbeds
- social.colibri.community.unsuppressMessageEmbeds
- social.colibri.community.banUser
- social.colibri.community.unbanUser
- social.colibri.community.createInvitation
- social.colibri.community.listInvitations
- social.colibri.community.deleteInvitation
- social.colibri.category.create
- social.colibri.category.update
- social.colibri.category.delete
- social.colibri.channel.create
- social.colibri.channel.update
- social.colibri.channel.delete
- social.colibri.channel.getReadCursor
- social.colibri.channel.listUnreadStatus
- social.colibri.role.create
- social.colibri.role.update
- social.colibri.role.delete
- social.colibri.embed.getMetadata
- social.colibri.embed.searchGifs
- social.colibri.embed.trendingGifs
- social.colibri.embed.gifCategories
- social.colibri.community.getData
- social.colibri.community.listBannedUsers
- social.colibri.community.listCategories
- social.colibri.community.listChannels
- social.colibri.community.listMembers
- social.colibri.community.listRoles
- social.colibri.community.getInvitation
- social.colibri.channel.listMessages
- social.colibri.channel.getChannelView
social.colibri.permissionMessaging
Send and edit messages, react, join communities, and submit membership applications.
- social.colibri.message
- social.colibri.reaction
- social.colibri.membership
- social.colibri.approval
- social.colibri.channel.listReactions
social.colibri.permissionNotification
Read your notifications and mark them as seen.
- social.colibri.notification.listNotifications
- social.colibri.notification.getUnreadCount
- social.colibri.notification.updateSeen
- social.colibri.notification.updateSeenForMessage
- social.colibri.notification.getUnseen
social.colibri.permissionPush
Manage your push notification subscriptions.
- social.colibri.notification.registerPush
- social.colibri.notification.unregisterPush
Colibri-only profile theming.
Accent color as a #rrggbb hex string.
Two-color gradient profile theme.
Solid fallback banner color as #rrggbb, used when no banner image is set.