Reference · Tools

HaloPSA

Manage clients, sites, tickets, and users in HaloPSA IT service management platform

Action Communication v1

The HaloPSA node manages the core records of an IT service desk — clients, sites, tickets and users — through the HaloPSA API. A typical build is opening a ticket automatically from a monitoring alert, attached to the right client and site, then updating it as the incident progresses.

Node type
Action
Parameters
46
Outputs
Output, Error
Credentials
HaloPSA API

HaloPSA

Manage clients, sites, tickets, and users in HaloPSA

Overview

HaloPSA is a professional services automation (PSA) and IT service management (ITSM) platform. This tool enables CRUD operations on clients, sites, tickets, and users. It uses OAuth2 client credentials for authentication and supports filtering, pagination, and simplified output modes.

Category: Communication
Tool Name: halo_psa
Version: 1

Appearance: Icon: lucide-Wrench | Color: #2ACAEA

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires HaloPSA API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Clientclient
Sitesite
Ticketticket
Useruser

Operations

Every resource offers the same five operations.

OperationValueDescription
CreatecreateCreate a new record
DeletedeleteDelete a record by ID
GetgetRetrieve one record by ID
Get ManygetAllList records, with filtering and pagination
UpdateupdateUpdate an existing record

Parameters

Client: Create

ParameterTypeRequiredDefaultDescription
Name (clientName)stringYesThe name of the client to create. Supports expressions like {{ $json.company }}.
Additional FieldscollectionNo{}Optional client attributes. Add only the ones you need.
— Account Status (inactive)optionsNofalseWhether the client account is active.
Options: false (Active), true (Inactive)
— NotesstringNoFree-text notes stored on the client.
— VIP (is_vip)booleanNofalseWhether the client is VIP or not.
— WebsitestringNoThe client’s website URL.

Client: Get

ParameterTypeRequiredDefaultDescription
Client IDstringYesThe ID of the client. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Client: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the client list. Add only the filters you need.
— Active Status (activeStatus)optionsNoactiveWhich accounts to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNoFilter clients by your search string.

Client: Update

ParameterTypeRequiredDefaultDescription
Client IDstringYesThe ID of the client to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the client. Add only the ones you need.
— Account Status (inactive)optionsNofalseWhether the client account is active.
Options: false (Active), true (Inactive)
— NamestringNoThe client’s name.
— NotesstringNoFree-text notes stored on the client.
— VIP (is_vip)booleanNofalseWhether the client is VIP or not.
— WebsitestringNoThe client’s website URL.

Client: Delete

ParameterTypeRequiredDefaultDescription
Client IDstringYesThe ID of the client. Supports expressions.

Site: Create

ParameterTypeRequiredDefaultDescription
Name (siteName)stringYesThe name of the site to create. Supports expressions.
Client IDstringYesThe ID of the client this site belongs to. Find in HaloPSA under Clients. Supports expressions.
Additional FieldscollectionNo{}Optional site attributes. Add only the ones you need.
— Main Contact (maincontact_name)stringNoName of the site’s main contact.
— NotesstringNoFree-text notes stored on the site.
— Phone Number (phonenumber)stringNoTelephone number for the site.

Site: Get

ParameterTypeRequiredDefaultDescription
Site IDstringYesThe ID of the site. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Site: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the site list. Add only the filters you need.
— Active Status (activeStatus)optionsNoallWhich sites to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNoFilter sites by your search string.

Site: Update

ParameterTypeRequiredDefaultDescription
Site IDstringNoThe ID of the site to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the site. Add only the ones you need.
— Client ID (client_id)stringNoThe ID of the client this site belongs to.
— Main Contact (maincontact_name)stringNoName of the site’s main contact.
— NamestringNoEnter site name.
— NotesstringNoFree-text notes stored on the site.
— Phone Number (phonenumber)stringNoTelephone number for the site.

Site: Delete

ParameterTypeRequiredDefaultDescription
Site IDstringYesThe ID of the site. Supports expressions.

Ticket: Create

