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

NameTypeDescription

threadId*

string

Chat thread id

after

string

Message id. Messages sent after this message will be returned.

before

string

Message id. Latest messages sent before this message will be returned.

search

string

A text to be searched in message content.

limit

number

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

NameTypeDescription

thread

string

Thread id

to

string

User id

content

string

Message content

files

string[]

File id list

replyTo

string

Message id. If message is a reply to another message

{
    //  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