# Tasks API BotServer provides RESTful endpoints for creating, managing, and tracking tasks and workflows within bot conversations. ## Overview The Tasks API enables: - Task creation and assignment - Workflow management - Task tracking and status updates - Deadline management - Task prioritization - Collaboration features ## Base URL ``` http://localhost:8080/api/v1/tasks ``` ## Authentication All Tasks API requests require authentication: ```http Authorization: Bearer ``` ## Endpoints ### Create Task **POST** `/tasks` Create a new task. **Request Body:** ```json { "title": "Review customer complaint", "description": "Investigate and respond to customer issue #1234", "assignee": "user456", "due_date": "2024-01-20T17:00:00Z", "priority": "high", "tags": ["support", "urgent"], "context": { "conversation_id": "conv_abc123", "bot_id": "support_bot" } } ``` **Response:** ```json { "task_id": "tsk_xyz789", "title": "Review customer complaint", "status": "pending", "created_at": "2024-01-15T10:00:00Z", "created_by": "user123" } ``` ### Get Task **GET** `/tasks/{task_id}` Retrieve task details. **Response:** ```json { "task_id": "tsk_xyz789", "title": "Review customer complaint", "description": "Investigate and respond to customer issue #1234", "status": "in_progress", "assignee": { "user_id": "user456", "name": "Jane Smith", "avatar_url": "https://example.com/avatar.jpg" }, "priority": "high", "due_date": "2024-01-20T17:00:00Z", "created_at": "2024-01-15T10:00:00Z", "updated_at": "2024-01-15T14:30:00Z", "progress": 60, "time_spent_minutes": 45, "comments_count": 3, "attachments_count": 2 } ``` ### Update Task **PATCH** `/tasks/{task_id}` Update task properties. **Request Body:** ```json { "status": "in_progress", "progress": 60, "assignee": "user789" } ``` **Response:** ```json { "task_id": "tsk_xyz789", "updated": true, "updated_fields": ["status", "progress", "assignee"], "updated_at": "2024-01-15T14:30:00Z" } ``` ### List Tasks **GET** `/tasks` List tasks with filtering and pagination. **Query Parameters:** - `status` - Filter by status: `pending`, `in_progress`, `completed`, `cancelled` - `assignee` - Filter by assignee user ID - `priority` - Filter by priority: `low`, `medium`, `high`, `critical` - `due_before` - Tasks due before date - `due_after` - Tasks due after date - `tags` - Comma-separated tags - `page` - Page number (default: 1) - `limit` - Items per page (default: 20) - `sort` - Sort by: `created_at`, `due_date`, `priority`, `updated_at` - `order` - Sort order: `asc`, `desc` **Response:** ```json { "tasks": [ { "task_id": "tsk_xyz789", "title": "Review customer complaint", "status": "in_progress", "assignee": "user456", "priority": "high", "due_date": "2024-01-20T17:00:00Z", "progress": 60 } ], "total": 42, "page": 1, "limit": 20 } ``` ### Complete Task **POST** `/tasks/{task_id}/complete` Mark a task as completed. **Request Body:** ```json { "resolution": "Issue resolved - refund processed", "time_spent_minutes": 90, "outcomes": ["customer_satisfied", "refund_issued"] } ``` **Response:** ```json { "task_id": "tsk_xyz789", "status": "completed", "completed_at": "2024-01-15T16:00:00Z", "completed_by": "user456" } ``` ### Delete Task **DELETE** `/tasks/{task_id}` Delete a task. **Response:** ```json { "deleted": true, "task_id": "tsk_xyz789" } ``` ## Task Comments ### Add Comment **POST** `/tasks/{task_id}/comments` Add a comment to a task. **Request Body:** ```json { "text": "Contacted customer via email, waiting for response", "mentions": ["user123"], "attachments": ["file_abc123"] } ``` **Response:** ```json { "comment_id": "cmt_123", "task_id": "tsk_xyz789", "text": "Contacted customer via email, waiting for response", "author": "user456", "created_at": "2024-01-15T14:30:00Z" } ``` ### List Comments **GET** `/tasks/{task_id}/comments` Get task comments. **Response:** ```json { "comments": [ { "comment_id": "cmt_123", "text": "Contacted customer via email", "author": { "user_id": "user456", "name": "Jane Smith" }, "created_at": "2024-01-15T14:30:00Z" } ], "total": 3 } ``` ## Task Attachments ### Upload Attachment **POST** `/tasks/{task_id}/attachments` Attach a file to a task. **Request:** - Method: `POST` - Content-Type: `multipart/form-data` - Form fields: `file` (binary) **Response:** ```json { "attachment_id": "att_789", "task_id": "tsk_xyz789", "filename": "screenshot.png", "size_bytes": 102400, "mime_type": "image/png", "uploaded_at": "2024-01-15T14:45:00Z" } ``` ## Task Templates ### Create Template **POST** `/templates` Create a reusable task template. **Request Body:** ```json { "name": "Customer Complaint", "description_template": "Investigate issue: {{issue_id}}", "default_priority": "high", "default_tags": ["support"], "checklist": [ "Review conversation history", "Contact customer", "Provide resolution", "Follow up" ] } ``` ### Create Task from Template **POST** `/tasks/from-template` Create a task from a template. **Request Body:** ```json { "template_id": "tpl_123", "variables": { "issue_id": "#1234" }, "assignee": "user456", "due_date": "2024-01-20T17:00:00Z" } ``` ## Workflows ### Create Workflow **POST** `/workflows` Create a multi-step workflow. **Request Body:** ```json { "name": "Customer Onboarding", "steps": [ { "name": "Account Setup", "assignee": "user456", "duration_hours": 2 }, { "name": "Training", "assignee": "user789", "duration_hours": 4, "depends_on": ["Account Setup"] } ] } ``` ### Get Workflow Status **GET** `/workflows/{workflow_id}/status` Get workflow progress. **Response:** ```json { "workflow_id": "wf_123", "name": "Customer Onboarding", "status": "in_progress", "progress": 50, "completed_steps": 1, "total_steps": 2, "current_step": "Training", "estimated_completion": "2024-01-16T12:00:00Z" } ``` ## Task Automation ### Create Automation Rule **POST** `/automations` Create rules for automatic task creation. **Request Body:** ```json { "name": "High Priority Support", "trigger": { "type": "conversation_tag", "value": "urgent" }, "action": { "type": "create_task", "template": "tpl_urgent", "auto_assign": true, "priority": "critical" } } ``` ## Notifications ### Task Notifications Configure notifications for task events: ```json { "events": [ "task_assigned", "task_completed", "task_overdue", "comment_added" ], "channels": ["email", "in_app"], "recipients": ["assignee", "watchers"] } ``` ## Analytics ### Task Analytics **GET** `/tasks/analytics` Get task performance metrics. **Response:** ```json { "summary": { "total_tasks": 234, "completed": 189, "in_progress": 35, "overdue": 10, "completion_rate": 0.81, "average_completion_time_hours": 4.5 }, "by_priority": { "critical": {"total": 10, "completed": 8}, "high": {"total": 45, "completed": 40}, "medium": {"total": 120, "completed": 100}, "low": {"total": 59, "completed": 41} }, "by_assignee": [ { "user_id": "user456", "name": "Jane Smith", "tasks_completed": 45, "average_time_hours": 3.2 } ] } ``` ## Error Responses ### 400 Bad Request ```json { "error": "invalid_due_date", "message": "Due date must be in the future" } ``` ### 404 Not Found ```json { "error": "task_not_found", "message": "Task tsk_xyz789 not found" } ``` ### 403 Forbidden ```json { "error": "permission_denied", "message": "You don't have permission to modify this task" } ``` ## Best Practices 1. **Clear Titles**: Use descriptive, action-oriented task titles 2. **Set Priorities**: Always set appropriate priority levels 3. **Add Context**: Include conversation or bot context 4. **Use Templates**: Create templates for recurring task types 5. **Track Progress**: Update progress regularly 6. **Set Realistic Deadlines**: Allow adequate time for completion 7. **Use Tags**: Categorize tasks with consistent tags ## Integration with BASIC Tasks can be created from BASIC scripts: ```basic ' Create task from conversation task_id = CREATE TASK "Follow up with customer", "user456" SET TASK PRIORITY task_id, "high" SET TASK DUE DATE task_id, NOW() + 24 * 3600 ' Check task status status = GET TASK STATUS task_id IF status = "completed" THEN TALK "Task has been completed" END IF ``` ## Rate Limits | Operation | Limit | Window | |-----------|-------|--------| | Create Task | 100/hour | Per user | | Update Task | 200/hour | Per user | | List Tasks | 60/minute | Per user | | Add Comment | 50/hour | Per user | ## Related APIs - [Notifications API](./notifications-api.md) - Task notifications - [Analytics API](./analytics-api.md) - Task analytics - [User API](./user-security.md) - User management