HaloPSA REST API v2 — Swagger Spec
Live OpenAPI 3.0.1 spec for the HaloPSA REST API v2, served by our own instance. As of 2026-10-22 (Halo PSA 2.250.53): 961 paths, 1,507 operations (821 GET, 422 POST, 264 DELETE; no PUT or PATCH), 812 schemas. Use this as the authoritative field-level reference when the endpoint pages in this book don't carry enough detail. The spec, a generated endpoint map of every operation, and a separate map of the IntegrationData routes are attached to this page.
Corrected 2026-10-22 (Apis): this page first gave the production spec as dtc.halopsa.com. That is not our instance. Production is psa.dtctoday.com (see API Access).
Spec Location
| Path | |
|---|---|
| Live URL (production) | https://psa.dtctoday.com/api/swagger/v2/swagger.json (no login needed; about 5 MB) |
| Swagger UI | https://psa.dtctoday.com/api/swagger/index.html |
| Halo's API docs app | https://psa.dtctoday.com/apidoc/ |
| Dev instance | https://dtcdev.halopsa.com/api/swagger/v2/swagger.json (it timed out on 2026-10-22; the root page answers) |
| Attached here | halopsa-api-spec.zip (the production spec, downloaded 2026-10-22), endpoints.md (every operation by tag, with DTC live notes), endpoints-integrations.md (the 158 IntegrationData routes) |
| Repo snapshot | docs/halo/swagger.json in dtc-inc/client-portal (committed on branch feature/deferred-revenue-modes, commit 87c4d3b; taken from dev in April) |
| AI skill copy | the halopsa-api skill carries the same spec and maps: HaloPSA API Skill |
The path is the same on any Halo instance; only the host changes.
Refreshing the Snapshot
Halo updates the instance on its own schedule, so the spec drifts. To refresh the attachments and the AI skill:
curl -sS https://psa.dtctoday.com/api/swagger/v2/swagger.json -o references/halopsa-api.json
python3 -I scripts/gen-reference.py references/halopsa-api.json references
Run from the halopsa-api skill folder, then re-attach the spec and both maps here. For the client-portal repo snapshot, write the same download to docs/halo/swagger.json and commit it. The file is about 5 MB; do not paste it into KB pages.
Deferred Revenue — GET /api/Control Fields
GET /api/Control returns the tenant-level Control object. The fields relevant to deferred-revenue and down-payment behaviour:
| Field | Type | Notes |
|---|---|---|
enable_deferred_revenue |
boolean | Master DR toggle for the tenant |
enable_downpayment_invoices |
boolean | Down-payment invoice feature toggle |
deferred_revenue_client |
integer | Client ID used for DR accounting entries |
deferred_revenue_code |
string | Accounting code for DR entries |
deferred_revenue_prepay_item_name |
string | Item name used for prepay DR line items |
downpayment_item |
integer | Halo's configured down-payment line item ID (DTC dev: item 3) |
These fields are not documented in the HaloPSA UI. The swagger spec is the only reliable source for them.
Related
- System Config Endpoints —
GET /Controlentry in this book - API Endpoints Reference — Portal-scoped endpoint list (book 1792)
- API Testing & curl Patterns at DTC — Auth setup and curl examples