{"_rev":"9-e0f1f114b910c1a357a0b08f490508c7","time":{"created":"2026-05-15T17:28:45.677Z","modified":"2026-05-15T17:28:46.166Z","0.1.0":"2026-03-21T03:18:26.561Z","0.1.1":"2026-03-21T03:36:58.929Z","0.1.2":"2026-03-21T04:14:34.726Z","0.1.3":"2026-05-11T14:56:31.547Z","0.1.4":"2026-05-11T15:03:37.583Z","0.1.5":"2026-05-15T17:28:45.947Z"},"_id":"@avantguardllc/n8n-nodes-msptools","name":"@avantguardllc/n8n-nodes-msptools","dist-tags":{"latest":"0.1.5"},"versions":{"0.1.5":{"name":"@avantguardllc/n8n-nodes-msptools","version":"0.1.5","description":"AvantGuard MSPTools — device inventory, company management, billing, cost analysis, and cross-system integration intelligence for MSPs.","keywords":["n8n-community-node-package","msptools","avantguardllc"],"license":"MIT","homepage":"","author":{"name":"AvantGuard LLC"},"repository":{"type":"git","url":""},"scripts":{"build":"tsc","dev":"tsc --watch","prepublishOnly":"npm run build"},"n8n":{"n8nNodesApiVersion":1,"credentials":["dist/credentials/MSPToolsApi.credentials.js"],"nodes":["dist/nodes/MSPTools/MSPTools.node.js"]},"devDependencies":{"@types/node":"^18.0.0","n8n-workflow":"*","typescript":"~5.7"},"peerDependencies":{"n8n-workflow":"*"},"_id":"@avantguardllc/n8n-nodes-msptools@0.1.5","gitHead":"df3a57eece2596836910fe2acdb273edb22389a3","_nodeVersion":"20.20.2","_npmVersion":"10.8.2","dist":{"integrity":"sha512-5TLM1CcIm9qZSlr5erCdpna6rFygAK/Tg3NeM9muApNGkakt/0U+/nzqLDg2PYdD3hmVNrtUv9L0LtNT9bqW2Q==","shasum":"ae082967d222edc222c3607f52a8be24c11ad76d","tarball":"https://registry.npmjs.org/@avantguardllc/n8n-nodes-msptools/-/n8n-nodes-msptools-0.1.5.tgz","fileCount":14,"unpackedSize":1664224,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDE3mW2Xx19YjH7HwGfjkF0pK2ocIUXc7knBF719MyRBwIgKRwsSBZ1YqCDASajb/oT1XIAz/xTuUclBOOIe8Cs0Ew="}]},"_npmUser":{"name":"avantguardllc","email":"appadmin@avantguard.it"},"directories":{},"maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/n8n-nodes-msptools_0.1.5_1778866125790_0.49626052556814004"},"_hasShrinkwrap":false}},"maintainers":[{"name":"avantguardllc","email":"appadmin@avantguard.it"}],"description":"AvantGuard MSPTools — device inventory, company management, billing, cost analysis, and cross-system integration intelligence for MSPs.","keywords":["n8n-community-node-package","msptools","avantguardllc"],"repository":{"type":"git","url":""},"author":{"name":"AvantGuard LLC"},"license":"MIT","readme":"<p align=\"center\">\n  <a href=\"https://n8n.io\"><img src=\"https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png\" alt=\"n8n\" height=\"40\" /></a>\n  &nbsp;&nbsp;&nbsp;&nbsp;\n  <a href=\"https://avantguard.it\"><img src=\"https://i0.wp.com/avantguard.it/wp-content/uploads/2024/02/NewLogoSmalNoPicl.png?fit=398%2C71\" alt=\"AvantGuard\" height=\"40\" /></a>\n</p>\n\n# MSPTools n8n Node\n\n![n8n community node](https://img.shields.io/badge/n8n-community%20node-ff6d5a) ![npm](https://img.shields.io/npm/v/%40avantguardllc%2Fn8n-nodes-msptools)\n\nAvantGuard MSPTools — device inventory, company management, billing, cost analysis, and cross-system integration intelligence for MSPs.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Authentication](#authentication)\n- [Resources & Operations](#resources--operations)\n- [Compatibility](#compatibility)\n- [License](#license)\n\n## Installation\n\nFollow the [n8n community node installation guide](https://docs.n8n.io/integrations/community-nodes/installation/).\n\nOr install directly via npm:\n\n```bash\nnpm install @avantguardllc/n8n-nodes-msptools\n```\n\n## Authentication\n\nThis node authenticates using an **API Key**.\n\n| Setting | Value |\n|---------|-------|\n| Type | API Key |\n| Base URL | `https://api.cloudhosted.us` (editable in credentials) |\n\n> **Tip:** The Base URL can be changed in the credential settings if your instance uses a different host.\n\n## Resources & Operations\n\n**Base URL:** `https://api.cloudhosted.us`\n\n### Companies\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/companies` | List all companies |\n| 🟢 **`POST`** | `/api/v1/companies` | Create a new company |\n| 🔵 **`GET`** | `/api/v1/companies/{id}` | Get a single company |\n| 🟡 **`PUT`** | `/api/v1/companies/{id}` | Update a company |\n| 🟣 **`PATCH`** | `/api/v1/companies/{id}` | Partial update a company |\n| 🔵 **`GET`** | `/api/v1/companies/by-link/{integrationSlug}/{externalId}` | Get company by integration link external ID |\n| 🔵 **`GET`** | `/api/v1/companies/by-link/{integrationSlug}` | Search companies by integration link |\n| 🟢 **`POST`** | `/api/v1/companies/{id}/favorite` | Pin company to favorites |\n| 🔵 **`GET`** | `/api/v1/companies/favorites` | List all favorite companies |\n| 🔵 **`GET`** | `/api/v1/companies/{id}/tags` | Get all tags for a company |\n| 🟢 **`POST`** | `/api/v1/companies/{id}/tags` | Add tags to a company |\n| 🟡 **`PUT`** | `/api/v1/companies/{id}/links/{linkId}/status` | Update integration link status |\n| 🟢 **`POST`** | `/api/v1/companies/bulk/update` | Bulk update companies |\n| 🟢 **`POST`** | `/api/v1/companies/bulk/favorite` | Bulk set favorite status |\n| 🟢 **`POST`** | `/api/v1/companies/bulk/service-tier` | Bulk set service tier |\n| 🟢 **`POST`** | `/api/v1/companies/bulk/merge` | Bulk merge companies |\n| 🟢 **`POST`** | `/api/v1/companies/bulk/merge-candidates` | Get merge candidates |\n\n### Sites\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/companies/{companyId}/sites` | List all sites for a company |\n| 🟢 **`POST`** | `/api/v1/companies/{companyId}/sites` | Create a new site |\n| 🔵 **`GET`** | `/api/v1/companies/{companyId}/sites/{siteId}` | Get a single site |\n| 🟡 **`PUT`** | `/api/v1/companies/{companyId}/sites/{siteId}` | Update a site |\n\n### Subscriptions\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/subscriptions` | List subscriptions by company or product |\n| 🟢 **`POST`** | `/api/v1/subscriptions` | Create a new subscription |\n| 🔵 **`GET`** | `/api/v1/subscriptions/{id}` | Get a single subscription |\n| 🟡 **`PUT`** | `/api/v1/subscriptions/{id}` | Update a subscription |\n| 🔵 **`GET`** | `/api/v1/subscriptions/{id}/history` | Get quantity change history for a subscription |\n\n### Integrations\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/integrations` | List all integrations |\n| 🟢 **`POST`** | `/api/v1/integrations` | Create a new integration |\n| 🔵 **`GET`** | `/api/v1/integrations/{slug}` | Get a single integration |\n| 🟡 **`PUT`** | `/api/v1/integrations/{slug}` | Update an integration |\n| 🟢 **`POST`** | `/api/v1/integrations/{slug}/set-primary` | Set integration as primary |\n| 🔵 **`GET`** | `/api/v1/integrations/{slug}/export` | Export integration configuration |\n| 🟢 **`POST`** | `/api/v1/integrations/import` | Import integration from exported config |\n| 🟢 **`POST`** | `/api/v1/integrations/{slug}/clone` | Clone an integration |\n| 🟢 **`POST`** | `/api/v1/integrations/test-webhook` | Test a webhook URL |\n| 🟢 **`POST`** | `/api/v1/integrations/{slug}/test-webhook` | Test webhook for a specific integration |\n| 🟡 **`PUT`** | `/api/v1/integrations/{slug}/icon` | Update integration SVG icon |\n| 🔴 **`DELETE`** | `/api/v1/integrations/{slug}/icon` | Remove integration SVG icon |\n\n### Links\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/companies/{companyId}/links` | Get all links for a company |\n| 🟢 **`POST`** | `/api/v1/companies/{companyId}/links` | Create a link to an integration |\n| 🟡 **`PUT`** | `/api/v1/links/{linkId}` | Update a link |\n| 🔵 **`GET`** | `/api/v1/links/{linkId}/history` | Get ID change history |\n| 🔵 **`GET`** | `/api/v1/links` | Get all links across all companies |\n\n### Assets\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/companies/{companyId}/assets` | List all assets for a company |\n| 🔵 **`GET`** | `/api/v1/companies/{companyId}/assets/{integrationSlug}` | List assets for a company within a specific integration |\n| 🔵 **`GET`** | `/api/v1/companies/{companyId}/assets/correlated` | Get correlated assets across integrations |\n| 🔵 **`GET`** | `/api/v1/assets` | List all assets across all companies |\n| 🔵 **`GET`** | `/api/v1/assets/lookup/{integrationSlug}` | Lookup an asset within an integration and show cross-integration matches |\n| 🟢 **`POST`** | `/api/v1/assets/lookup/{integrationSlug}` | Lookup an asset with an attached JSON payload |\n| 🔵 **`GET`** | `/api/v1/assets/{assetId}` | Get a single asset |\n| 🟣 **`PATCH`** | `/api/v1/assets/{assetId}` | Partial update an asset |\n| 🔵 **`GET`** | `/api/v1/assets/{assetId}/history` | Get asset presence history |\n| 🔵 **`GET`** | `/api/v1/assets/consolidated` | Get consolidated cross-integration asset view |\n| 🔵 **`GET`** | `/api/v1/assets/unmatched` | Get unmatched secondary integration assets |\n| 🔵 **`GET`** | `/api/v1/assets/outbound-sync` | Get unmatched assets enriched for outbound sync |\n| 🔵 **`GET`** | `/api/v1/assets/{assetId}/consolidated` | Get a consolidated asset with cross-integration matches |\n| 🔵 **`GET`** | `/api/v1/assets/consolidated/lookup` | Look up a consolidated asset by integration and identifier |\n| 🟢 **`POST`** | `/api/v1/assets/bulk/set-billable` | Bulk toggle billable status |\n| 🟢 **`POST`** | `/api/v1/assets/bulk/update` | Bulk update assets |\n| 🟢 **`POST`** | `/api/v1/assets/bulk/tag` | Bulk apply metadata tags to assets |\n| 🟢 **`POST`** | `/api/v1/assets/bulk/force-consolidate` | Force-consolidate two or more assets into a single group |\n| 🔵 **`GET`** | `/api/v1/integrations/{slug}/assets/summary` | Get asset summary for an integration |\n\n### Products\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/products` | List all products |\n| 🟢 **`POST`** | `/api/v1/products` | Create a new product |\n| 🔵 **`GET`** | `/api/v1/products/{productId}` | Get a single product |\n| 🟡 **`PUT`** | `/api/v1/products/{productId}` | Update a product |\n| 🔵 **`GET`** | `/api/v1/products/{productId}/deployed-counts` | Get per-company deployed asset counts for a product |\n| 🔵 **`GET`** | `/api/v1/integrations/{slug}/products` | List products for an integration |\n| 🔵 **`GET`** | `/api/v1/products/{productId}/bill-variance` | Get bill variance history for a product |\n\n### Lookup\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/lookup/{integrationSlug}/{externalId}` | Find company by external ID |\n| 🟢 **`POST`** | `/api/v1/lookup/bulk` | Bulk lookup companies by external IDs |\n\n### Ingest\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🟢 **`POST`** | `/api/v1/ingest/{integrationSlug}` | Receive a batch of raw company records from n8n |\n| 🟢 **`POST`** | `/api/v1/ingest/{integrationSlug}/sample` | Test field mappings on sample data without persisting |\n| 🟢 **`POST`** | `/api/v1/ingest/{integrationSlug}/bills` | Ingest a vendor bill from n8n |\n| 🟢 **`POST`** | `/api/v1/ingest/{integrationSlug}/sell-prices` | Bulk-ingest sell prices from a billing system via n8n |\n\n### Sync\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🟢 **`POST`** | `/api/v1/sync/{integrationSlug}/trigger` | Trigger a sync for an integration |\n| 🔵 **`GET`** | `/api/v1/sync/{integrationSlug}/status` | Get sync status for an integration |\n| 🔵 **`GET`** | `/api/v1/sync/health` | Get sync health overview for all integrations |\n\n### SyncSchedules\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/sync-schedules` | List all sync schedules |\n| 🟢 **`POST`** | `/api/v1/sync-schedules` | Create a recurring sync schedule |\n| 🔵 **`GET`** | `/api/v1/sync-schedules/{id}` | Get a sync schedule by ID |\n| 🟡 **`PUT`** | `/api/v1/sync-schedules/{id}` | Update a sync schedule |\n| 🔴 **`DELETE`** | `/api/v1/sync-schedules/{id}` | Delete a sync schedule |\n| 🟢 **`POST`** | `/api/v1/sync-schedules/{id}/toggle` | Enable or disable a sync schedule |\n| 🟢 **`POST`** | `/api/v1/sync-schedules/{id}/trigger` | Manually trigger a sync schedule |\n| 🔵 **`GET`** | `/api/v1/sync-schedules/{id}/logs` | Get execution logs for a sync schedule |\n| 🔵 **`GET`** | `/api/v1/sync-schedules/{id}/summary` | Get execution summary for a sync schedule |\n\n### Matching\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/matching/queue` | Get pending items in the matching queue |\n| 🔵 **`GET`** | `/api/v1/matching/queue/summary` | Get matching queue summary statistics |\n| 🟢 **`POST`** | `/api/v1/matching/find` | Find potential matches for an external company |\n| 🟢 **`POST`** | `/api/v1/matching/batch` | Process a batch of companies through the matching engine |\n| 🟢 **`POST`** | `/api/v1/matching/queue/{queueItemId}/resolve` | Resolve a matching queue item |\n| 🔵 **`GET`** | `/api/v1/matching/score/{companyId}` | Get detailed score breakdown for a potential match |\n\n### Duplicates\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/duplicates` | List pending duplicate candidates |\n| 🔵 **`GET`** | `/api/v1/duplicates/summary` | Get duplicate detection summary statistics |\n| 🟢 **`POST`** | `/api/v1/duplicates/scan` | Trigger an on-demand duplicate detection scan |\n| 🟢 **`POST`** | `/api/v1/duplicates/{duplicateId}/dismiss` | Dismiss a duplicate candidate |\n| 🟢 **`POST`** | `/api/v1/duplicates/{duplicateId}/merge` | Merge duplicate companies |\n| 🟢 **`POST`** | `/api/v1/duplicates/check` | Check if two specific companies might be duplicates |\n\n### Billing\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/billing` | List monthly bills |\n| 🟢 **`POST`** | `/api/v1/billing` | Record a monthly bill |\n| 🟢 **`POST`** | `/api/v1/billing/bulk` | Record multiple monthly bills |\n| 🔵 **`GET`** | `/api/v1/billing/{billId}` | Get a single bill |\n| 🟡 **`PUT`** | `/api/v1/billing/{billId}` | Update a monthly bill |\n| 🟢 **`POST`** | `/api/v1/billing/{billId}/assets` | Link assets to a bill |\n| 🟢 **`POST`** | `/api/v1/billing/{billId}/assets/auto` | Auto-link assets to a bill |\n\n### CostAnalysis\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/cost/company/{uuid}` | Get cost summary for a company |\n| 🔵 **`GET`** | `/api/v1/cost/product/{productId}` | Get cost breakdown for a product |\n| 🔵 **`GET`** | `/api/v1/cost/integration/{slug}` | Get cost summary for an integration |\n| 🔵 **`GET`** | `/api/v1/cost/overview` | Get global cost overview |\n| 🔵 **`GET`** | `/api/v1/cost/compare` | Compare costs between two periods |\n\n### SellPrices\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/sell-prices/product/{productId}` | Get sell prices for a product |\n| 🔵 **`GET`** | `/api/v1/sell-prices/company/{uuid}` | Get sell prices for a company |\n| 🟢 **`POST`** | `/api/v1/sell-prices` | Set a sell price |\n| 🟡 **`PUT`** | `/api/v1/sell-prices/{sellPriceId}` | Update a sell price |\n\n### LicenseCompliance\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/license-compliance/overview` | Get global license compliance overview |\n| 🔵 **`GET`** | `/api/v1/license-compliance/product/{productId}` | Get compliance for a product |\n| 🔵 **`GET`** | `/api/v1/license-compliance/company/{uuid}` | Get compliance for a company |\n| 🟢 **`POST`** | `/api/v1/license-compliance/refresh` | Recalculate all compliance statuses |\n| 🔵 **`GET`** | `/api/v1/license-compliance/entitlements` | List license entitlements |\n| 🟢 **`POST`** | `/api/v1/license-compliance/entitlements` | Set a license entitlement |\n| 🔵 **`GET`** | `/api/v1/license-compliance/entitlements/{entitlementId}` | Get a single license entitlement |\n| 🟡 **`PUT`** | `/api/v1/license-compliance/entitlements/{entitlementId}` | Update a license entitlement |\n\n### OutboundBillingSync\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/billing-sync/line-items` | Get billing sync line items |\n| 🔵 **`GET`** | `/api/v1/billing-sync/line-items/product/{productId}` | Get billing sync line items for a product |\n| 🔵 **`GET`** | `/api/v1/billing-sync/line-items/company/{uuid}` | Get billing sync line items for a company |\n| 🔵 **`GET`** | `/api/v1/billing-sync/line-items/integration/{slug}` | Get billing sync line items for an integration |\n| 🔵 **`GET`** | `/api/v1/billing-sync/summary` | Get billing sync summary |\n\n### VendorBills\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/vendor-bills` | List vendor bills with optional filters |\n| 🟢 **`POST`** | `/api/v1/vendor-bills` | Create a vendor bill manually |\n| 🔵 **`GET`** | `/api/v1/vendor-bills/{id}` | Get a vendor bill with all line items |\n| 🟡 **`PUT`** | `/api/v1/vendor-bills/{id}` | Update a vendor bill's status, notes, or bill number |\n| 🟢 **`POST`** | `/api/v1/vendor-bills/{id}/line-items` | Add a line item to a vendor bill |\n| 🔴 **`DELETE`** | `/api/v1/vendor-bills/{id}/line-items/{lineId}` | Remove a line item from a vendor bill |\n| 🟣 **`PATCH`** | `/api/v1/vendor-bills/{id}/line-items/{lineId}/match` | Match an unmatched line item to a product |\n| 🟢 **`POST`** | `/api/v1/vendor-bills/bulk-status` | Bulk update the status of multiple vendor bills |\n| 🟢 **`POST`** | `/api/v1/vendor-bills/merge` | Merge multiple vendor bills into one (first ID is primary) |\n| 🔵 **`GET`** | `/api/v1/vendor-bills/{id}/variance` | Get billed vs consumed variance report for a bill |\n\n### Contracts\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/contracts` | List all contracts |\n| 🟢 **`POST`** | `/api/v1/contracts` | Create a contract |\n| 🔵 **`GET`** | `/api/v1/contracts/upcoming-renewals` | List upcoming contract renewals |\n| 🔵 **`GET`** | `/api/v1/contracts/{contractId}` | Get a single contract |\n| 🟡 **`PUT`** | `/api/v1/contracts/{contractId}` | Update a contract |\n| 🟢 **`POST`** | `/api/v1/contracts/{contractId}/renew` | Renew a contract |\n\n### MarginAnalysis\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/margin/overview` | Get global margin overview |\n| 🔵 **`GET`** | `/api/v1/margin/company/{uuid}` | Get margin report for a company |\n| 🔵 **`GET`** | `/api/v1/margin/product/{productId}` | Get margin breakdown for a product |\n\n### BillingForecast\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/forecast/overview` | Get global forecast summary |\n| 🔵 **`GET`** | `/api/v1/forecast/company/{uuid}` | Get forecast for a company |\n| 🔵 **`GET`** | `/api/v1/forecast/product/{productId}` | Get forecast for a product |\n| 🔵 **`GET`** | `/api/v1/forecast/integration/{slug}` | Get forecast for an integration |\n| 🟢 **`POST`** | `/api/v1/forecast/refresh` | Refresh all forecasts |\n\n### CostAllocation\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/cost-allocation/rules` | List all cost allocation rules |\n| 🟢 **`POST`** | `/api/v1/cost-allocation/rules` | Create a cost allocation rule |\n| 🔵 **`GET`** | `/api/v1/cost-allocation/rules/{ruleId}` | Get a cost allocation rule |\n| 🟡 **`PUT`** | `/api/v1/cost-allocation/rules/{ruleId}` | Update a cost allocation rule |\n| 🟢 **`POST`** | `/api/v1/cost-allocation/rules/{ruleId}/calculate` | Calculate allocation for a rule |\n| 🔵 **`GET`** | `/api/v1/cost-allocation/results` | Get allocation results |\n| 🔵 **`GET`** | `/api/v1/cost-allocation/chargeback/{period}` | Get chargeback report for a period |\n\n### Reconciliation\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/reconciliation/company/{uuid}` | Get reconciliation report for a company |\n| 🔵 **`GET`** | `/api/v1/reconciliation/integration/{slug}` | Get reconciliation report for an integration |\n| 🔵 **`GET`** | `/api/v1/reconciliation/overview` | Get global reconciliation overview |\n\n### Webhooks\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/webhooks` | List all webhook subscriptions |\n| 🟢 **`POST`** | `/api/v1/webhooks` | Create a webhook subscription |\n| 🔵 **`GET`** | `/api/v1/webhooks/{webhookId}` | Get a webhook subscription |\n| 🟡 **`PUT`** | `/api/v1/webhooks/{webhookId}` | Update a webhook subscription |\n| 🟢 **`POST`** | `/api/v1/webhooks/{webhookId}/test` | Test a webhook |\n| 🔵 **`GET`** | `/api/v1/webhooks/{webhookId}/deliveries` | Get delivery logs for a webhook |\n| 🔵 **`GET`** | `/api/v1/webhooks/event-types` | List supported webhook event types |\n\n### WebhookEvaluation\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🟢 **`POST`** | `/api/v1/webhooks/evaluate/all` | Run all webhook evaluations |\n| 🟢 **`POST`** | `/api/v1/webhooks/evaluate/contracts` | Evaluate contract renewals |\n| 🟢 **`POST`** | `/api/v1/webhooks/evaluate/utilisation` | Evaluate utilisation thresholds |\n| 🟢 **`POST`** | `/api/v1/webhooks/evaluate/sync-stale` | Evaluate stale syncs |\n| 🟢 **`POST`** | `/api/v1/webhooks/evaluate/compliance` | Evaluate license compliance |\n| 🟢 **`POST`** | `/api/v1/webhooks/evaluate/reconciliation` | Evaluate reconciliation gaps |\n\n### SyncLogs\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/sync-logs/integrations/{integrationId}/runs` | Get sync runs for an integration |\n| 🔵 **`GET`** | `/api/v1/sync-logs/runs/{syncRunId}` | Get sync run details |\n| 🔵 **`GET`** | `/api/v1/sync-logs/runs/{syncRunId}/logs` | Get logs for a sync run |\n| 🔵 **`GET`** | `/api/v1/sync-logs/integrations/{integrationId}/history/{externalId}` | Get sync log history for an external ID |\n\n### Export\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/export` | List recent export jobs |\n| 🟢 **`POST`** | `/api/v1/export` | Create full tenant data export |\n| 🔵 **`GET`** | `/api/v1/export/{exportId}` | Get export job details |\n| 🔵 **`GET`** | `/api/v1/export/{exportId}/status` | Get export job status |\n| 🔵 **`GET`** | `/api/v1/export/{exportId}/download` | Download completed export |\n| 🟢 **`POST`** | `/api/v1/export/companies` | Export companies list |\n| 🟢 **`POST`** | `/api/v1/export/assets` | Export assets list |\n| 🟢 **`POST`** | `/api/v1/export/products` | Export products list |\n| 🟢 **`POST`** | `/api/v1/export/billing` | Export billing records |\n| 🟢 **`POST`** | `/api/v1/export/cost-analysis` | Export cost analysis report |\n| 🟢 **`POST`** | `/api/v1/export/margin` | Export margin report |\n| 🟢 **`POST`** | `/api/v1/export/company-mappings` | Export company-to-integration mappings |\n| 🟢 **`POST`** | `/api/v1/export/forecast` | Export billing forecast |\n| 🟢 **`POST`** | `/api/v1/export/audit-log` | Export audit log |\n| 🟢 **`POST`** | `/api/v1/export/reconciliation` | Export reconciliation report |\n| 🟢 **`POST`** | `/api/v1/export/chargeback` | Export chargeback report |\n| 🟢 **`POST`** | `/api/v1/export/license-compliance` | Export license compliance report |\n\n### APIKeys\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/api-keys` | List all API keys |\n| 🟢 **`POST`** | `/api/v1/api-keys` | Create a new API key (full key returned once) |\n\n### ApiKeys\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🟣 **`PATCH`** | `/api/v1/api-keys/{id}` | Update an API key's name and scopes |\n\n### ActivityLogs\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/activity-logs` | Query the activity log |\n\n### ScheduledReports\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/reports` | List all scheduled report subscriptions |\n| 🟢 **`POST`** | `/api/v1/reports` | Create a scheduled report subscription (type, cron, delivery URL, config) |\n| 🔵 **`GET`** | `/api/v1/reports/{reportId}` | Get a single scheduled report subscription with last delivery info |\n| 🟡 **`PUT`** | `/api/v1/reports/{reportId}` | Update report config / schedule / delivery URL |\n| 🔴 **`DELETE`** | `/api/v1/reports/{reportId}` | Remove a report subscription |\n| 🟢 **`POST`** | `/api/v1/reports/{reportId}/send-now` | Trigger an immediate delivery of the report |\n| 🔵 **`GET`** | `/api/v1/reports/{reportId}/preview` | Preview the rendered report payload without sending |\n\n### DataRetention\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/settings/retention` | Get current data retention policies |\n| 🟢 **`POST`** | `/api/v1/settings/retention` | Create a new retention policy for a table |\n| 🟡 **`PUT`** | `/api/v1/settings/retention` | Update retention policies (per-table retention days, enabled/disabled) |\n| 🔵 **`GET`** | `/api/v1/settings/retention/{targetTable}` | Get a single retention policy by target table name |\n| 🟡 **`PUT`** | `/api/v1/settings/retention/{policyId}` | Update a single retention policy |\n\n### Tags\n\n| | Endpoint | Description |\n|---|----------|-------------|\n| 🔵 **`GET`** | `/api/v1/tags` | Get all unique tags with usage statistics |\n| 🟢 **`POST`** | `/api/v1/tags` | Create a new tag definition |\n| 🔵 **`GET`** | `/api/v1/tags/labels` | Get all unique tag labels |\n| 🟡 **`PUT`** | `/api/v1/tags/{label}` | Rename a tag across all companies |\n| 🔵 **`GET`** | `/api/v1/tags/{label}/companies` | Get all company IDs that have a specific tag |\n| 🟢 **`POST`** | `/api/v1/tags/bulk/apply` | Apply tags to multiple companies |\n\n## Compatibility\n\n- **n8n version:** 1.0+ (tested on 2.x)\n- **Node.js version:** 18+\n\n## License\n\n[MIT](LICENSE)\n","readmeFilename":"README.md"}