Skip to main content
import { MessageType, ResponseCode, Module, WEBHOOK_EVENT_NAMES, RESERVED_STORE_PREFIX, COMMENTS_STORE_NAME } from '@collab-kit/utils';

MessageType

All WebSocket message types for the real-time protocol.
enum MessageType {
  // Client -> Server
  AUTHENTICATION_HANDSHAKE = 'authenticationHandshake',
  UPDATE_USER = 'updateUser',
  DELETE_USER = 'deleteUser',
  GET_USER = 'getUser',
  GET_USERS = 'getUsers',
  JOIN_ROOM = 'joinRoom',
  GET_ROOM = 'getRoom',
  BROADCAST_MESSAGE = 'broadcastMessage',
  STORE_GET = 'storeGet',
  STORE_GET_ALL = 'storeGetAll',
  STORE_SET = 'storeSet',
  STORE_UPDATE = 'storeUpdate',
  STORE_DELETE = 'storeDelete',
  COMMENT_ADD = 'commentAdd',
  COMMENT_DELETE = 'commentDelete',
  COMMENT_GET_ALL = 'commentGetAll',
  COMMENT_ADD_REACTION = 'commentAddReaction',
  COMMENT_DELETE_REACTION = 'commentDeleteReaction',
  COMMENT_ADD_TAG = 'commentAddTag',
  COMMENT_DELETE_TAG = 'commentDeleteTag',
  PRESENCE_UPDATE = 'presenceUpdate',
  CRDT_SYNC_REQUEST = 'crdtSyncRequest',
  CRDT_UPDATE = 'crdtUpdate',
  FOLLOW_USER = 'followUser',
  UNFOLLOW_USER = 'unfollowUser',

  // Server -> Client (responses)
  AUTHENTICATION_HANDSHAKE_RESPONSE = 'authenticationHandshakeResponse',
  UPDATE_USER_RESPONSE = 'updateUserResponse',
  DELETE_USER_RESPONSE = 'deleteUserResponse',
  GET_USER_RESPONSE = 'getUserResponse',
  GET_USERS_RESPONSE = 'getUsersResponse',
  JOIN_ROOM_RESPONSE = 'joinRoomResponse',
  GET_ROOM_RESPONSE = 'getRoomResponse',
  BROADCAST_MESSAGE_RESPONSE = 'broadcastMessageResponse',
  STORE_GET_RESPONSE = 'storeGetResponse',
  STORE_GET_ALL_RESPONSE = 'storeGetAllResponse',
  STORE_SET_RESPONSE = 'storeSetResponse',
  STORE_UPDATE_RESPONSE = 'storeUpdateResponse',
  STORE_DELETE_RESPONSE = 'storeDeleteResponse',
  COMMENT_ADD_RESPONSE = 'commentAddResponse',
  COMMENT_DELETE_RESPONSE = 'commentDeleteResponse',
  COMMENT_GET_ALL_RESPONSE = 'commentGetAllResponse',
  COMMENT_ADD_REACTION_RESPONSE = 'commentAddReactionResponse',
  COMMENT_DELETE_REACTION_RESPONSE = 'commentDeleteReactionResponse',
  COMMENT_ADD_TAG_RESPONSE = 'commentAddTagResponse',
  COMMENT_DELETE_TAG_RESPONSE = 'commentDeleteTagResponse',
  CRDT_SYNC_REQUEST_RESPONSE = 'crdtSyncRequestResponse',
  FOLLOW_USER_RESPONSE = 'followUserResponse',
  UNFOLLOW_USER_RESPONSE = 'unfollowUserResponse',

  // Server -> Client (broadcasts)
  USER_JOINED = 'userJoined',
  USER_LEFT = 'userLeft',
  STORE_UPDATED = 'storeUpdated',
  COMMENT_ADDED = 'commentAdded',
  COMMENT_DELETED = 'commentDeleted',
  COMMENT_UPDATED = 'commentUpdated',
  PRESENCE_UPDATED = 'presenceUpdated',
  CRDT_UPDATED = 'crdtUpdated',
}

ResponseCode

Machine-readable error codes returned in ServerResponseError.
enum ResponseCode {
  OK = 'OK',
  CREATED = 'CREATED',
  ACCEPTED = 'ACCEPTED',
  NO_CONTENT = 'NO_CONTENT',
  NOT_MODIFIED = 'NOT_MODIFIED',
  BAD_REQUEST = 'BAD_REQUEST',
  UNAUTHORIZED = 'UNAUTHORIZED',
  FORBIDDEN = 'FORBIDDEN',
  NOT_FOUND = 'NOT_FOUND',
  METHOD_NOT_ALLOWED = 'METHOD_NOT_ALLOWED',
  INVALID_PAYLOAD = 'INVALID_PAYLOAD',
  TIMEOUT = 'TIMEOUT',
  CONFLICT = 'CONFLICT',
  FILE_TOO_LARGE = 'FILE_TOO_LARGE',
  UNPROCESSABLE_ENTITY = 'UNPROCESSABLE_ENTITY',
  TOO_MANY_REQUESTS = 'TOO_MANY_REQUESTS',
  ACCESS_DENIED = 'ACCESS_DENIED',
  ALREADY_EXISTS = 'ALREADY_EXISTS',
  UNKNOWN_MESSAGE_TYPE = 'UNKNOWN_MESSAGE_TYPE',
  INTERNAL_SERVER_ERROR = 'INTERNAL_SERVER_ERROR',
  NOT_IMPLEMENTED = 'NOT_IMPLEMENTED',
  BAD_GATEWAY = 'BAD_GATEWAY',
  SERVICE_UNAVAILABLE = 'SERVICE_UNAVAILABLE',
  INTERNAL_ERROR = 'INTERNAL_ERROR',
  CREATION_FAILED = 'CREATION_FAILED',
  UPDATE_FAILED = 'UPDATE_FAILED',
  DELETION_FAILED = 'DELETION_FAILED',
  UPLOAD_FAILED = 'UPLOAD_FAILED',
}

Module

Server module identifiers used in error responses.
enum Module {
  AUTH = 'AUTH',
  USER = 'USER',
  ROOM = 'ROOM',
  STORAGE = 'STORAGE',
  BROADCAST = 'BROADCAST',
  STORE = 'STORE',
  COMMENT = 'COMMENT',
  ORGANIZATION = 'ORGANIZATION',
  GENERAL = 'GENERAL',
  UNKNOWN = 'UNKNOWN',
  PRESENCE = 'PRESENCE',
  CRDT = 'CRDT',
  WEBSOCKET = 'WEBSOCKET',
  WEBHOOK = 'WEBHOOK',
  WORKFLOW = 'WORKFLOW',
}

WEBHOOK_EVENT_NAMES

Array of all valid webhook event name strings. Useful for validation or building UI selectors.
const WEBHOOK_EVENT_NAMES: WebhookEventName[] = [
  'participant.joined',
  'participant.left',
  'session.started',
  'session.closed',
  'user.created',
  'user.updated',
  'user.deleted',
];

RESERVED_STORE_PREFIX

The prefix reserved for internal store names. User-defined stores must not start with this prefix.
const RESERVED_STORE_PREFIX = '__collabkit-';

COMMENTS_STORE_NAME

The internal store name used by the comments system. This store is managed automatically and should not be written to directly.
const COMMENTS_STORE_NAME = '__collabkit-comments';