# HaloPSA API endpoint reference: integration data

The IntegrationData routes (third-party feeds proxied through Halo), generated from `halopsa-api.json` (Halo API v2, OpenAPI 3.0.1), downloaded from https://psa.dtctoday.com/api/swagger/v2/swagger.json. Base URL `https://psa.dtctoday.com/api`. Every operation takes `Authorization: Bearer <token>`.

`*` marks a required parameter; query parameters are listed by name only, path parameters with their type. **W** marks an operation that changes state; never call one without Nate's explicit go-ahead for that call. Halo has no PUT or PATCH: a `POST` with an `id` in the body updates. **Live:** lines are what DTC's instance actually did (2026-10-22). Field-level detail is in the spec: `jq '.components.schemas.Faults' references/halopsa-api.json`. Regenerate with `scripts/gen-reference.py`.

Groups: [IntegrationData](#integrationdata)


## IntegrationData

### `POST /IntegrationData/Import/Xero` **W**

Body: `XeroDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/Xero`

Returns 200: `no body`

### `POST /IntegrationData/Send/Xero` **W**

Body: `InvoiceHeader`

Returns 200: `no body`

### `GET /IntegrationData/Get/PRTG`

Params: `testOnly`

Returns 200: `no body`

### `GET /IntegrationData/Get/Datto`

Params: `dataType`, `fetchSites`, `keyPair`

Returns 200: `no body`

### `GET /IntegrationData/Get/ServiceNow`

Returns 200: `no body`

### `GET /IntegrationData/Get/ServiceNowIntegration`

Params: `alternate_sys_id`, `customer_id`, `datatype`, `offset`, `search`, `updateddate`

Returns 200: `no body`

### `GET /IntegrationData/Get/SplunkOnCall`

Params: `datatype`

Returns 200: `no body`

### `POST /IntegrationData/Import/QuickBooksOnline` **W**

Body: `QuickBooksDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/QuickBooksOnline`

Params: `account_classification`, `account_subtype`, `account_type`, `companyid`, `connectionid`, `datatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/Device42`

Params: `datatype`, `keyPair`

Returns 200: `no body`

### `GET /IntegrationData/Get/ConnectWise`

Params: `datatype`, `page`

Returns 200: `no body`

### `GET /IntegrationData/Get/MicrosoftCSP`

Params: `azuretenants`, `continuationToken`, `datatype`, `detailsId`, `doPaginate`, `isLookup`, `keyPair`, `nextLink`, `search`

Returns 200: `no body`

### `POST /IntegrationData/AdjustQty/MicrosoftCSP` **W**

Body: `SubscriptionQuantityChange`

Returns 200: `no body`

### `POST /IntegrationData/ClearLicenceKeyCache/MicrosoftCSP` **W**

Returns 200: `no body`

### `GET /IntegrationData/Get/Autotask`

Params: `datatype`, `nexturl`

Returns 200: `no body`

### `GET /IntegrationData/Get/Atera`

Params: `datatype`, `keyPair`, `page`

Returns 200: `no body`

### `GET /IntegrationData/Get/ExchangeCalendars`

Params: `datatype`, `masterid`, `nexturl`, `overrideenddate`, `overridestartdate`, `userprincipalname`

Returns 200: `no body`

### `GET /IntegrationData/Get/ExchangeCalendars/EWS`

Returns 200: `no body`

### `POST /IntegrationData/Import/ExchangeCalendars/EWS` **W**

Body: `EWSAppointmentChange`

Returns 200: `no body`

### `GET /IntegrationData/Get/Okta`

Params: `datatype`, `override_mapping_id`, `validate`

Returns 200: `no body`

### `POST /IntegrationData/Import/Kashflow` **W**

Body: `KashflowDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/Kashflow`

Params: `datatype`, `tenantid`

Returns 200: `no body`

### `GET /IntegrationData/Get/Twitter`

Params: `callbackurl`, `datatype`

Returns 200: `no body`

### `POST /IntegrationData/Export/Lansweeper` **W**

Body: `LansweeperStartExport`

Returns 200: `no body`

### `GET /IntegrationData/Get/Lansweeper`

Params: `datatype`, `exportid`, `exportUrl`, `halositeid`, `siteid`

Returns 200: `no body`

### `GET /IntegrationData/Get/Interact`

Params: `searchString`, `testOnly`

Returns 200: `no body`

### `GET /IntegrationData/Get/DynamicsCRM`

Params: `accountid`, `datatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/AzureAD`

Params: `connectionid`, `datatype`, `mappingid`, `tenantid`

Returns 200: `no body`

### `GET /IntegrationData/Get/AzureAD/Delta`

Returns 200: `no body`

### `POST /IntegrationData/Import/BusinessCentral` **W**

Body: `BusinessCentralDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/BusinessCentral`

Returns 200: `no body`

### `GET /IntegrationData/Get/NinjaRMM`

Params: `datatype`, `organizationid`, `page`

Returns 200: `no body`

### `GET /IntegrationData/Get/SolarWindsRMM`

Params: `datatype`, `gfisiteid`

Returns 200: `no body`

### `GET /IntegrationData/Get/Intune`

Params: `areaAzureTenant`, `connectionid`, `datatype`, `doPaginate`, `nextLink`

Returns 200: `no body`

### `GET /IntegrationData/Get/PagerDuty`

Params: `apikeyoverride`, `dataOnly`, `datatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/SalesMailbox`

Params: `connectionid`, `datatype`, `mailboxname`, `mappingid`

Returns 200: `no body`

### `GET /IntegrationData/Get/SalesMailbox/{id}`

Params: `id*` string

Returns 200: `no body`

### `GET /IntegrationData/Get/LogMeIn`

Params: `datatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/GoogleCalendars`

Params: `datatype`

Returns 200: `no body`

### `POST /IntegrationData/Post/GoogleCalendars` **W**

Body: `Uname[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/GoogleWorkplace`

Params: `datatype`, `mappingid`, `nexttoken`, `paginate`

Returns 200: `no body`

### `GET /IntegrationData/Get/NCentral`

Params: `accountid`, `customerid`, `dataOnly`, `datatype`

Returns 200: `no body`

### `POST /IntegrationData/Import/SnelStart` **W**

Returns 200: `no body`

### `GET /IntegrationData/Get/SnelStart`

Params: `datatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/ITGlue`

Params: `datatype`, `organizationid`, `returntype`, `typeid`, `updateddate`

Returns 200: `no body`

### `GET /IntegrationData/Get/Jamf`

Params: `dataOnly`, `endpoint`

Returns 200: `no body`

### `GET /IntegrationData/Validate/Jira`

Returns 200: `no body`

### `GET /IntegrationData/Get/Jira`

Params: `dataOnly`, `dataType`, `haloProduct`, `issueTypes`, `productId`, `search`

Returns 200: `no body`

### `GET /IntegrationData/Search/Jira`

Returns 200: `no body`

### `POST /IntegrationData/Link/Jira` **W**

Body: `LinkIssue[]`

Returns 200: `no body`

### `POST /IntegrationData/Unlink/Jira` **W**

Body: `LinkIssue[]`

Returns 200: `no body`

### `POST /IntegrationData/Import/Jira` **W**

Body: `JiraDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/BeyondTrust/Code`

Returns 200: `no body`

### `POST /IntegrationData/Import/BeyondTrust` **W**

Returns 200: `no body`

### `GET /IntegrationData/Get/DattoCommerce`

Params: `connectionid`, `datatype`, `page`

Returns 200: `no body`

### `GET /IntegrationData/Get/AzureSentinel`

Params: `connectionid`, `datatype`, `resourcegroupname`, `subscriptionid`, `workspacename`

Returns 200: `no body`

### `GET /IntegrationData/Get/Syncro`

Params: `dataOnly`, `datatype`, `page`

Returns 200: `no body`

### `GET /IntegrationData/Get/Domotz`

Params: `endpoint`, `returntype`, `validate`

Returns 200: `no body`

### `GET /IntegrationData/Get/GoToAssist`

Params: `customeremail`, `customername`, `datatype`, `limit`, `offset`, `ticketid`

Returns 200: `no body`

### `GET /IntegrationData/Get/Automate`

Params: `dataType`, `extraFilter`, `keyPair`

Returns 200: `no body`

### `GET /IntegrationData/Get/Snow`

Params: `accountid`, `dataOnly`, `datatype`, `nextlink`, `paginate`

Returns 200: `no body`

### `GET /IntegrationData/Get/DevOps`

Params: `data_only`, `haloProduct`, `instance_id`, `product_id`, `resource`, `search`, `workItemTypes`

Returns 200: `no body`

### `GET /IntegrationData/Search/DevOps`

Returns 200: `no body`

### `POST /IntegrationData/Import/DevOps` **W**

Body: `AzureDevOpsDetails[]`

Returns 200: `no body`

### `POST /IntegrationData/Link/DevOps` **W**

Body: `LinkWorkItem[]`

Returns 200: `no body`

### `POST /IntegrationData/Unlink/DevOps` **W**

Body: `LinkWorkItem[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/Auvik`

Params: `alsoInclude`, `dataType`, `excludeMapped`, `extraFilter`, `mappedOnly`, `next_url`, `paginate`, `parentId`, `subDataType`

Returns 200: `no body`

### `GET /IntegrationData/Get/HubSpot`

Params: `keypair`, `nextlink`, `objecttype`, `paginate`, `resource`, `search`

Returns 200: `no body`

### `GET /IntegrationData/Get/Qualys`

Params: `mappingid`, `offset`, `paginate`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/Passportal`

Params: `clientid`, `documenttype`, `endpoint`, `pagenum`, `returntype`, `validate`

Returns 200: `no body`

### `POST /IntegrationData/Import/Intacct` **W**

Params: `datatype`, `locid`

Returns 200: `no body`

### `GET /IntegrationData/Get/Intacct`

Returns 200: `no body`

### `GET /IntegrationData/Get/Liongard`

Params: `datatype`, `keyPair`, `page`

Returns 200: `no body`

### `POST /IntegrationData/Post/Liongard/Customer` **W**

Body: `Area`

Returns 200: `no body`

### `POST /IntegrationData/Post/Liongard/Metrics` **W**

Returns 200: `no body`

### `POST /IntegrationData/Post/Stripe/create-webhook` **W**

Body: `StripeWebhookEndpoint`

Returns 200: `no body`

### `POST /IntegrationData/Post/Stripe/create-setup-intent` **W**

Body: `StripePaymentIntentCreateRequest`

Returns 200: `no body`

### `POST /IntegrationData/Post/Stripe/create-payment-intent` **W**

Body: `StripePaymentIntentCreateRequest`

Returns 200: `no body`

### `POST /IntegrationData/Post/Stripe/update-invoice-payment` **W**

Body: `StripeUpdateInvoicePaymentRequest`

Returns 200: `no body`

### `GET /IntegrationData/Get/Stripe`

Returns 200: `no body`

### `DELETE /IntegrationData/Delete/Stripe/paymentmethod` **W**

Params: `paymentmethodid`

Returns 200: `no body`

### `POST /IntegrationData/Post/Stripe/create-portal-session` **W**

Body: `StripeCreatePortalSession`

Returns 200: `no body`

### `GET /IntegrationData/Get/Freshdesk`

Params: `datatype`, `page`, `parent_id`

Returns 200: `no body`

### `GET /IntegrationData/Get/Pax8`

Params: `include_this_id`, `page`, `paginate`, `remove_existing`, `resource`, `third_party_id`

Returns 200: `no body`

### `POST /IntegrationData/AdjustQty/Pax8` **W**

Body: `SubscriptionQuantityChange`

Returns 200: `no body`

### `GET /IntegrationData/Get/IngramMicro`

Params: `include_this_id`, `offset`, `paginate`, `remove_existing`, `resource`, `tenant`, `third_party_id`

Returns 200: `no body`

### `POST /IntegrationData/Import/IngramMicro/Subscriptions` **W**

Body: `Licence_List[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/StreamOneIon`

Returns 200: `no body`

### `GET /IntegrationData/Get/Synnex`

Returns 200: `no body`

### `GET /IntegrationData/Get/Salesforce`

Params: `endpoint`, `keypair`, `nextlink`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/NewRelic`

Params: `datatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/KaseyaVSA`

Params: `datatype`, `extrafilter`, `keyPair`, `page`

Returns 200: `no body`

### `GET /IntegrationData/Get/Zabbix`

Params: `method`

Returns 200: `no body`

### `GET /IntegrationData/Get/Giacom`

Params: `include_this_id`, `remove_existing`, `resource`, `sub_resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/Rhipe`

Params: `include_this_id`, `remove_existing`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/TechData`

Params: `include_this_id`, `remove_existing`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/intY`

Params: `include_this_id`, `remove_existing`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/CloudMarketplace`

Params: `account_id`, `include_this_id`, `module_id`, `remove_existing`, `reset_token`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/Sherweb`

Params: `customer_id`, `include_this_id`, `remove_existing`, `reset_token`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/ArrowSphere`

Params: `include_this_id`, `next_url`, `paginate`, `remove_existing`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/DickerData`

Params: `include_this_id`, `remove_existing`, `resource`, `tenant_id`

Returns 200: `no body`

### `POST /IntegrationData/Import/SageBusinessCloud` **W**

Body: `SageBusinessCloudDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/SageBusinessCloud`

Returns 200: `no body`

### `POST /IntegrationData/Import/ExactOnline` **W**

Body: `ExactDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/ExactOnline`

Returns 200: `no body`

### `POST /IntegrationData/FormatJsonArray` **W**

Returns 200: `no body`

### `GET /IntegrationData/Get/Quoter`

Params: `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/HaloLink`

Params: `resource`, `uriparams`

Returns 200: `no body`

### `POST /IntegrationData/Unlink/HaloLink` **W**

Body: `int32[]`

Returns 200: `no body`

### `POST /IntegrationData/SAML/IdP/Metadata` **W**

Body: `KeyPair2`

Returns 200: `no body`

### `GET /IntegrationData/SAML/SP/Metadata`

Returns 200: `no body`

### `GET /IntegrationData/Get/Facebook`

Params: `facebook_details_id`, `resource`

Returns 200: `no body`

### `GET /IntegrationData/Get/ConnectwiseControl`

Params: `datatype`, `keyPair`, `secondarydatatype`

Returns 200: `no body`

### `GET /IntegrationData/Get/Etilize`

Params: `catalog`, `datatype`, `locale`, `page_size`, `pageno`, `search`

Returns 200: `no body`

### `GET /IntegrationData/Get/JiraServiceManagement`

Params: `alternate_sys_id`, `customer_id`, `datatype`, `offset`, `search`, `supplier_id`

Returns 200: `no body`

### `POST /IntegrationData/MicrosoftTeams/Manifest` **W**

Body: `TeamsManifestCreate`

Returns 200: `no body`

### `GET /IntegrationData/Get/LogicMonitor`

Params: `datatype`, `offset`

Returns 200: `no body`

### `GET /IntegrationData/Get/Barracuda`

Params: `after`, `datatype`, `keypair`, `pageinapi`, `varname`

Returns 200: `no body`

### `GET /IntegrationData/Get/HolidayAPI`

Params: `country`, `dataOnly`, `endpoint`, `year`

Returns 200: `no body`

### `GET /IntegrationData/Get/Icinga`

Returns 200: `no body`

### `GET /IntegrationData/Get/ConnectwiseRmm`

Returns 200: `no body`

### `POST /IntegrationData/Post/ConnectwiseRmm/Switch` **W**

Body: `UpgradeConnectWiseRmmApiRequest`

Returns 200: `no body`

### `GET /IntegrationData/Get/Shopify`

Returns 200: `no body`

### `GET /IntegrationData/Get/ShopifyVerify`

Returns 200: `no body`

### `GET /IntegrationData/Get/Xensam`

Returns 200: `no body`

### `GET /IntegrationData/Get/Datagate`

Returns 200: `no body`

### `GET /IntegrationData/Get/Confluence`

Returns 200: `no body`

### `POST /IntegrationData/Post/Confluence/create-webhook` **W**

Body: `ConfluenceWebhookEndpoint`

Returns 200: `no body`

### `GET /IntegrationData/Get/Mail`

Returns 200: `no body`

### `GET /IntegrationData/Get/DeletedMail`

Returns 200: `no body`

### `POST /IntegrationData/Move/Mail` **W**

Body: `MoveMailRequest[]`

Returns 200: `no body`

### `POST /IntegrationData/Post/OpenAi` **W**

Body: `Actions`

Returns 200: `no body`

### `GET /IntegrationData/Get/AmazonSeller`

Returns 200: `no body`

### `GET /IntegrationData/Get/SnipeIT`

Returns 200: `no body`

### `GET /IntegrationData/Get/Prometheus`

Returns 200: `no body`

### `POST /IntegrationData/Import/Fortnox` **W**

Body: `FortnoxDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/Fortnox`

Returns 200: `no body`

### `GET /IntegrationData/Get/Mattermost`

Returns 200: `no body`

### `POST /IntegrationData/Post/Mattermost/create-webhook` **W**

Body: `MattermostWebhook`

Returns 200: `no body`

### `POST /IntegrationData/Post/Mattermost/delete-webhook` **W**

Body: `string`

Returns 200: `no body`

### `POST /IntegrationData/Post/Mattermost/send-webhook` **W**

Body: `MattermostWebhookContent`

Returns 200: `no body`

### `GET /IntegrationData/Get/WordpressCom`

Returns 200: `no body`

### `GET /IntegrationData/Get/WordpressOrg`

Returns 200: `no body`

### `GET /IntegrationData/Get/Dynatrace`

Returns 200: `no body`

### `POST /IntegrationData/Import/Myob` **W**

Body: `MYOBDetails[]`

Returns 200: `no body`

### `GET /IntegrationData/Get/Myob`

Returns 200: `no body`

### `GET /IntegrationData/Get/GoogleBusiness`

Returns 200: `no body`

### `GET /IntegrationData/Get/VMWorkspace`

Returns 200: `no body`

### `GET /IntegrationData/BigPanda/GetDeviceList`

Returns 200: `no body`

### `GET /IntegrationData/Get/Tanium`

Returns 200: `no body`

### `GET /IntegrationData/Get/Splashtop`

Returns 200: `no body`

### `GET /IntegrationData/Get/Slack`

Returns 200: `no body`

### `GET /IntegrationData/Get/GoCardless`

Returns 200: `no body`

### `GET /IntegrationData/Get/GoCardless/Payments`

Returns 200: `no body`

### `GET /IntegrationData/Get/Avalara`

Returns 200: `no body`

### `GET /IntegrationData/Get/Meraki`

Returns 200: `no body`

### `GET /IntegrationData/Get/MicrosoftSkus`

Returns 200: `no body`
