This document describes the BYOM Core API endpoints, including request/response formats and authentication requirements.
All API endpoints are prefixed with: /api/v1/core
Most endpoints require authentication using a JWT token. Include the token in the Authorization header:
Authorization: Bearer <token>
{
"error": "Error message description"
}
{
"message": "Success message description"
}
/auth/login
Request:
{
"email": "user@example.com",
"password": "userpassword"
}
Response (200 OK):
{
"token": "jwt.token.here",
"user": {
"id": "uuid",
"email": "user@example.com",
"name": "User Name",
"role": "user"
}
}
/users/current
Response (200 OK):
{
"user": {
"id": "uuid",
"email": "user@example.com",
"name": "User Name",
"phone_number": "1234567890",
"role": "user",
"status": "active"
},
"workspaces": [
{
"id": "uuid",
"name": "Workspace Name"
}
]
}
/users/current
Request:
{
"name": "Updated Name",
"phone_number": "1234567890"
}
Response (200 OK):
{
"user": {
"id": "uuid",
"name": "Updated Name",
"phone_number": "1234567890"
}
}
/workspaces
Request:
{
"name": "New Workspace"
}
Response (201 Created):
{
"id": "uuid",
"name": "New Workspace"
}
/workspaces/owners/init
Request:
{
"email": "owner@example.com",
"name": "Owner Name",
"phone_number": "1234567890"
}
Response (201 Created):
{
"user": {
"id": "uuid",
"email": "owner@example.com",
"name": "Owner Name",
"role": "owner",
"status": "pending"
}
}
/workspaces/:id/members
Request:
{
"workspace_id": "uuid",
"role": "member"
}
Response (200 OK):
{
"message": "User added to workspace successfully"
}
/profiles
Response (200 OK):
{
"profiles": [
{
"id": "uuid",
"name": "Profile Name",
"workspace_id": "uuid"
}
]
}
/profiles
Request:
{
"name": "New Profile",
"workspace_id": "uuid"
}
Response (201 Created):
{
"profile": {
"id": "uuid",
"name": "New Profile",
"workspace_id": "uuid"
}
}
/profiles/:id
Response (200 OK):
{
"profile": {
"id": "uuid",
"name": "Profile Name",
"workspace_id": "uuid"
}
}
/profiles/:id
Request:
{
"name": "Updated Profile Name"
}
Response (200 OK):
{
"profile": {
"id": "uuid",
"name": "Updated Profile Name",
"workspace_id": "uuid"
}
}
/invitations
Request:
{
"email": "newuser@example.com",
"workspace_id": "uuid",
"role": "member"
}
Response (201 Created):
{
"id": "uuid",
"email": "newuser@example.com",
"status": "pending",
"expires_at": "2024-03-21T12:00:00Z",
"workspace_id": "uuid"
}
/invitations/accept
Request:
{
"email": "newuser@example.com",
"name": "New User",
"phone_number": "1234567890",
"password": "userpassword",
"token": "invitation-token"
}
Response (201 Created):
{
"user": {
"id": "uuid",
"email": "newuser@example.com",
"name": "New User"
},
"workspace_id": "uuid"
}
/invitations/validate?token=<token>
Response (200 OK):
{
"valid": true,
"workspace_id": "uuid",
"email": "newuser@example.com"
}
200 OK
: Successful request201 Created
: Resource created successfully400 Bad Request
: Invalid request parameters401 Unauthorized
: Authentication required or failed403 Forbidden
: Permission denied404 Not Found
: Resource not found500 Internal Server Error
: Server errorowner
: Workspace owneradmin
: Workspace administratormember
: Regular workspace memberpending
: Invitation awaiting acceptanceaccepted
: Invitation has been acceptedexpired
: Invitation has expiredcancelled
: Invitation was cancelled