{
  "schemaVersion": "1.0",
  "item": {
    "slug": "harvest-time-reporting-api",
    "name": "Harvest Time Reporting",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/zachgodsell93/harvest-time-reporting-api",
    "canonicalUrl": "https://clawhub.ai/zachgodsell93/harvest-time-reporting-api",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/harvest-time-reporting-api",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=harvest-time-reporting-api",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "skill.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/harvest-time-reporting-api"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/harvest-time-reporting-api",
    "agentPageUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Description",
        "body": "Integration with Harvest time tracking software (API v2)."
      },
      {
        "title": "Environment Variables",
        "body": "HARVEST_ACCESS_TOKEN - Get from https://id.getharvest.com/developers\nHARVEST_ACCOUNT_ID - Your Harvest account ID"
      },
      {
        "title": "Authentication",
        "body": "All requests require these headers:\n\nAuthorization: Bearer $HARVEST_ACCESS_TOKEN\nHarvest-Account-Id: $HARVEST_ACCOUNT_ID\nUser-Agent: YourApp (your@email.com)"
      },
      {
        "title": "API Reference",
        "body": "Base URL: https://api.harvestapp.com/v2"
      },
      {
        "title": "Time Entries",
        "body": "List Time Entries\n\ncurl \"https://api.harvestapp.com/v2/time_entries\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: user_id, client_id, project_id, task_id, external_reference_id, is_billed, is_running, updated_since, from, to, page, per_page\n\nCreate Time Entry (duration)\n\ncurl \"https://api.harvestapp.com/v2/time_entries\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"project_id\":12345,\"task_id\":67890,\"spent_date\":\"2024-01-15\",\"hours\":2.5}'\n\nCreate Time Entry (start/end time)\n\ncurl \"https://api.harvestapp.com/v2/time_entries\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"project_id\":12345,\"task_id\":67890,\"spent_date\":\"2024-01-15\",\"started_time\":\"9:00am\",\"ended_time\":\"11:30am\"}'\n\nGet Time Entry\n\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nUpdate Time Entry\n\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"hours\":3.0,\"notes\":\"Updated notes\"}'\n\nDelete Time Entry\n\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nRestart a Stopped Timer\n\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}/restart\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X PATCH\n\nStop a Running Timer\n\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}/stop\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X PATCH"
      },
      {
        "title": "Projects",
        "body": "List Projects\n\ncurl \"https://api.harvestapp.com/v2/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: is_active, client_id, updated_since, page, per_page\n\nGet Project\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Project\n\ncurl \"https://api.harvestapp.com/v2/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"name\":\"New Project\",\"is_billable\":true,\"bill_by\":\"Project\",\"budget_by\":\"project\"}'\n\nUpdate Project\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"name\":\"Updated Project Name\"}'\n\nDelete Project\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "Project User Assignments",
        "body": "List User Assignments for Project\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/user_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate User Assignment\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/user_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"user_id\":12345}'"
      },
      {
        "title": "Project Task Assignments",
        "body": "List Task Assignments for Project\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/task_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Task Assignment\n\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/task_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"task_id\":12345}'"
      },
      {
        "title": "Tasks",
        "body": "List Tasks\n\ncurl \"https://api.harvestapp.com/v2/tasks\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Task\n\ncurl \"https://api.harvestapp.com/v2/tasks/{TASK_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Task\n\ncurl \"https://api.harvestapp.com/v2/tasks\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"New Task\",\"default_hourly_rate\":100.0}'\n\nUpdate Task\n\ncurl \"https://api.harvestapp.com/v2/tasks/{TASK_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"name\":\"Updated Task Name\"}'\n\nDelete Task\n\ncurl \"https://api.harvestapp.com/v2/tasks/{TASK_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "Clients",
        "body": "List Clients\n\ncurl \"https://api.harvestapp.com/v2/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Client\n\ncurl \"https://api.harvestapp.com/v2/clients/{CLIENT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Client\n\ncurl \"https://api.harvestapp.com/v2/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"New Client\",\"currency\":\"USD\"}'\n\nUpdate Client\n\ncurl \"https://api.harvestapp.com/v2/clients/{CLIENT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"name\":\"Updated Client Name\"}'\n\nDelete Client\n\ncurl \"https://api.harvestapp.com/v2/clients/{CLIENT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "Contacts",
        "body": "List Contacts\n\ncurl \"https://api.harvestapp.com/v2/contacts\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: client_id, updated_since, page, per_page\n\nGet Contact\n\ncurl \"https://api.harvestapp.com/v2/contacts/{CONTACT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Contact\n\ncurl \"https://api.harvestapp.com/v2/contacts\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john@example.com\"}'\n\nUpdate Contact\n\ncurl \"https://api.harvestapp.com/v2/contacts/{CONTACT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"email\":\"newemail@example.com\"}'\n\nDelete Contact\n\ncurl \"https://api.harvestapp.com/v2/contacts/{CONTACT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "Users",
        "body": "List Users\n\ncurl \"https://api.harvestapp.com/v2/users\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Current User\n\ncurl \"https://api.harvestapp.com/v2/users/me\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nGet User\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate User\n\ncurl \"https://api.harvestapp.com/v2/users\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"email\":\"jane@example.com\"}'\n\nUpdate User\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"first_name\":\"Janet\"}'\n\nDelete User\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "User Project Assignments",
        "body": "List Project Assignments for Current User\n\ncurl \"https://api.harvestapp.com/v2/users/me/project_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nList Project Assignments for User\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/project_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\""
      },
      {
        "title": "Billable Rates",
        "body": "List Billable Rates for User\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/billable_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Billable Rate\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/billable_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"amount\":150.0,\"start_date\":\"2024-01-01\"}'"
      },
      {
        "title": "Cost Rates",
        "body": "List Cost Rates for User\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/cost_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Cost Rate\n\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/cost_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"amount\":75.0,\"start_date\":\"2024-01-01\"}'"
      },
      {
        "title": "Invoices",
        "body": "List Invoices\n\ncurl \"https://api.harvestapp.com/v2/invoices\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: client_id, project_id, updated_since, from, to, state, page, per_page\n\nGet Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"subject\":\"Invoice for January\",\"due_date\":\"2024-02-15\",\"line_items\":[{\"kind\":\"Service\",\"description\":\"Consulting\",\"unit_price\":150,\"quantity\":10}]}'\n\nUpdate Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"subject\":\"Updated Invoice Subject\"}'\n\nDelete Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "Invoice Line Items",
        "body": "Create Invoice Line Item\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/line_items\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"line_items\":[{\"kind\":\"Service\",\"description\":\"Additional work\",\"unit_price\":100,\"quantity\":5}]}'"
      },
      {
        "title": "Invoice Payments",
        "body": "List Payments for Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/payments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Payment\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/payments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"amount\":500.0,\"paid_at\":\"2024-01-20T00:00:00Z\"}'"
      },
      {
        "title": "Invoice Messages",
        "body": "List Messages for Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/messages\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nSend Invoice\n\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/messages\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"recipients\":[{\"email\":\"client@example.com\"}],\"subject\":\"Invoice #123\",\"body\":\"Please find attached invoice.\"}'"
      },
      {
        "title": "Invoice Item Categories",
        "body": "List Invoice Item Categories\n\ncurl \"https://api.harvestapp.com/v2/invoice_item_categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\""
      },
      {
        "title": "Estimates",
        "body": "List Estimates\n\ncurl \"https://api.harvestapp.com/v2/estimates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: client_id, updated_since, from, to, state, page, per_page\n\nGet Estimate\n\ncurl \"https://api.harvestapp.com/v2/estimates/{ESTIMATE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Estimate\n\ncurl \"https://api.harvestapp.com/v2/estimates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"subject\":\"Project Estimate\",\"line_items\":[{\"kind\":\"Service\",\"description\":\"Development\",\"unit_price\":150,\"quantity\":40}]}'"
      },
      {
        "title": "Expenses",
        "body": "List Expenses\n\ncurl \"https://api.harvestapp.com/v2/expenses\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: user_id, client_id, project_id, is_billed, updated_since, from, to, page, per_page\n\nGet Expense\n\ncurl \"https://api.harvestapp.com/v2/expenses/{EXPENSE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Expense\n\ncurl \"https://api.harvestapp.com/v2/expenses\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"project_id\":12345,\"expense_category_id\":67890,\"spent_date\":\"2024-01-15\",\"total_cost\":50.00,\"notes\":\"Office supplies\"}'\n\nUpdate Expense\n\ncurl \"https://api.harvestapp.com/v2/expenses/{EXPENSE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"notes\":\"Updated expense notes\"}'\n\nDelete Expense\n\ncurl \"https://api.harvestapp.com/v2/expenses/{EXPENSE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE"
      },
      {
        "title": "Expense Categories",
        "body": "List Expense Categories\n\ncurl \"https://api.harvestapp.com/v2/expense_categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Expense Category\n\ncurl \"https://api.harvestapp.com/v2/expense_categories/{EXPENSE_CATEGORY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Expense Category\n\ncurl \"https://api.harvestapp.com/v2/expense_categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"Travel\"}'"
      },
      {
        "title": "Reports",
        "body": "Time Reports - Clients\n\ncurl \"https://api.harvestapp.com/v2/reports/time/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nTime Reports - Projects\n\ncurl \"https://api.harvestapp.com/v2/reports/time/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nTime Reports - Tasks\n\ncurl \"https://api.harvestapp.com/v2/reports/time/tasks\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nTime Reports - Team\n\ncurl \"https://api.harvestapp.com/v2/reports/time/team\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nUninvoiced Report\n\ncurl \"https://api.harvestapp.com/v2/reports/uninvoiced\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Clients\n\ncurl \"https://api.harvestapp.com/v2/reports/expenses/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Projects\n\ncurl \"https://api.harvestapp.com/v2/reports/expenses/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Categories\n\ncurl \"https://api.harvestapp.com/v2/reports/expenses/categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Team\n\ncurl \"https://api.harvestapp.com/v2/reports/expenses/team\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nProject Budget Report\n\ncurl \"https://api.harvestapp.com/v2/reports/project_budget\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\""
      },
      {
        "title": "Company",
        "body": "Get Company\n\ncurl \"https://api.harvestapp.com/v2/company\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nUpdate Company\n\ncurl \"https://api.harvestapp.com/v2/company\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"wants_timestamp_timers\":true}'"
      },
      {
        "title": "Roles",
        "body": "List Roles\n\ncurl \"https://api.harvestapp.com/v2/roles\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nGet Role\n\ncurl \"https://api.harvestapp.com/v2/roles/{ROLE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Role\n\ncurl \"https://api.harvestapp.com/v2/roles\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"Developer\",\"user_ids\":[12345,67890]}'"
      },
      {
        "title": "Pagination",
        "body": "All list endpoints support pagination with page and per_page parameters. Responses include:\n\npage: Current page number\ntotal_pages: Total number of pages\ntotal_entries: Total number of records\nnext_page: Next page number (null if last page)\nprevious_page: Previous page number (null if first page)"
      },
      {
        "title": "Rate Limiting",
        "body": "Harvest API has a rate limit of 100 requests per 15 seconds. Response headers include:\n\nX-Rate-Limit-Limit: Request limit\nX-Rate-Limit-Remaining: Remaining requests\nX-Rate-Limit-Reset: Seconds until limit resets"
      },
      {
        "title": "v1.0.0",
        "body": "Initial release with full API v2 coverage\nTime entries, projects, tasks, clients, contacts\nUsers, billable rates, cost rates\nInvoices, estimates, payments, messages\nExpenses and expense categories\nReports (time, expense, project budget)\nCompany and roles management"
      }
    ],
    "body": "Harvest API\nDescription\n\nIntegration with Harvest time tracking software (API v2).\n\nSetup\nEnvironment Variables\nHARVEST_ACCESS_TOKEN - Get from https://id.getharvest.com/developers\nHARVEST_ACCOUNT_ID - Your Harvest account ID\nAuthentication\n\nAll requests require these headers:\n\nAuthorization: Bearer $HARVEST_ACCESS_TOKEN\nHarvest-Account-Id: $HARVEST_ACCOUNT_ID\nUser-Agent: YourApp (your@email.com)\n\nAPI Reference\n\nBase URL: https://api.harvestapp.com/v2\n\nTime Entries\nList Time Entries\ncurl \"https://api.harvestapp.com/v2/time_entries\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: user_id, client_id, project_id, task_id, external_reference_id, is_billed, is_running, updated_since, from, to, page, per_page\n\nCreate Time Entry (duration)\ncurl \"https://api.harvestapp.com/v2/time_entries\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"project_id\":12345,\"task_id\":67890,\"spent_date\":\"2024-01-15\",\"hours\":2.5}'\n\nCreate Time Entry (start/end time)\ncurl \"https://api.harvestapp.com/v2/time_entries\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"project_id\":12345,\"task_id\":67890,\"spent_date\":\"2024-01-15\",\"started_time\":\"9:00am\",\"ended_time\":\"11:30am\"}'\n\nGet Time Entry\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nUpdate Time Entry\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"hours\":3.0,\"notes\":\"Updated notes\"}'\n\nDelete Time Entry\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nRestart a Stopped Timer\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}/restart\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X PATCH\n\nStop a Running Timer\ncurl \"https://api.harvestapp.com/v2/time_entries/{TIME_ENTRY_ID}/stop\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X PATCH\n\nProjects\nList Projects\ncurl \"https://api.harvestapp.com/v2/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: is_active, client_id, updated_since, page, per_page\n\nGet Project\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Project\ncurl \"https://api.harvestapp.com/v2/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"name\":\"New Project\",\"is_billable\":true,\"bill_by\":\"Project\",\"budget_by\":\"project\"}'\n\nUpdate Project\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"name\":\"Updated Project Name\"}'\n\nDelete Project\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nProject User Assignments\nList User Assignments for Project\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/user_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate User Assignment\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/user_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"user_id\":12345}'\n\nProject Task Assignments\nList Task Assignments for Project\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/task_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Task Assignment\ncurl \"https://api.harvestapp.com/v2/projects/{PROJECT_ID}/task_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"task_id\":12345}'\n\nTasks\nList Tasks\ncurl \"https://api.harvestapp.com/v2/tasks\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Task\ncurl \"https://api.harvestapp.com/v2/tasks/{TASK_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Task\ncurl \"https://api.harvestapp.com/v2/tasks\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"New Task\",\"default_hourly_rate\":100.0}'\n\nUpdate Task\ncurl \"https://api.harvestapp.com/v2/tasks/{TASK_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"name\":\"Updated Task Name\"}'\n\nDelete Task\ncurl \"https://api.harvestapp.com/v2/tasks/{TASK_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nClients\nList Clients\ncurl \"https://api.harvestapp.com/v2/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Client\ncurl \"https://api.harvestapp.com/v2/clients/{CLIENT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Client\ncurl \"https://api.harvestapp.com/v2/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"New Client\",\"currency\":\"USD\"}'\n\nUpdate Client\ncurl \"https://api.harvestapp.com/v2/clients/{CLIENT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"name\":\"Updated Client Name\"}'\n\nDelete Client\ncurl \"https://api.harvestapp.com/v2/clients/{CLIENT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nContacts\nList Contacts\ncurl \"https://api.harvestapp.com/v2/contacts\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: client_id, updated_since, page, per_page\n\nGet Contact\ncurl \"https://api.harvestapp.com/v2/contacts/{CONTACT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Contact\ncurl \"https://api.harvestapp.com/v2/contacts\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"first_name\":\"John\",\"last_name\":\"Doe\",\"email\":\"john@example.com\"}'\n\nUpdate Contact\ncurl \"https://api.harvestapp.com/v2/contacts/{CONTACT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"email\":\"newemail@example.com\"}'\n\nDelete Contact\ncurl \"https://api.harvestapp.com/v2/contacts/{CONTACT_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nUsers\nList Users\ncurl \"https://api.harvestapp.com/v2/users\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Current User\ncurl \"https://api.harvestapp.com/v2/users/me\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nGet User\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate User\ncurl \"https://api.harvestapp.com/v2/users\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"first_name\":\"Jane\",\"last_name\":\"Doe\",\"email\":\"jane@example.com\"}'\n\nUpdate User\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"first_name\":\"Janet\"}'\n\nDelete User\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nUser Project Assignments\nList Project Assignments for Current User\ncurl \"https://api.harvestapp.com/v2/users/me/project_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nList Project Assignments for User\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/project_assignments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nBillable Rates\nList Billable Rates for User\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/billable_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Billable Rate\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/billable_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"amount\":150.0,\"start_date\":\"2024-01-01\"}'\n\nCost Rates\nList Cost Rates for User\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/cost_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Cost Rate\ncurl \"https://api.harvestapp.com/v2/users/{USER_ID}/cost_rates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"amount\":75.0,\"start_date\":\"2024-01-01\"}'\n\nInvoices\nList Invoices\ncurl \"https://api.harvestapp.com/v2/invoices\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: client_id, project_id, updated_since, from, to, state, page, per_page\n\nGet Invoice\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Invoice\ncurl \"https://api.harvestapp.com/v2/invoices\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"subject\":\"Invoice for January\",\"due_date\":\"2024-02-15\",\"line_items\":[{\"kind\":\"Service\",\"description\":\"Consulting\",\"unit_price\":150,\"quantity\":10}]}'\n\nUpdate Invoice\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"subject\":\"Updated Invoice Subject\"}'\n\nDelete Invoice\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nInvoice Line Items\nCreate Invoice Line Item\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/line_items\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"line_items\":[{\"kind\":\"Service\",\"description\":\"Additional work\",\"unit_price\":100,\"quantity\":5}]}'\n\nInvoice Payments\nList Payments for Invoice\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/payments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Payment\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/payments\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"amount\":500.0,\"paid_at\":\"2024-01-20T00:00:00Z\"}'\n\nInvoice Messages\nList Messages for Invoice\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/messages\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nSend Invoice\ncurl \"https://api.harvestapp.com/v2/invoices/{INVOICE_ID}/messages\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"recipients\":[{\"email\":\"client@example.com\"}],\"subject\":\"Invoice #123\",\"body\":\"Please find attached invoice.\"}'\n\nInvoice Item Categories\nList Invoice Item Categories\ncurl \"https://api.harvestapp.com/v2/invoice_item_categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nEstimates\nList Estimates\ncurl \"https://api.harvestapp.com/v2/estimates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: client_id, updated_since, from, to, state, page, per_page\n\nGet Estimate\ncurl \"https://api.harvestapp.com/v2/estimates/{ESTIMATE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Estimate\ncurl \"https://api.harvestapp.com/v2/estimates\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"client_id\":12345,\"subject\":\"Project Estimate\",\"line_items\":[{\"kind\":\"Service\",\"description\":\"Development\",\"unit_price\":150,\"quantity\":40}]}'\n\nExpenses\nList Expenses\ncurl \"https://api.harvestapp.com/v2/expenses\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: user_id, client_id, project_id, is_billed, updated_since, from, to, page, per_page\n\nGet Expense\ncurl \"https://api.harvestapp.com/v2/expenses/{EXPENSE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Expense\ncurl \"https://api.harvestapp.com/v2/expenses\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"project_id\":12345,\"expense_category_id\":67890,\"spent_date\":\"2024-01-15\",\"total_cost\":50.00,\"notes\":\"Office supplies\"}'\n\nUpdate Expense\ncurl \"https://api.harvestapp.com/v2/expenses/{EXPENSE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"notes\":\"Updated expense notes\"}'\n\nDelete Expense\ncurl \"https://api.harvestapp.com/v2/expenses/{EXPENSE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -X DELETE\n\nExpense Categories\nList Expense Categories\ncurl \"https://api.harvestapp.com/v2/expense_categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\n\nQuery parameters: is_active, updated_since, page, per_page\n\nGet Expense Category\ncurl \"https://api.harvestapp.com/v2/expense_categories/{EXPENSE_CATEGORY_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Expense Category\ncurl \"https://api.harvestapp.com/v2/expense_categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"Travel\"}'\n\nReports\nTime Reports - Clients\ncurl \"https://api.harvestapp.com/v2/reports/time/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nTime Reports - Projects\ncurl \"https://api.harvestapp.com/v2/reports/time/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nTime Reports - Tasks\ncurl \"https://api.harvestapp.com/v2/reports/time/tasks\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nTime Reports - Team\ncurl \"https://api.harvestapp.com/v2/reports/time/team\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nUninvoiced Report\ncurl \"https://api.harvestapp.com/v2/reports/uninvoiced\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Clients\ncurl \"https://api.harvestapp.com/v2/reports/expenses/clients\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Projects\ncurl \"https://api.harvestapp.com/v2/reports/expenses/projects\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Categories\ncurl \"https://api.harvestapp.com/v2/reports/expenses/categories\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nExpense Reports - Team\ncurl \"https://api.harvestapp.com/v2/reports/expenses/team\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -G \\\n  -d \"from=2024-01-01\" \\\n  -d \"to=2024-01-31\"\n\nProject Budget Report\ncurl \"https://api.harvestapp.com/v2/reports/project_budget\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCompany\nGet Company\ncurl \"https://api.harvestapp.com/v2/company\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nUpdate Company\ncurl \"https://api.harvestapp.com/v2/company\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X PATCH \\\n  -d '{\"wants_timestamp_timers\":true}'\n\nRoles\nList Roles\ncurl \"https://api.harvestapp.com/v2/roles\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nGet Role\ncurl \"https://api.harvestapp.com/v2/roles/{ROLE_ID}\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\"\n\nCreate Role\ncurl \"https://api.harvestapp.com/v2/roles\" \\\n  -H \"Authorization: Bearer $HARVEST_ACCESS_TOKEN\" \\\n  -H \"Harvest-Account-Id: $HARVEST_ACCOUNT_ID\" \\\n  -H \"User-Agent: MyApp (me@example.com)\" \\\n  -H \"Content-Type: application/json\" \\\n  -X POST \\\n  -d '{\"name\":\"Developer\",\"user_ids\":[12345,67890]}'\n\nPagination\n\nAll list endpoints support pagination with page and per_page parameters. Responses include:\n\npage: Current page number\ntotal_pages: Total number of pages\ntotal_entries: Total number of records\nnext_page: Next page number (null if last page)\nprevious_page: Previous page number (null if first page)\nRate Limiting\n\nHarvest API has a rate limit of 100 requests per 15 seconds. Response headers include:\n\nX-Rate-Limit-Limit: Request limit\nX-Rate-Limit-Remaining: Remaining requests\nX-Rate-Limit-Reset: Seconds until limit resets\nChangelog\nv1.0.0\nInitial release with full API v2 coverage\nTime entries, projects, tasks, clients, contacts\nUsers, billable rates, cost rates\nInvoices, estimates, payments, messages\nExpenses and expense categories\nReports (time, expense, project budget)\nCompany and roles management"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/zachgodsell93/harvest-time-reporting-api",
    "publisherUrl": "https://clawhub.ai/zachgodsell93/harvest-time-reporting-api",
    "owner": "zachgodsell93",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api",
    "downloadUrl": "https://openagent3.xyz/downloads/harvest-time-reporting-api",
    "agentUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api/agent",
    "manifestUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/harvest-time-reporting-api/agent.md"
  }
}