{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "name": "TaskEdge API Catalogue",
  "version": "1.0.0",
  "description": "RESTful API endpoints for TaskEdge micro-task management and AI-powered productivity tools",
  "base_url": "https://app.taskedge.io/api/v1",
  "authentication": {
    "type": "bearer_token",
    "description": "API key required in Authorization header",
    "header": "Authorization: Bearer {api_key}",
    "documentation": "https://taskedge.io/help-center.html"
  },
  "endpoints": [
    {
      "category": "Task Management",
      "endpoints": [
        {
          "id": "create_task",
          "name": "Create Task",
          "method": "POST",
          "path": "/tasks",
          "description": "Create a new task or micro-task",
          "request": {
            "content_type": "application/json",
            "body": {
              "title": "string (required)",
              "description": "string (optional)",
              "deadline": "ISO8601 datetime (optional)",
              "priority": "enum: low, medium, high (optional)",
              "assignee": "string user_id (optional)",
              "parent_task_id": "string (optional for subtasks)",
              "tags": "array of strings (optional)"
            }
          },
          "response": {
            "success": {
              "status": 201,
              "body": {
                "task_id": "string",
                "title": "string",
                "status": "string",
                "created_at": "ISO8601 datetime"
              }
            },
            "error": {
              "status": 400,
              "body": {
                "error": "string",
                "message": "string"
              }
            }
          }
        },
        {
          "id": "ai_breakdown_task",
          "name": "AI Micro-Task Breakdown",
          "method": "POST",
          "path": "/tasks/breakdown",
          "description": "Use AI to automatically decompose a complex task into micro-tasks",
          "request": {
            "content_type": "application/json",
            "body": {
              "task_description": "string (required)",
              "detail_level": "enum: brief, detailed, comprehensive (optional)",
              "auto_create": "boolean (optional, default: false)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "breakdown_id": "string",
                "original_task": "string",
                "subtasks": [
                  {
                    "title": "string",
                    "description": "string",
                    "estimated_duration": "string",
                    "priority": "string",
                    "dependencies": ["array of task indices"]
                  }
                ],
                "total_estimated_time": "string"
              }
            }
          },
          "availability": "premium"
        },
        {
          "id": "list_tasks",
          "name": "List Tasks",
          "method": "GET",
          "path": "/tasks",
          "description": "Retrieve tasks with filtering and pagination",
          "request": {
            "query_params": {
              "status": "enum: pending, in_progress, completed (optional)",
              "assignee": "string user_id (optional)",
              "priority": "enum: low, medium, high (optional)",
              "tags": "comma-separated strings (optional)",
              "page": "integer (optional, default: 1)",
              "limit": "integer (optional, default: 50, max: 200)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "tasks": ["array of task objects"],
                "total": "integer",
                "page": "integer",
                "pages": "integer"
              }
            }
          }
        },
        {
          "id": "update_task",
          "name": "Update Task",
          "method": "PATCH",
          "path": "/tasks/{task_id}",
          "description": "Update task properties",
          "request": {
            "path_params": {
              "task_id": "string (required)"
            },
            "body": {
              "title": "string (optional)",
              "description": "string (optional)",
              "status": "enum: pending, in_progress, completed (optional)",
              "priority": "enum: low, medium, high (optional)",
              "deadline": "ISO8601 datetime (optional)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "task_id": "string",
                "updated_fields": ["array of strings"]
              }
            }
          }
        },
        {
          "id": "delete_task",
          "name": "Delete Task",
          "method": "DELETE",
          "path": "/tasks/{task_id}",
          "description": "Delete a task permanently",
          "request": {
            "path_params": {
              "task_id": "string (required)"
            }
          },
          "response": {
            "success": {
              "status": 204
            }
          }
        }
      ]
    },
    {
      "category": "AI Invoice Generator",
      "endpoints": [
        {
          "id": "create_invoice_ai",
          "name": "Create Invoice with AI",
          "method": "POST",
          "path": "/invoices/generate",
          "description": "Generate professional invoice using natural language input",
          "request": {
            "content_type": "application/json",
            "body": {
              "prompt": "string (required, e.g., 'Create invoice for web development project')",
              "client_info": "object (optional, pre-populated client details)",
              "currency": "string (optional, default: USD)",
              "language": "string (optional, default: en)"
            }
          },
          "response": {
            "success": {
              "status": 201,
              "body": {
                "invoice_id": "string",
                "invoice_number": "string",
                "pdf_url": "string",
                "editable_url": "string",
                "total_amount": "number",
                "currency": "string",
                "status": "string"
              }
            }
          },
          "availability": "free"
        },
        {
          "id": "query_invoices",
          "name": "Query Invoices (Conversational)",
          "method": "POST",
          "path": "/invoices/query",
          "description": "Query invoices using natural language (e.g., 'find pending invoices')",
          "request": {
            "content_type": "application/json",
            "body": {
              "query": "string (required, natural language query)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "results": ["array of invoice objects"],
                "query_interpretation": "string",
                "total_found": "integer"
              }
            }
          },
          "availability": "free"
        },
        {
          "id": "update_invoice_status",
          "name": "Update Invoice Payment Status",
          "method": "PATCH",
          "path": "/invoices/{invoice_id}/status",
          "description": "Update payment status of invoice",
          "request": {
            "path_params": {
              "invoice_id": "string (required)"
            },
            "body": {
              "status": "enum: draft, sent, paid, overdue, cancelled (required)",
              "payment_date": "ISO8601 datetime (optional)",
              "notes": "string (optional)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "invoice_id": "string",
                "status": "string",
                "updated_at": "ISO8601 datetime"
              }
            }
          },
          "availability": "free"
        }
      ]
    },
    {
      "category": "AI Expense Tracker",
      "endpoints": [
        {
          "id": "upload_receipt",
          "name": "Upload Receipt (OCR)",
          "method": "POST",
          "path": "/expenses/upload",
          "description": "Upload receipt image for OCR extraction and automatic categorization",
          "request": {
            "content_type": "multipart/form-data",
            "body": {
              "file": "binary (required, image or PDF)",
              "auto_categorize": "boolean (optional, default: true)"
            }
          },
          "response": {
            "success": {
              "status": 201,
              "body": {
                "expense_id": "string",
                "extracted_data": {
                  "merchant": "string",
                  "date": "ISO8601 date",
                  "amount": "number",
                  "currency": "string",
                  "category": "string",
                  "items": ["array of line items"]
                },
                "receipt_url": "string",
                "confidence_score": "number (0-1)"
              }
            }
          },
          "availability": "free"
        },
        {
          "id": "query_expenses",
          "name": "Query Expenses (Conversational)",
          "method": "POST",
          "path": "/expenses/query",
          "description": "Query expenses using natural language (e.g., 'what are my expenses in June 2026')",
          "request": {
            "content_type": "application/json",
            "body": {
              "query": "string (required, natural language query)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "results": ["array of expense objects"],
                "query_interpretation": "string",
                "total_amount": "number",
                "currency": "string",
                "date_range": {
                  "start": "ISO8601 date",
                  "end": "ISO8601 date"
                }
              }
            }
          },
          "availability": "free"
        },
        {
          "id": "create_expense",
          "name": "Create Expense Manually",
          "method": "POST",
          "path": "/expenses",
          "description": "Manually create expense entry",
          "request": {
            "content_type": "application/json",
            "body": {
              "merchant": "string (required)",
              "amount": "number (required)",
              "currency": "string (optional, default: USD)",
              "date": "ISO8601 date (required)",
              "category": "string (optional)",
              "payment_method": "string (optional)",
              "notes": "string (optional)"
            }
          },
          "response": {
            "success": {
              "status": 201,
              "body": {
                "expense_id": "string",
                "created_at": "ISO8601 datetime"
              }
            }
          },
          "availability": "free"
        }
      ]
    },
    {
      "category": "PDF Converter",
      "endpoints": [
        {
          "id": "convert_pdf",
          "name": "Convert PDF",
          "method": "POST",
          "path": "/pdf/convert",
          "description": "Convert PDF to text or structured database format",
          "request": {
            "content_type": "multipart/form-data",
            "body": {
              "file": "binary (required, PDF file)",
              "output_format": "enum: text, json, csv, structured_db (required)",
              "extract_tables": "boolean (optional, default: true)",
              "preserve_layout": "boolean (optional, default: false)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "conversion_id": "string",
                "output_url": "string",
                "format": "string",
                "pages_processed": "integer",
                "processing_time_ms": "integer"
              }
            }
          },
          "availability": "free"
        }
      ]
    },
    {
      "category": "AI Idea Explorer",
      "endpoints": [
        {
          "id": "explore_idea",
          "name": "Explore & Validate Idea",
          "method": "POST",
          "path": "/ideas/explore",
          "description": "Interactive brainstorming with devil's advocate cross-questioning",
          "request": {
            "content_type": "application/json",
            "body": {
              "idea_description": "string (required)",
              "context": "string (optional, additional background)",
              "focus_areas": "array of strings (optional, e.g., ['market', 'technical', 'financial'])"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "session_id": "string",
                "analysis": {
                  "strengths": ["array of strings"],
                  "weaknesses": ["array of strings"],
                  "opportunities": ["array of strings"],
                  "threats": ["array of strings"]
                },
                "validation_questions": ["array of critical questions"],
                "market_insights": ["array of insights"],
                "next_steps": ["array of recommended actions"]
              }
            }
          },
          "availability": "free"
        },
        {
          "id": "continue_exploration",
          "name": "Continue Idea Exploration",
          "method": "POST",
          "path": "/ideas/explore/{session_id}/continue",
          "description": "Continue interactive exploration session",
          "request": {
            "path_params": {
              "session_id": "string (required)"
            },
            "body": {
              "response": "string (required, user's response to questions)",
              "additional_context": "string (optional)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "follow_up_questions": ["array of strings"],
                "refined_analysis": "object",
                "recommendations": ["array of strings"]
              }
            }
          },
          "availability": "free"
        }
      ]
    },
    {
      "category": "Team & Productivity",
      "endpoints": [
        {
          "id": "get_productivity_metrics",
          "name": "Get Productivity Metrics",
          "method": "GET",
          "path": "/analytics/productivity",
          "description": "Retrieve team productivity metrics and bottleneck analysis",
          "request": {
            "query_params": {
              "team_id": "string (optional)",
              "date_from": "ISO8601 date (optional)",
              "date_to": "ISO8601 date (optional)",
              "include_bottlenecks": "boolean (optional, default: true)"
            }
          },
          "response": {
            "success": {
              "status": 200,
              "body": {
                "metrics": {
                  "completion_rate": "number (percentage)",
                  "average_task_duration": "number (hours)",
                  "overdue_tasks": "integer",
                  "team_velocity": "number"
                },
                "bottlenecks": [
                  {
                    "task_id": "string",
                    "title": "string",
                    "blocked_duration": "number (hours)",
                    "impact_score": "number (0-10)"
                  }
                ],
                "trends": "object"
              }
            }
          },
          "availability": "premium"
        },
        {
          "id": "create_workflow_template",
          "name": "Create Workflow Template",
          "method": "POST",
          "path": "/workflows/templates",
          "description": "Create recurring workflow template for automation",
          "request": {
            "content_type": "application/json",
            "body": {
              "name": "string (required)",
              "description": "string (optional)",
              "tasks": ["array of task templates"],
              "schedule": {
                "frequency": "enum: daily, weekly, monthly, custom",
                "start_date": "ISO8601 date",
                "time": "HH:MM"
              },
              "assignees": ["array of user_ids"]
            }
          },
          "response": {
            "success": {
              "status": 201,
              "body": {
                "template_id": "string",
                "next_execution": "ISO8601 datetime"
              }
            }
          },
          "availability": "premium"
        }
      ]
    }
  ],
  "rate_limits": {
    "free_tier": {
      "requests_per_minute": 60,
      "requests_per_day": 1000
    },
    "premium_tier": {
      "requests_per_minute": 300,
      "requests_per_day": 50000
    }
  },
  "webhooks": {
    "available": false,
    "planned": true,
    "events": [
      "task.created",
      "task.updated",
      "task.completed",
      "invoice.paid",
      "expense.created",
      "bottleneck.detected"
    ]
  },
  "sdks": {
    "official": [],
    "community": [],
    "documentation": "https://taskedge.io/help-center.html"
  },
  "support": {
    "documentation": "https://taskedge.io/help-center.html",
    "contact": "https://taskedge.io/help-center.html",
    "status_page": "https://taskedge.io"
  },
  "metadata": {
    "last_updated": "2026-07-21",
    "version_history": [
      {
        "version": "1.0.0",
        "date": "2026-07-21",
        "changes": ["Initial API catalogue release"]
      }
    ]
  }
}