ParameterTypeRequiredDefaultDescription
Ticket Type ID (ticketType)stringYesThe ID of the ticket type. Find in HaloPSA under Configuration > Ticket Types. Note: types containing “Request”, “Offboarding”, “Onboarding”, “Other Hardware”, or “Software Change” may fail with 400 errors as they require CAB approval.
SummarystringYesThe summary/title of the ticket. Supports expressions.
DetailsstringYesThe details/description of the ticket. Supports expressions.
Additional FieldscollectionNo{}Optional ticket attributes. Add only the ones you need.
— Assigned Agent ID (agent_id)stringNoThe ID of the agent to assign. Find in HaloPSA under Configuration > Agents.
— Start Date (startdate)stringNoThe start date for the ticket (ISO 8601 format).
— Target Date (targetdate)stringNoThe target/due date for the ticket (ISO 8601 format).

Ticket: Get

ParameterTypeRequiredDefaultDescription
Ticket IDstringYesThe ID of the ticket. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

Ticket: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the ticket list. Add only the filters you need.
— Active Status (activeStatus)optionsNoallWhich tickets to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNoFilter tickets by your search string.

Ticket: Update

ParameterTypeRequiredDefaultDescription
Ticket IDstringNoThe ID of the ticket to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the ticket. Add only the ones you need.
— Assigned Agent ID (agent_id)stringNoThe ID of the agent to assign. Find in HaloPSA under Configuration > Agents.
— DetailsstringNoThe details/description of the ticket.
— Start Date (startdate)stringNoThe start date for the ticket (ISO 8601 format).
— SummarystringNoThe summary/title of the ticket.
— Target Date (targetdate)stringNoThe target/due date for the ticket (ISO 8601 format).

Ticket: Delete

ParameterTypeRequiredDefaultDescription
Ticket IDstringYesThe ID of the ticket. Supports expressions.

User: Create

ParameterTypeRequiredDefaultDescription
Name (userName)stringYesThe name of the user to create. Supports expressions.
Site IDstringYesThe ID of the site the user belongs to. Find in HaloPSA under Clients > Sites. Supports expressions.
Additional FieldscollectionNo{}Optional user attributes. Add only the ones you need.
— Email (emailaddress)stringNoThe user’s email address.
— NotesstringNoFree-text notes stored on the user.
— PasswordstringNoMust be at least 8 characters long and contain at least one letter, one number or symbol, one upper case and one lower case character.
— SurnamestringNoThe user’s surname.
— User Is Inactive (inactive)booleanNofalseWhether the user account is inactive.

User: Get

ParameterTypeRequiredDefaultDescription
User IDstringYesThe ID of the user. Supports expressions.
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.

User: Get Many

ParameterTypeRequiredDefaultDescription
SimplifybooleanNotrueWhether to return a simplified version of the response instead of the raw data.
Return AllbooleanNofalseWhether to return all results or only up to a given limit.
LimitnumberNo50Max number of results to return. (shown when Return All is false)
FilterscollectionNo{}Narrow the user list. Add only the filters you need.
— Active Status (activeStatus)optionsNoallWhich users to include.
Options: active (Active Only), all, inactive (Inactive Only)
— Text To Filter By (search)stringNoFilter users by your search string.

User: Update

ParameterTypeRequiredDefaultDescription
User IDstringNoThe ID of the user to update. Supports expressions.
Update FieldscollectionNo{}Fields to change on the user. Add only the ones you need.
— Email (emailaddress)stringNoThe user’s email address.
— NamestringNoEnter user name.
— NotesstringNoFree-text notes stored on the user.
— PasswordstringNoMust be at least 8 characters long and contain at least one letter, one number or symbol, one upper case and one lower case character.
— Site ID (site_id)stringNoThe ID of the site to assign the user to. Find in HaloPSA under Clients > Sites.
— SurnamestringNoThe user’s surname.
— User Is Inactive (inactive)booleanNofalseWhether the user account is inactive.

User: Delete

ParameterTypeRequiredDefaultDescription
User IDstringYesThe ID of the user. Supports expressions.

All Operations

ParameterTypeRequiredDefaultDescription
Max ConcurrencynumberNo10Maximum number of items to process concurrently.

Output Data

The HaloPSA record is merged into the incoming item JSON at the top level, so the fields you sent in pass through and binary data is forwarded.

OperationOutput items
create, updateOne item — the record HaloPSA returns. Simplify does not apply to writes, so the full record comes back.
getOne item — the record, trimmed by Simplify when it is on.
getAllFans out — one output item per record. Return All pages through the whole result set; otherwise up to Limit records.
deleteOne item — HaloPSA’s delete response.

