All protected endpoints require a JWT token in the Authorization header:
Authorization: Bearer <your_jwt_token>
POST /users/register
Content-Type: application/json
{
"email": "[email protected]",
"password": "securepassword",
"name": "John Doe",
"username": "johndoe"
}POST /users/login
Content-Type: application/json
{
"email": "[email protected]",
"password": "securepassword"
}POST /users/forgot-password
Content-Type: application/json
{
"email": "[email protected]"
}POST /users/reset-password/{token}
Content-Type: application/json
{
"new_password": "newsecurepassword"
}GET /users/me
Authorization: Bearer <token>PUT /users/me
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Updated Name",
"username": "updatedusername"
}POST /users/change-password
Authorization: Bearer <token>
Content-Type: application/json
{
"current_password": "currentpassword",
"new_password": "newpassword"
}DELETE /users/me
Authorization: Bearer <token>GET /projects
Authorization: Bearer <token>POST /projects
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Project Name",
"description": "Project Description"
}GET /projects/{id}
Authorization: Bearer <token>PUT /projects/{id}
Authorization: Bearer <token>
Content-Type: application/json
{
"name": "Updated Project Name",
"description": "Updated Description"
}DELETE /projects/{id}
Authorization: Bearer <token>GET /projects/{project_id}/tickets
Authorization: Bearer <token>POST /projects/{project_id}/tickets
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Ticket Title",
"description": "Ticket Description",
"priority": "high",
"status": "open"
}GET /projects/{project_id}/tickets/{id}
Authorization: Bearer <token>PUT /projects/{project_id}/tickets/{id}
Authorization: Bearer <token>
Content-Type: application/json
{
"title": "Updated Title",
"description": "Updated Description",
"priority": "medium",
"status": "in_progress"
}DELETE /projects/{project_id}/tickets/{id}
Authorization: Bearer <token>POST /projects/{project_id}/tickets/{id}/assign
Authorization: Bearer <token>
Content-Type: application/json
{
"assignee_id": "user-uuid"
}GET /projects/{project_id}/tickets/{ticket_id}/comments
Authorization: Bearer <token>POST /projects/{project_id}/tickets/{ticket_id}/comments
Authorization: Bearer <token>
Content-Type: application/json
{
"content": "Comment content"
}PUT /projects/{project_id}/tickets/{ticket_id}/comments/{id}
Authorization: Bearer <token>
Content-Type: application/json
{
"content": "Updated comment content"
}DELETE /projects/{project_id}/tickets/{ticket_id}/comments/{id}
Authorization: Bearer <token>GET /projects/{project_id}/tasks/{task_id}/comments
Authorization: Bearer <token>POST /projects/{project_id}/tasks/{task_id}/comments
Authorization: Bearer <token>
Content-Type: application/json
{
"content": "Task comment content"
}GET /search?q=search_term
Authorization: Bearer <token>GET /health