Babbelkes - Chat API
A simple chat API built with Node.js, Express, and MongoDB.
Authentication
Protected endpoints require a Bearer token in the Authorization header:
Authorization: Bearer <token>
Get your token by creating a user or logging in.
Users (Public)
- GET /api/users - List users (query: limit, offset)
- GET /api/users/search?q=term - Search users by username or displayName
- GET /api/users/:id - Get user by ID
- POST /api/users - Create user (body: username, displayName?) - Returns token
- POST /api/users/login - Login (body: username) - Returns token
- PUT /api/users/:id - Update user (body: username?, displayName?)
- DELETE /api/users/:id - Delete user
Rooms (Protected)
- GET /api/rooms - List rooms (query: limit, offset, type, memberId)
- GET /api/rooms/search?q=term - Search rooms by name
- GET /api/rooms/:id - Get room by ID
- GET /api/rooms/:id/messages - Get room chat history (query: limit, offset)
- POST /api/rooms - Create room (body: name?, type?, members?)
- PUT /api/rooms/:id - Update room (body: name?, type?)
- POST /api/rooms/:id/members - Add member (body: userId)
- DELETE /api/rooms/:id/members/:userId - Remove member
- DELETE /api/rooms/:id - Delete room
Messages (Protected)
- GET /api/messages - List messages (query: limit, offset, authorId)
- GET /api/messages/search?q=term - Search messages by text
- GET /api/messages/:id - Get message by ID
- POST /api/messages - Create message (body: authorId, text, roomId?)
- PUT /api/messages/:id - Update message (body: text)
- DELETE /api/messages/:id - Delete message
Validation
- Username: 3-30 characters, alphanumeric and underscore only
- Display name: max 100 characters
- Message text: 1-1000 characters
- Room name: max 100 characters
- Room type: "group" or "direct"
Pagination
Use limit and offset query parameters. Default limit: 50, max: 200.
Storage
Data is stored in MongoDB.