Chat

The chat feature is organized by chat threads and messages in the chat threads.

Endpoints

Get Chat Threads

GET https://cubicl.io/api/v1/chat/threads

ChatThread[]

Get Messages

GET https://cubicl.io/api/v1/chat/threads/:threadId/messages

Gets messages in a chat thread.

Path Parameters

ChatMessage[]

Send Message

POST https://cubicl.io/api/v1/chat/messages

Messages are sent to threads or users. When there is not a thread between two users yet, you need to set to parameter with the receiver user's id. After the first message, a thread will be created. You should set thread parameter for existing threads.

Either thread or to parameter must be set.

Either content or files parameter must be set.

Request Body

{
    //  Newly created message ID
    message: string,
    // This exists if a new thread is created with this request.
    // New thread is created when a user sends a message to another user
    // for the first time.
    thread?: ChatThread
}

Data

Chat Threads

Chat messages are sent in a thread. Threads have 3 types:

  1. personal: Between 2 users. Created when a user sends a message to another user.

  2. group: Created for each project. All project members are members of these threads.

  3. custom: Created among a group of users by users themselves. This is a private chat group.

type ChatThread = {
    _id: string;
    type: 'personal' | 'group' | 'custom';
    // Project id. Exists when type is 'group'
    group?: string;
    // Name of the thread. Exists when type is 'custom'
    name?: string;
    // Ids of users in the chat thread. Exists when type is 'personal' or 'custom'
    users: string[];
    // Date of last activity (message) in the thread
    activity: number;
    // Date at which current user viewed the thread. 0 if not accessed before.
    access: number;
    lastMessage: ChatMessage | null;
    // Number of new messages since last access.
    newActivityCount: number;
    createdAt: number;
}

Chat Messages

type ChatMessage = {
    _id: string;
    // Thread id
    thread: string;
    // Id of the user who sent the message
    from: string;
    content: string;
    // File attachments in the message. Check Files page for data format.
    files: File[];
    // Ids of the users who liked the message
    likes: string[];
    dislikes: string[];
    // If a message is a reply to another message, this will be the referenced
    // message id
    replyTo: string | null;
    createdAt: number;
}

Last updated