Implement chat.bsky (Direct Messages) client support #17

Closed
opened 2026-04-12 17:23:14 +00:00 by Grandiras · 0 comments
Owner

Summary

The AT Protocol specifies a chat.bsky namespace for direct messaging functionality. ATProto.NET currently has no support for this namespace.

Spec Reference

The chat.bsky namespace includes endpoints for conversations and direct messages:

Endpoints to implement

  • chat.bsky.convo.listConvos - List conversations
  • chat.bsky.convo.getConvo - Get a specific conversation
  • chat.bsky.convo.getConvoForMembers - Get/create conversation for members
  • chat.bsky.convo.getConvoAvailability - Check conversation availability
  • chat.bsky.convo.getMessages - Get messages in a conversation
  • chat.bsky.convo.sendMessage - Send a message
  • chat.bsky.convo.sendMessageBatch - Send batch messages
  • chat.bsky.convo.deleteMessageForSelf - Delete a message for self
  • chat.bsky.convo.leaveConvo - Leave a conversation
  • chat.bsky.convo.muteConvo - Mute a conversation
  • chat.bsky.convo.unmuteConvo - Unmute a conversation
  • chat.bsky.convo.updateRead - Mark conversation as read
  • chat.bsky.convo.updateAllRead - Mark all conversations as read
  • chat.bsky.convo.acceptConvo - Accept a conversation request
  • chat.bsky.convo.addReaction - Add reaction to message
  • chat.bsky.convo.removeReaction - Remove reaction from message
  • chat.bsky.convo.getLog - Get conversation log
  • chat.bsky.actor.declaration - Chat actor declaration record
  • chat.bsky.actor.deleteAccount - Delete chat data
  • chat.bsky.actor.exportAccountData - Export chat data

Implementation notes

  • Chat is currently "off-protocol" (centralized at api.bsky.chat), but has well-defined Lexicons
  • Requires transition:chat.bsky OAuth scope
  • Messages are proxied through the PDS
  • Need models for: MessageView, ConvoView, MessageInput, etc.
## Summary The AT Protocol specifies a `chat.bsky` namespace for direct messaging functionality. ATProto.NET currently has no support for this namespace. ## Spec Reference The `chat.bsky` namespace includes endpoints for conversations and direct messages: ### Endpoints to implement - `chat.bsky.convo.listConvos` - List conversations - `chat.bsky.convo.getConvo` - Get a specific conversation - `chat.bsky.convo.getConvoForMembers` - Get/create conversation for members - `chat.bsky.convo.getConvoAvailability` - Check conversation availability - `chat.bsky.convo.getMessages` - Get messages in a conversation - `chat.bsky.convo.sendMessage` - Send a message - `chat.bsky.convo.sendMessageBatch` - Send batch messages - `chat.bsky.convo.deleteMessageForSelf` - Delete a message for self - `chat.bsky.convo.leaveConvo` - Leave a conversation - `chat.bsky.convo.muteConvo` - Mute a conversation - `chat.bsky.convo.unmuteConvo` - Unmute a conversation - `chat.bsky.convo.updateRead` - Mark conversation as read - `chat.bsky.convo.updateAllRead` - Mark all conversations as read - `chat.bsky.convo.acceptConvo` - Accept a conversation request - `chat.bsky.convo.addReaction` - Add reaction to message - `chat.bsky.convo.removeReaction` - Remove reaction from message - `chat.bsky.convo.getLog` - Get conversation log - `chat.bsky.actor.declaration` - Chat actor declaration record - `chat.bsky.actor.deleteAccount` - Delete chat data - `chat.bsky.actor.exportAccountData` - Export chat data ### Implementation notes - Chat is currently "off-protocol" (centralized at `api.bsky.chat`), but has well-defined Lexicons - Requires `transition:chat.bsky` OAuth scope - Messages are proxied through the PDS - Need models for: MessageView, ConvoView, MessageInput, etc.
Sign in to join this conversation.
No description provided.