Simplify keeps only the fields that matter for most workflows, and differs per resource:

ResourceFields kept when Simplify is on
Clientid, name, notes, is_vip, website
Siteid, name, client_id, maincontact_name, notes, phonenumber
Ticketid, summary, details, agent_id, startdate, targetdate
Userid, name, site_id, emailaddress, notes, surname, inactive

Turn Simplify off when a downstream node needs a field that is not in that list.

Usage Examples

  • Create a new client in HaloPSA
  • Get all open tickets from HaloPSA
  • Update a HaloPSA user email address
  • Delete a site in HaloPSA
  • List all HaloPSA clients filtered by search term

Example Configuration

Get one client, simplified:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "client",
    "operation": "get",
    "clientId": "123",
    "simplify": true
  }
}

List active clients matching a search string:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "client",
    "operation": "getAll",
    "returnAll": false,
    "limit": 50,
    "simplify": true,
    "filters": {
      "activeStatus": "active",
      "search": "Acme"
    }
  }
}

Update a client:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "client",
    "operation": "update",
    "clientId": "123",
    "updateFields": {
      "name": "Acme Corporation Ltd",
      "notes": "Updated company name after incorporation",
      "website": "https://acmecorp.com",
      "is_vip": true
    }
  }
}

Create a site under a client returned by an upstream node:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "site",
    "operation": "create",
    "siteName": "Acme Headquarters",
    "clientId": "{{ $json.id }}",
    "additionalFields": {
      "maincontact_name": "John Smith",
      "phonenumber": "+1-555-0123",
      "notes": "Main office location"
    }
  }
}

Raise a ticket:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "ticket",
    "operation": "create",
    "ticketType": "1",
    "summary": "Network connectivity issues",
    "details": "Users are experiencing intermittent network connectivity issues in the main office.",
    "additionalFields": {
      "agent_id": "5",
      "startdate": "2024-01-15T09:00:00Z",
      "targetdate": "2024-01-15T17:00:00Z"
    }
  }
}

Create a user on a site:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "user",
    "operation": "create",
    "userName": "Jane Doe",
    "siteId": "789",
    "additionalFields": {
      "emailaddress": "jane.doe@acmecorp.com",
      "surname": "Doe",
      "password": "TempPassword123!",
      "notes": "New employee - IT Department",
      "inactive": false
    }
  }
}

List active users without trimming the response:

{
  "type": "halo_psa",
  "parameters": {
    "resource": "user",
    "operation": "getAll",
    "returnAll": false,
    "limit": 100,
    "simplify": false,
    "filters": {
      "activeStatus": "active"
    }
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Manage clients, sites, tickets, and users in HaloPSA for IT service management and helpdesk workflows.

Notes

  • Build the hierarchy in order. A site needs a Client ID and a user needs a Site ID, so create the client first, feed its id into the site, then feed the site’s id into the user.
  • The Name field has a different internal name per resource. In a JSON config it is clientName, siteName or userName depending on the resource — but plain name inside Update Fields.
  • Some ticket types need approval. Types whose names contain “Request”, “Offboarding”, “Onboarding”, “Other Hardware” or “Software Change” can be rejected with a 400 because HaloPSA requires CAB approval for them.
  • Simplify is on by default. If a downstream expression reads a field that is missing, turn Simplify off before assuming the record is incomplete.

Frequently asked questions

In what order do I have to create records?

Follow the hierarchy: a site needs a Client ID and a user needs a Site ID. Create the client first, feed its `id` into the site, then feed the site's `id` into the user. Trying to create a user before its site exists fails.

Why does the Name field have a different key depending on what I create?

Its internal name changes per resource — `clientName`, `siteName` or `userName` in a JSON configuration — while inside Update Fields it is plain `name`. Copy the key shown for the resource you selected rather than assuming.

Why is my ticket sitting unactioned?

Some ticket types require approval. Types whose names contain Request, Onboarding or Offboarding route into an approval flow, so the ticket exists but waits for a decision before progressing.

Which credential does it use?

A HaloPSA API credential. The same credential covers clients, sites, tickets and users, so one setup serves every operation on the node.

Build with the HaloPSA node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need HaloPSA API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.