{
  "info": {
    "name": "Autovella API",
    "_postman_id": "autovella-api-v1",
    "description": "REST API reference for integrating with the Autovella PSA platform.\n\n**Authentication**\nAll endpoints require a Bearer token obtained from `POST /api/auth/login`. Set the `token` collection variable after login and all requests inherit it automatically.\n\nExternal API endpoints (`/api/external/*`) use an API key via the `x-api-key` header instead — create keys in Settings → API Keys.\n\n**Base URL:** `{{base_url}}`",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "variable": [
    { "key": "base_url",    "value": "https://autovella.cloud", "type": "string", "description": "Change to your self-hosted URL if applicable" },
    { "key": "token",       "value": "", "type": "string", "description": "JWT from POST /api/auth/login → set after login" },
    { "key": "api_key",     "value": "", "type": "string", "description": "API key for external integrations (x-api-key header)" },
    { "key": "project_id",  "value": "", "type": "string" },
    { "key": "task_id",     "value": "", "type": "string" },
    { "key": "sprint_id",   "value": "", "type": "string" },
    { "key": "invoice_id",  "value": "", "type": "string" },
    { "key": "account_id",  "value": "", "type": "string" },
    { "key": "contact_id",  "value": "", "type": "string" },
    { "key": "deal_id",     "value": "", "type": "string" },
    { "key": "user_id",     "value": "", "type": "string" },
    { "key": "team_id",     "value": "", "type": "string" }
  ],
  "auth": {
    "type": "bearer",
    "bearer": [{ "key": "token", "value": "{{token}}", "type": "string" }]
  },
  "item": [
    {
      "name": "🔐 Auth",
      "item": [
        {
          "name": "Login",
          "event": [{ "listen": "test", "script": { "exec": ["var r=pm.response.json();if(r.token)pm.collectionVariables.set('token',r.token);"], "type": "text/javascript" } }],
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "url": "{{base_url}}/api/auth/login",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"you@example.com\",\n  \"password\": \"yourpassword\"\n}" }
          }
        },
        {
          "name": "Forgot Password",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "url": "{{base_url}}/api/auth/forgot-password",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"email\": \"you@example.com\"\n}" }
          }
        },
        {
          "name": "Reset Password",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST",
            "url": "{{base_url}}/api/auth/reset-password",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"token\": \"reset-token-from-email\",\n  \"password\": \"newpassword\"\n}" }
          }
        },
        { "name": "Get Current User (me)", "request": { "method": "GET", "url": "{{base_url}}/api/auth/me" } },
        { "name": "Get Org Storage", "request": { "method": "GET", "url": "{{base_url}}/api/auth/me/storage" } },
        {
          "name": "Update My Profile",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/auth/profile",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"John Doe\",\n  \"phone\": \"+91 98765 43210\",\n  \"timezone\": \"Asia/Kolkata\"\n}" }
          }
        },
        {
          "name": "Change My Password",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/auth/password",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"currentPassword\": \"oldpassword\",\n  \"newPassword\": \"newpassword\"\n}" }
          }
        },
        { "name": "Get User Directory", "request": { "method": "GET", "url": "{{base_url}}/api/auth/users/directory" } }
      ]
    },
    {
      "name": "👥 Users",
      "item": [
        { "name": "List Users", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/auth/users?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Get User", "request": { "method": "GET", "url": "{{base_url}}/api/auth/users/{{user_id}}" } },
        {
          "name": "Create User",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/auth/users",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Jane Smith\",\n  \"email\": \"jane@example.com\",\n  \"password\": \"password123\",\n  \"roleId\": \"role-uuid\"\n}" }
          }
        },
        {
          "name": "Update User",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/auth/users/{{user_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Jane Updated\",\n  \"roleId\": \"role-uuid\"\n}" }
          }
        },
        { "name": "Delete User", "request": { "method": "DELETE", "url": "{{base_url}}/api/auth/users/{{user_id}}" } },
        { "name": "Send Password Reset", "request": { "method": "POST", "url": "{{base_url}}/api/auth/users/{{user_id}}/send-reset" } },
        { "name": "Unlock User", "request": { "method": "POST", "url": "{{base_url}}/api/auth/users/{{user_id}}/unlock" } },
        { "name": "Get Login History", "request": { "method": "GET", "url": "{{base_url}}/api/auth/users/{{user_id}}/login-history" } },
        { "name": "Search Users", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/users/search?q=john", "query": [{"key":"q","value":"john"}] } } }
      ]
    },
    {
      "name": "📁 Projects",
      "item": [
        { "name": "List Projects", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/projects?page=1&limit=20&status=active", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"},{"key":"status","value":"active"}] } } },
        { "name": "Search Projects", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/projects/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Gantt (All Projects)", "request": { "method": "GET", "url": "{{base_url}}/api/projects/gantt/all" } },
        { "name": "Get Project", "request": { "method": "GET", "url": "{{base_url}}/api/projects/{{project_id}}" } },
        { "name": "Get Project Gantt", "request": { "method": "GET", "url": "{{base_url}}/api/projects/{{project_id}}/gantt" } },
        { "name": "Get Project Tasks", "request": { "method": "GET", "url": "{{base_url}}/api/projects/{{project_id}}/tasks" } },
        { "name": "Get Project History", "request": { "method": "GET", "url": "{{base_url}}/api/projects/{{project_id}}/history" } },
        {
          "name": "Create Project",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/projects",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Website Redesign\",\n  \"description\": \"Full website redesign project\",\n  \"status\": \"planning\",\n  \"priority\": \"high\",\n  \"accountId\": \"{{account_id}}\",\n  \"startDate\": \"2026-07-01\",\n  \"dueDate\": \"2026-09-30\",\n  \"budget\": 50000,\n  \"currency\": \"USD\"\n}" }
          }
        },
        {
          "name": "Update Project",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/projects/{{project_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Website Redesign v2\",\n  \"status\": \"in_progress\"\n}" }
          }
        },
        { "name": "Delete Project", "request": { "method": "DELETE", "url": "{{base_url}}/api/projects/{{project_id}}" } },
        {
          "name": "Add Project Member",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/projects/{{project_id}}/members",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"userId\": \"{{user_id}}\",\n  \"role\": \"member\"\n}" }
          }
        },
        {
          "name": "Update Project Member",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/projects/{{project_id}}/members/{{user_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"role\": \"lead\"\n}" }
          }
        },
        { "name": "Remove Project Member", "request": { "method": "DELETE", "url": "{{base_url}}/api/projects/{{project_id}}/members/{{user_id}}" } }
      ]
    },
    {
      "name": "✅ Tasks",
      "item": [
        { "name": "List Tasks", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/tasks?projectId={{project_id}}&page=1&limit=50", "query": [{"key":"projectId","value":"{{project_id}}"},{"key":"page","value":"1"},{"key":"limit","value":"50"}] } } },
        { "name": "Search Tasks", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/tasks/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Task", "request": { "method": "GET", "url": "{{base_url}}/api/tasks/{{task_id}}" } },
        { "name": "Get Task History", "request": { "method": "GET", "url": "{{base_url}}/api/tasks/{{task_id}}/history" } },
        { "name": "Get Subtasks", "request": { "method": "GET", "url": "{{base_url}}/api/tasks/{{task_id}}/subtasks" } },
        {
          "name": "Create Task",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/tasks",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"Design homepage mockup\",\n  \"description\": \"Create wireframes and mockups\",\n  \"projectId\": \"{{project_id}}\",\n  \"status\": \"todo\",\n  \"priority\": \"high\",\n  \"assigneeId\": \"{{user_id}}\",\n  \"dueDate\": \"2026-07-15\",\n  \"estimatedHours\": 8\n}" }
          }
        },
        {
          "name": "Create Subtask",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/tasks/{{task_id}}/subtasks",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"Write copy for hero section\",\n  \"assigneeId\": \"{{user_id}}\"\n}" }
          }
        },
        {
          "name": "Update Task",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/tasks/{{task_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"Updated task title\",\n  \"status\": \"in_progress\",\n  \"priority\": \"medium\"\n}" }
          }
        },
        {
          "name": "Update Task Status",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/tasks/{{task_id}}/status",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"status\": \"done\"\n}" }
          }
        },
        {
          "name": "Move Task",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/tasks/{{task_id}}/move",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"sectionId\": \"section-uuid\",\n  \"order\": 2\n}" }
          }
        },
        { "name": "Delete Task", "request": { "method": "DELETE", "url": "{{base_url}}/api/tasks/{{task_id}}" } }
      ]
    },
    {
      "name": "🔢 Subtasks",
      "item": [
        { "name": "Get Subtask", "request": { "method": "GET", "url": "{{base_url}}/api/subtasks/{{subtask_id}}" } },
        { "name": "Search Subtasks", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/subtasks/search?q=", "query": [{"key":"q","value":""}] } } },
        {
          "name": "Update Subtask",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/subtasks/{{subtask_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"Updated subtask\"\n}" }
          }
        },
        { "name": "Toggle Subtask Complete", "request": { "method": "PATCH", "url": "{{base_url}}/api/subtasks/{{subtask_id}}/complete" } },
        { "name": "Delete Subtask", "request": { "method": "DELETE", "url": "{{base_url}}/api/subtasks/{{subtask_id}}" } }
      ]
    },
    {
      "name": "📋 Sections",
      "item": [
        { "name": "List Sections", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/sections?projectId={{project_id}}", "query": [{"key":"projectId","value":"{{project_id}}"}] } } },
        { "name": "Search Sections", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/sections/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Section", "request": { "method": "GET", "url": "{{base_url}}/api/sections/{{section_id}}" } },
        {
          "name": "Create Section",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/sections",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"In Progress\",\n  \"projectId\": \"{{project_id}}\",\n  \"order\": 1\n}" }
          }
        },
        {
          "name": "Update Section",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/sections/{{section_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Completed\"\n}" }
          }
        },
        {
          "name": "Reorder Sections",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/sections/reorder",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"ids\": [\"section-uuid-1\", \"section-uuid-2\"]\n}" }
          }
        },
        { "name": "Delete Section", "request": { "method": "DELETE", "url": "{{base_url}}/api/sections/{{section_id}}" } }
      ]
    },
    {
      "name": "🏃 Sprints",
      "item": [
        { "name": "List Sprints", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/sprints?projectId={{project_id}}", "query": [{"key":"projectId","value":"{{project_id}}"}] } } },
        { "name": "Search Sprints", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/sprints/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Sprint Velocity", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/sprints/velocity?projectId={{project_id}}", "query": [{"key":"projectId","value":"{{project_id}}"}] } } },
        { "name": "Get Sprint", "request": { "method": "GET", "url": "{{base_url}}/api/sprints/{{sprint_id}}" } },
        { "name": "Get Sprint Tasks", "request": { "method": "GET", "url": "{{base_url}}/api/sprints/{{sprint_id}}/tasks" } },
        { "name": "Get Sprint Burndown", "request": { "method": "GET", "url": "{{base_url}}/api/sprints/{{sprint_id}}/burndown" } },
        {
          "name": "Create Sprint",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/sprints",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Sprint 1\",\n  \"projectId\": \"{{project_id}}\",\n  \"startDate\": \"2026-07-01\",\n  \"endDate\": \"2026-07-14\",\n  \"goal\": \"Complete homepage design\"\n}" }
          }
        },
        {
          "name": "Update Sprint",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/sprints/{{sprint_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Sprint 1 (revised)\",\n  \"endDate\": \"2026-07-21\"\n}" }
          }
        },
        {
          "name": "Bulk Assign Tasks to Sprint",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/sprints/{{sprint_id}}/tasks",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"taskIds\": [\"task-uuid-1\", \"task-uuid-2\"]\n}" }
          }
        },
        {
          "name": "Complete Sprint",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/sprints/{{sprint_id}}/complete",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"moveUnfinishedTo\": \"backlog\"\n}" }
          }
        },
        { "name": "Delete Sprint", "request": { "method": "DELETE", "url": "{{base_url}}/api/sprints/{{sprint_id}}" } }
      ]
    },
    {
      "name": "⏱ Timesheets",
      "item": [
        { "name": "List Timesheets", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/timesheets?page=1&limit=20&projectId={{project_id}}", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"},{"key":"projectId","value":"{{project_id}}"}] } } },
        { "name": "Get Timesheet Report", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/timesheets/report?startDate=2026-07-01&endDate=2026-07-31", "query": [{"key":"startDate","value":"2026-07-01"},{"key":"endDate","value":"2026-07-31"}] } } },
        { "name": "Get Timesheet", "request": { "method": "GET", "url": "{{base_url}}/api/timesheets/{{timesheet_id}}" } },
        {
          "name": "Create Timesheet",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/timesheets",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"projectId\": \"{{project_id}}\",\n  \"taskId\": \"{{task_id}}\",\n  \"hours\": 4.5,\n  \"date\": \"2026-07-01\",\n  \"description\": \"Working on homepage design\",\n  \"billable\": true\n}" }
          }
        },
        {
          "name": "Update Timesheet",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/timesheets/{{timesheet_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"hours\": 5,\n  \"description\": \"Updated description\"\n}" }
          }
        },
        { "name": "Submit Timesheet", "request": { "method": "PATCH", "url": "{{base_url}}/api/timesheets/{{timesheet_id}}/submit" } },
        { "name": "Approve Timesheet", "request": { "method": "PATCH", "url": "{{base_url}}/api/timesheets/{{timesheet_id}}/approve" } },
        {
          "name": "Reject Timesheet",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/timesheets/{{timesheet_id}}/reject",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"reason\": \"Incorrect hours logged\"\n}" }
          }
        },
        { "name": "Delete Timesheet", "request": { "method": "DELETE", "url": "{{base_url}}/api/timesheets/{{timesheet_id}}" } }
      ]
    },
    {
      "name": "💰 Expenses",
      "item": [
        { "name": "List Expenses", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/expenses?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Get Expense Report", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/expenses/report?startDate=2026-07-01&endDate=2026-07-31", "query": [{"key":"startDate","value":"2026-07-01"},{"key":"endDate","value":"2026-07-31"}] } } },
        { "name": "Get Expense", "request": { "method": "GET", "url": "{{base_url}}/api/expenses/{{expense_id}}" } },
        {
          "name": "Create Expense (with receipt)",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/expenses",
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "projectId", "value": "{{project_id}}", "type": "text" },
                { "key": "amount", "value": "150.00", "type": "text" },
                { "key": "currency", "value": "USD", "type": "text" },
                { "key": "category", "value": "travel", "type": "text" },
                { "key": "description", "value": "Client meeting travel", "type": "text" },
                { "key": "date", "value": "2026-07-01", "type": "text" },
                { "key": "receipt", "type": "file", "description": "Optional receipt image/PDF" }
              ]
            }
          }
        },
        { "name": "Approve Expense", "request": { "method": "PATCH", "url": "{{base_url}}/api/expenses/{{expense_id}}/approve" } },
        {
          "name": "Reject Expense",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/expenses/{{expense_id}}/reject",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"reason\": \"Missing receipt\"\n}" }
          }
        },
        { "name": "Delete Expense", "request": { "method": "DELETE", "url": "{{base_url}}/api/expenses/{{expense_id}}" } }
      ]
    },
    {
      "name": "🏢 CRM — Accounts",
      "item": [
        { "name": "List Accounts", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/accounts?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Search Accounts", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/accounts/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Account", "request": { "method": "GET", "url": "{{base_url}}/api/accounts/{{account_id}}" } },
        { "name": "Get Account Projects", "request": { "method": "GET", "url": "{{base_url}}/api/accounts/{{account_id}}/projects" } },
        {
          "name": "Create Account",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/accounts",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Acme Corporation\",\n  \"industry\": \"Technology\",\n  \"website\": \"https://acme.com\",\n  \"phone\": \"+1234567890\",\n  \"email\": \"info@acme.com\",\n  \"city\": \"San Francisco\",\n  \"country\": \"US\"\n}" }
          }
        },
        {
          "name": "Update Account",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/accounts/{{account_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Acme Corp Updated\"\n}" }
          }
        },
        { "name": "Delete Account", "request": { "method": "DELETE", "url": "{{base_url}}/api/accounts/{{account_id}}" } }
      ]
    },
    {
      "name": "👤 CRM — Contacts",
      "item": [
        { "name": "List Contacts", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/contacts?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Search Contacts", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/contacts/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Contact", "request": { "method": "GET", "url": "{{base_url}}/api/contacts/{{contact_id}}" } },
        {
          "name": "Create Contact",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/contacts",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"firstName\": \"John\",\n  \"lastName\": \"Doe\",\n  \"email\": \"john@acme.com\",\n  \"phone\": \"+1234567890\",\n  \"title\": \"CTO\",\n  \"accountId\": \"{{account_id}}\"\n}" }
          }
        },
        {
          "name": "Update Contact",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/contacts/{{contact_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"VP Engineering\"\n}" }
          }
        },
        { "name": "Delete Contact", "request": { "method": "DELETE", "url": "{{base_url}}/api/contacts/{{contact_id}}" } }
      ]
    },
    {
      "name": "💼 CRM — Deals",
      "item": [
        { "name": "List Deals", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/deals?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Search Deals", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/deals/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Deal", "request": { "method": "GET", "url": "{{base_url}}/api/deals/{{deal_id}}" } },
        {
          "name": "Create Deal",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/deals",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Acme Redesign Project\",\n  \"accountId\": \"{{account_id}}\",\n  \"contactId\": \"{{contact_id}}\",\n  \"value\": 50000,\n  \"currency\": \"USD\",\n  \"stage\": \"proposal\",\n  \"closeDate\": \"2026-08-31\",\n  \"probability\": 60\n}" }
          }
        },
        {
          "name": "Update Deal",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/deals/{{deal_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"stage\": \"negotiation\",\n  \"probability\": 80\n}" }
          }
        },
        {
          "name": "Convert Deal to Project",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/deals/{{deal_id}}/convert",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"createProject\": true,\n  \"projectName\": \"Acme Website Redesign\"\n}" }
          }
        },
        { "name": "Delete Deal", "request": { "method": "DELETE", "url": "{{base_url}}/api/deals/{{deal_id}}" } }
      ]
    },
    {
      "name": "🧾 Invoices",
      "item": [
        { "name": "List Invoices", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/invoices?page=1&limit=20&status=draft", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"},{"key":"status","value":"draft"}] } } },
        { "name": "Search Invoices", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/invoices/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Invoice Stats", "request": { "method": "GET", "url": "{{base_url}}/api/invoices/stats" } },
        { "name": "List Starter Templates", "request": { "method": "GET", "url": "{{base_url}}/api/invoices/templates/starters" } },
        { "name": "Get Invoice", "request": { "method": "GET", "url": "{{base_url}}/api/invoices/{{invoice_id}}" } },
        { "name": "Get Invoice PDF", "request": { "method": "GET", "url": "{{base_url}}/api/invoices/{{invoice_id}}/pdf" } },
        {
          "name": "Create Invoice",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/invoices",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"accountId\": \"{{account_id}}\",\n  \"projectId\": \"{{project_id}}\",\n  \"currency\": \"USD\",\n  \"dueDate\": \"2026-08-01\",\n  \"items\": [\n    {\n      \"description\": \"Design services — July 2026\",\n      \"quantity\": 40,\n      \"rate\": 150,\n      \"tax\": 10\n    }\n  ],\n  \"notes\": \"Thank you for your business\"\n}" }
          }
        },
        {
          "name": "Generate Invoice from Timesheets",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/invoices/generate",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"projectId\": \"{{project_id}}\",\n  \"accountId\": \"{{account_id}}\",\n  \"startDate\": \"2026-06-01\",\n  \"endDate\": \"2026-06-30\"\n}" }
          }
        },
        {
          "name": "Update Invoice",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/invoices/{{invoice_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"dueDate\": \"2026-08-15\",\n  \"notes\": \"Updated notes\"\n}" }
          }
        },
        { "name": "Send Invoice", "request": { "method": "PATCH", "url": "{{base_url}}/api/invoices/{{invoice_id}}/send" } },
        {
          "name": "Mark as Paid",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/invoices/{{invoice_id}}/pay",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"paidDate\": \"2026-07-15\",\n  \"paymentMethod\": \"bank_transfer\",\n  \"reference\": \"TXN-12345\"\n}" }
          }
        },
        { "name": "Cancel Invoice", "request": { "method": "PATCH", "url": "{{base_url}}/api/invoices/{{invoice_id}}/cancel" } },
        { "name": "Render Invoice", "request": { "method": "POST", "url": "{{base_url}}/api/invoices/{{invoice_id}}/render" } },
        { "name": "Delete Invoice", "request": { "method": "DELETE", "url": "{{base_url}}/api/invoices/{{invoice_id}}" } }
      ]
    },
    {
      "name": "📎 Attachments",
      "item": [
        { "name": "List Attachments", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/attachments?entityType=task&entityId={{task_id}}", "query": [{"key":"entityType","value":"task"},{"key":"entityId","value":"{{task_id}}"}] } } },
        { "name": "Get Latest Images", "request": { "method": "GET", "url": "{{base_url}}/api/attachments/latest-images" } },
        {
          "name": "Upload Attachment",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/attachments",
            "body": {
              "mode": "formdata",
              "formdata": [
                { "key": "file", "type": "file" },
                { "key": "entityType", "value": "task", "type": "text" },
                { "key": "entityId", "value": "{{task_id}}", "type": "text" }
              ]
            }
          }
        },
        { "name": "Delete Attachment", "request": { "method": "DELETE", "url": "{{base_url}}/api/attachments/{{attachment_id}}" } }
      ]
    },
    {
      "name": "💬 Comments",
      "item": [
        { "name": "List Comments", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/comments?entityType=task&entityId={{task_id}}", "query": [{"key":"entityType","value":"task"},{"key":"entityId","value":"{{task_id}}"}] } } },
        { "name": "Get Comment", "request": { "method": "GET", "url": "{{base_url}}/api/comments/{{comment_id}}" } },
        { "name": "Get My Mentions", "request": { "method": "GET", "url": "{{base_url}}/api/comments/mentions/me" } },
        {
          "name": "Create Comment",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/comments",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"entityType\": \"task\",\n  \"entityId\": \"{{task_id}}\",\n  \"content\": \"This looks great! @john can you review?\"\n}" }
          }
        },
        {
          "name": "Update Comment",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/comments/{{comment_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"content\": \"Updated comment text\"\n}" }
          }
        },
        { "name": "Delete Comment", "request": { "method": "DELETE", "url": "{{base_url}}/api/comments/{{comment_id}}" } }
      ]
    },
    {
      "name": "👨‍👩‍👧 Teams",
      "item": [
        { "name": "List Teams", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/teams?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Search Teams", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/teams/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Team", "request": { "method": "GET", "url": "{{base_url}}/api/teams/{{team_id}}" } },
        {
          "name": "Create Team",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/teams",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Design Team\",\n  \"description\": \"UI/UX designers\"\n}" }
          }
        },
        {
          "name": "Update Team",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/teams/{{team_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Product Design Team\"\n}" }
          }
        },
        { "name": "Delete Team", "request": { "method": "DELETE", "url": "{{base_url}}/api/teams/{{team_id}}" } },
        {
          "name": "Add Team Member",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/teams/{{team_id}}/members",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"userId\": \"{{user_id}}\"\n}" }
          }
        },
        { "name": "Remove Team Member", "request": { "method": "DELETE", "url": "{{base_url}}/api/teams/{{team_id}}/members/{{user_id}}" } },
        {
          "name": "Assign Team to Project",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/teams/{{team_id}}/assign",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"projectId\": \"{{project_id}}\"\n}" }
          }
        }
      ]
    },
    {
      "name": "🔔 Notifications",
      "item": [
        { "name": "List Notifications", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/notifications?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Get Unread Count", "request": { "method": "GET", "url": "{{base_url}}/api/notifications/unread-count" } },
        { "name": "Mark All as Read", "request": { "method": "PUT", "url": "{{base_url}}/api/notifications/read-all" } },
        { "name": "Mark as Read", "request": { "method": "PUT", "url": "{{base_url}}/api/notifications/{{notification_id}}/read" } }
      ]
    },
    {
      "name": "📊 Analytics",
      "item": [
        { "name": "Get Summary", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/analytics/summary?period=month", "query": [{"key":"period","value":"month"}] } } },
        { "name": "Get Teams Comparison", "request": { "method": "GET", "url": "{{base_url}}/api/analytics/teams" } },
        { "name": "Get KPIs", "request": { "method": "GET", "url": "{{base_url}}/api/analytics/kpis" } },
        { "name": "Get Resource Analytics", "request": { "method": "GET", "url": "{{base_url}}/api/analytics/resource/{{user_id}}" } }
      ]
    },
    {
      "name": "🔍 Search",
      "item": [
        { "name": "Global Search", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/search?q=invoice&types=projects,tasks,contacts", "query": [{"key":"q","value":"invoice"},{"key":"types","value":"projects,tasks,contacts"}] } } }
      ]
    },
    {
      "name": "🕐 Attendance",
      "item": [
        { "name": "Get My Today", "request": { "method": "GET", "url": "{{base_url}}/api/attendance/me/today" } },
        { "name": "Get My IP", "request": { "method": "GET", "url": "{{base_url}}/api/attendance/me/ip" } },
        {
          "name": "Punch",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/attendance/punch",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"type\": \"in\"\n}" }
          }
        },
        { "name": "Check In", "request": { "method": "POST", "url": "{{base_url}}/api/attendance/check-in" } },
        { "name": "Check Out", "request": { "method": "POST", "url": "{{base_url}}/api/attendance/check-out" } },
        { "name": "List Attendance", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/attendance?date=2026-07-01", "query": [{"key":"date","value":"2026-07-01"}] } } },
        { "name": "Get Attendance Summary", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/attendance/summary?month=2026-07", "query": [{"key":"month","value":"2026-07"}] } } },
        { "name": "Get Attendance by ID", "request": { "method": "GET", "url": "{{base_url}}/api/attendance/{{attendance_id}}" } },
        { "name": "Get Punches", "request": { "method": "GET", "url": "{{base_url}}/api/attendance/{{attendance_id}}/punches" } },
        {
          "name": "Upsert Attendance",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/attendance",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"userId\": \"{{user_id}}\",\n  \"date\": \"2026-07-01\",\n  \"checkIn\": \"09:00\",\n  \"checkOut\": \"18:00\"\n}" }
          }
        },
        {
          "name": "Update Attendance",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/attendance/{{attendance_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"checkOut\": \"18:30\"\n}" }
          }
        },
        { "name": "Delete Attendance", "request": { "method": "DELETE", "url": "{{base_url}}/api/attendance/{{attendance_id}}" } },
        { "name": "Delete Punch", "request": { "method": "DELETE", "url": "{{base_url}}/api/attendance/punches/{{punch_id}}" } }
      ]
    },
    {
      "name": "🗓 Holidays",
      "item": [
        { "name": "List Holidays", "request": { "method": "GET", "url": "{{base_url}}/api/holidays" } },
        { "name": "Get Upcoming Holidays", "request": { "method": "GET", "url": "{{base_url}}/api/holidays/upcoming" } },
        { "name": "Get Locations", "request": { "method": "GET", "url": "{{base_url}}/api/holidays/locations" } },
        { "name": "Search Holidays", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/holidays/search?q=", "query": [{"key":"q","value":""}] } } },
        { "name": "Get Holiday", "request": { "method": "GET", "url": "{{base_url}}/api/holidays/{{holiday_id}}" } },
        {
          "name": "Create Holiday Calendar",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/holidays",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"India National Holidays 2026\",\n  \"location\": \"India\",\n  \"year\": 2026\n}" }
          }
        },
        {
          "name": "Update Holiday",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/holidays/{{holiday_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Updated Calendar Name\"\n}" }
          }
        },
        { "name": "Delete Holiday", "request": { "method": "DELETE", "url": "{{base_url}}/api/holidays/{{holiday_id}}" } },
        {
          "name": "Add Holiday Item",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/holidays/{{holiday_id}}/items",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Independence Day\",\n  \"date\": \"2026-08-15\",\n  \"type\": \"national\"\n}" }
          }
        },
        {
          "name": "Update Holiday Item",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/holidays/{{holiday_id}}/items/{{item_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"Independence Day (observed)\"\n}" }
          }
        },
        { "name": "Delete Holiday Item", "request": { "method": "DELETE", "url": "{{base_url}}/api/holidays/{{holiday_id}}/items/{{item_id}}" } },
        {
          "name": "Assign Users to Holiday Item",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/holidays/{{holiday_id}}/items/{{item_id}}/assign",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"userIds\": [\"{{user_id}}\"]\n}" }
          }
        },
        { "name": "Unassign User from Holiday Item", "request": { "method": "DELETE", "url": "{{base_url}}/api/holidays/{{holiday_id}}/items/{{item_id}}/assign/{{user_id}}" } }
      ]
    },
    {
      "name": "🏖 Time Off",
      "item": [
        { "name": "Get Summary", "request": { "method": "GET", "url": "{{base_url}}/api/time-off/summary" } },
        { "name": "Get Team Time Off", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/time-off/team?month=2026-07", "query": [{"key":"month","value":"2026-07"}] } } },
        { "name": "List Time Off", "request": { "method": "GET", "url": { "raw": "{{base_url}}/api/time-off?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] } } },
        { "name": "Get Time Off", "request": { "method": "GET", "url": "{{base_url}}/api/time-off/{{time_off_id}}" } },
        {
          "name": "Create Time Off Request",
          "request": {
            "method": "POST", "url": "{{base_url}}/api/time-off",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"type\": \"annual\",\n  \"startDate\": \"2026-08-01\",\n  \"endDate\": \"2026-08-05\",\n  \"reason\": \"Family vacation\"\n}" }
          }
        },
        {
          "name": "Update Time Off",
          "request": {
            "method": "PUT", "url": "{{base_url}}/api/time-off/{{time_off_id}}",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"endDate\": \"2026-08-06\"\n}" }
          }
        },
        { "name": "Cancel Time Off", "request": { "method": "PATCH", "url": "{{base_url}}/api/time-off/{{time_off_id}}/cancel" } },
        { "name": "Approve Time Off", "request": { "method": "PATCH", "url": "{{base_url}}/api/time-off/{{time_off_id}}/approve" } },
        {
          "name": "Reject Time Off",
          "request": {
            "method": "PATCH", "url": "{{base_url}}/api/time-off/{{time_off_id}}/reject",
            "header": [{ "key": "Content-Type", "value": "application/json" }],
            "body": { "mode": "raw", "raw": "{\n  \"reason\": \"Team at full capacity\"\n}" }
          }
        },
        { "name": "Delete Time Off", "request": { "method": "DELETE", "url": "{{base_url}}/api/time-off/{{time_off_id}}" } }
      ]
    },
    {
      "name": "🔌 External API — Biometric",
      "description": "Authenticate with x-api-key header (scope: attendance). Create API keys in Autovella → Settings → API Keys.",
      "item": [
        {
          "name": "Punch (in / out)",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/biometric/punch",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"employeeId\": \"EMP001\",\n  \"type\": \"in\",\n  \"timestamp\": \"2026-07-01T09:00:00Z\"\n}" }
          }
        },
        {
          "name": "Check In",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/biometric/check-in",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"employeeId\": \"EMP001\"\n}" }
          }
        },
        {
          "name": "Check Out",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/biometric/check-out",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"employeeId\": \"EMP001\"\n}" }
          }
        },
        {
          "name": "Get Employee Status",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": { "raw": "{{base_url}}/api/external/biometric/status?employeeId=EMP001", "query": [{"key":"employeeId","value":"EMP001"}] },
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Bulk Punch",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/biometric/bulk-punch",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"punches\": [\n    { \"employeeId\": \"EMP001\", \"type\": \"in\", \"timestamp\": \"2026-07-01T09:00:00Z\" },\n    { \"employeeId\": \"EMP002\", \"type\": \"in\", \"timestamp\": \"2026-07-01T09:05:00Z\" }\n  ]\n}" }
          }
        }
      ]
    },
    {
      "name": "🔌 External API — Timesheets",
      "description": "Authenticate with x-api-key header (scope: timesheets).",
      "item": [
        {
          "name": "Create Timesheet",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/timesheets",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"projectId\": \"{{project_id}}\",\n  \"hours\": 4,\n  \"date\": \"2026-07-01\",\n  \"description\": \"Development work\"\n}" }
          }
        },
        {
          "name": "Bulk Create Timesheets",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/timesheets/bulk",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"entries\": [\n    { \"projectId\": \"{{project_id}}\", \"hours\": 4, \"date\": \"2026-07-01\" },\n    { \"projectId\": \"{{project_id}}\", \"hours\": 3, \"date\": \"2026-07-02\" }\n  ]\n}" }
          }
        },
        {
          "name": "List Timesheets",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": { "raw": "{{base_url}}/api/external/timesheets?page=1&limit=20", "query": [{"key":"page","value":"1"},{"key":"limit","value":"20"}] },
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "List Projects",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": "{{base_url}}/api/external/timesheets/projects",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Get Timesheet",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": "{{base_url}}/api/external/timesheets/{{timesheet_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Update Timesheet",
          "request": {
            "auth": { "type": "noauth" },
            "method": "PATCH", "url": "{{base_url}}/api/external/timesheets/{{timesheet_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"hours\": 5\n}" }
          }
        },
        {
          "name": "Delete Timesheet",
          "request": {
            "auth": { "type": "noauth" },
            "method": "DELETE", "url": "{{base_url}}/api/external/timesheets/{{timesheet_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        }
      ]
    },
    {
      "name": "🔌 External API — Projects & Tasks",
      "description": "Authenticate with x-api-key header (scope: projects).",
      "item": [
        {
          "name": "Create Project",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/projects",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"name\": \"New Project\",\n  \"status\": \"active\"\n}" }
          }
        },
        {
          "name": "List Projects",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": { "raw": "{{base_url}}/api/external/projects?page=1", "query": [{"key":"page","value":"1"}] },
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Get Project",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": "{{base_url}}/api/external/projects/{{project_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Update Project",
          "request": {
            "auth": { "type": "noauth" },
            "method": "PATCH", "url": "{{base_url}}/api/external/projects/{{project_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"status\": \"completed\"\n}" }
          }
        },
        {
          "name": "Delete Project",
          "request": {
            "auth": { "type": "noauth" },
            "method": "DELETE", "url": "{{base_url}}/api/external/projects/{{project_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Create Task in Project",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/projects/{{project_id}}/tasks",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"New task\",\n  \"status\": \"todo\"\n}" }
          }
        },
        {
          "name": "List Project Tasks",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": "{{base_url}}/api/external/projects/{{project_id}}/tasks",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Create Task (standalone)",
          "request": {
            "auth": { "type": "noauth" },
            "method": "POST", "url": "{{base_url}}/api/external/tasks",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"title\": \"New task\",\n  \"projectId\": \"{{project_id}}\"\n}" }
          }
        },
        {
          "name": "List Tasks",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": { "raw": "{{base_url}}/api/external/tasks?page=1", "query": [{"key":"page","value":"1"}] },
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Get Task",
          "request": {
            "auth": { "type": "noauth" },
            "method": "GET", "url": "{{base_url}}/api/external/tasks/{{task_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        },
        {
          "name": "Update Task",
          "request": {
            "auth": { "type": "noauth" },
            "method": "PATCH", "url": "{{base_url}}/api/external/tasks/{{task_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"},{"key":"Content-Type","value":"application/json"}],
            "body": { "mode": "raw", "raw": "{\n  \"status\": \"done\"\n}" }
          }
        },
        {
          "name": "Delete Task",
          "request": {
            "auth": { "type": "noauth" },
            "method": "DELETE", "url": "{{base_url}}/api/external/tasks/{{task_id}}",
            "header": [{"key":"x-api-key","value":"{{api_key}}"}]
          }
        }
      ]
    },
    {
      "name": "❤️ Health",
      "item": [
        { "name": "Health Check", "request": { "auth": { "type": "noauth" }, "method": "GET", "url": "{{base_url}}/api/health" } }
      ]
    }
  ]
}
