Backend API Contract
Purpose: Document Phase III backend API endpoints for chatbot integration
Version: 1.0.0 (Phase III - READ-ONLY)
Base URL
http://backend-service:8000
Authentication
All endpoints (except /api/health) require JWT token in Authorization header:
Authorization: Bearer <jwt_token>
Endpoints
Health Check
GET /api/health
Response: 200 OK
{
"status": "healthy",
"version": "1.0.0"
}
Create Todo
POST /api/todos
Authorization: Bearer <jwt_token>
Content-Type: application/json
{
"title": "Buy groceries",
"description": "Milk, eggs, bread",
"priority": "high"
}
Response: 201 Created
{
"id": 1,
"title": "Buy groceries",
"description": "Milk, eggs, bread",
"priority": "high",
"completed": false,
"user_id": 123,
"created_at": "2026-01-30T00:00:00Z"
}
List Todos
GET /api/todos
Authorization: Bearer <jwt_token>
Response: 200 OK
{
"todos": [
{
"id": 1,
"title": "Buy groceries",
"description": "Milk, eggs, bread",
"priority": "high",
"completed": false,
"user_id": 123,
"created_at": "2026-01-30T00:00:00Z"
}
]
}
Get Todo by ID
GET /api/todos/{id}
Authorization: Bearer <jwt_token>
Response: 200 OK
{
"id": 1,
"title": "Buy groceries",
"description": "Milk, eggs, bread",
"priority": "high",
"completed": false,
"user_id": 123,
"created_at": "2026-01-30T00:00:00Z"
}
Update Todo
PUT /api/todos/{id}
Authorization: Bearer <jwt_token>
Content-Type: application/json
{
"title": "Buy groceries",
"description": "Milk, eggs, bread, butter",
"priority": "high",
"completed": true
}
Response: 200 OK
{
"id": 1,
"title": "Buy groceries",
"description": "Milk, eggs, bread, butter",
"priority": "high",
"completed": true,
"user_id": 123,
"updated_at": "2026-01-30T01:00:00Z"
}
Delete Todo
DELETE /api/todos/{id}
Authorization: Bearer <jwt_token>
Response: 200 OK
{
"message": "Todo deleted successfully"
}
Error Responses
All error responses follow this format:
{
"error": "Error message",
"detail": "Detailed error description"
}
Common Status Codes:
- 400 Bad Request - Invalid input
- 401 Unauthorized - Missing or invalid JWT token
- 403 Forbidden - User doesn't own this todo
- 404 Not Found - Todo doesn't exist
- 500 Internal Server Error - Server error
Chatbot Integration Notes
- JWT Token Forwarding: Chatbot MUST include user's JWT token when calling backend APIs
- User Isolation: Backend automatically filters todos by
user_idfrom JWT - Intent Mapping:
- "add/create/insert todo" → POST /api/todos
- "list/show/get todos" → GET /api/todos
- "update/edit/modify todo" → PUT /api/todos/{id}
- "delete/remove todo" → DELETE /api/todos/{id}
- Priority Values: "low", "medium", "high"
- Boolean Fields:
completedis boolean (true/false)
Phase IV Constraint
This API contract is READ-ONLY. No modifications allowed in Phase IV.