---
canonical_url: "https://docs.composio.dev/toolkits/halopsa"
markdown_url: "https://docs.composio.dev/toolkits/halopsa.md"
product: "platform"
version: null
last_updated: null
---

# HaloPSA

Create, inspect, list, and delete HaloPSA tickets, with customer, site, user, agent, asset, and ticket-routing lookups.

- **Category:** customer support
- **Auth:** OAUTH2
- **Composio-managed OAuth available?** No
- **Tools:** 85
- **Triggers:** 0
- **Slug:** `HALOPSA`
- **Version:** 00000000_00

## Tools

### Create Ticket

**Slug:** `HALOPSA_CREATE_TICKET`

Create one HaloPSA ticket from a summary and optional details and routing IDs; sends the provider-required one-item array body.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `details` | string | No | Detailed plain-text description of the issue or request. |
| `site_id` | integer | No | Site ID from List Sites. |
| `summary` | string | Yes | Short ticket subject or summary. |
| `team_id` | integer | No | Team ID from List Teams. |
| `user_id` | integer | No | End-user ID from List Users. |
| `agent_id` | integer | No | Assigned agent ID from List Agents. |
| `customer_id` | integer | No | Customer ID from List Customers. |
| `priority_id` | integer | No | Numeric priorityid from List Priorities, not that record's UUID id. |
| `ticket_type_id` | integer | No | Ticket type ID from List Ticket Types; omit to use the tenant default. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Agent

**Slug:** `HALOPSA_DELETE_AGENT`

Request deletion of one HaloPSA agent by numeric ID. Use only for an agent that is confirmed safe to remove; this action does not create or verify a disposable replacement.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent_id` | integer | Yes | Numeric ID of the HaloPSA agent to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Appointment

**Slug:** `HALOPSA_DELETE_APPOINTMENT`

Delete one HaloPSA appointment by numeric ID. HaloPSA also deletes its linked Exchange event unless ignore_exchange_delete is true.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | Numeric ID of the appointment to delete. |
| `ignore_exchange_delete` | boolean | No | Delete in HaloPSA without also deleting the linked Exchange event. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Asset

**Slug:** `HALOPSA_DELETE_ASSET`

Delete one HaloPSA asset by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset_id` | integer | Yes | Numeric ID of the asset to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Attachment

**Slug:** `HALOPSA_DELETE_ATTACHMENT`

Delete one HaloPSA attachment by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `attachment_id` | integer | Yes | Numeric ID of the attachment to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Client Contract

**Slug:** `HALOPSA_DELETE_CLIENT_CONTRACT`

Delete one HaloPSA client contract by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | integer | Yes | Numeric ID of the client contract to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Customer

**Slug:** `HALOPSA_DELETE_CUSTOMER`

Delete one HaloPSA customer by numeric ID. Success is reported only after HaloPSA returns the endpoint's documented HTTP 200 status.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | integer | Yes | Numeric ID of the customer to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Invoice

**Slug:** `HALOPSA_DELETE_INVOICE`

Delete one HaloPSA invoice by numeric ID. Set bypass_accounts_sync to true to delete it in HaloPSA without synchronizing the deletion to the connected accounts system.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | integer | Yes | Numeric ID of the invoice to delete. |
| `bypass_accounts_sync` | boolean | No | Delete without synchronizing the deletion to the connected accounts system. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Item

**Slug:** `HALOPSA_DELETE_ITEM`

Delete one HaloPSA inventory or service item by numeric ID. Use only for an item that is confirmed safe to remove.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | integer | Yes | Numeric ID of the HaloPSA item to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Knowledge Base Article

**Slug:** `HALOPSA_DELETE_KNOWLEDGE_BASE_ARTICLE`

Delete one HaloPSA knowledge-base article by numeric ID. Use only for an article that is confirmed safe to remove.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `article_id` | integer | Yes | Numeric ID of the HaloPSA knowledge-base article to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Opportunity

**Slug:** `HALOPSA_DELETE_OPPORTUNITY`

Delete one HaloPSA sales opportunity by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `reason` | string | No | Reason for deleting the opportunity. |
| `opportunity_id` | integer | Yes | Numeric ID of the HaloPSA opportunity to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Project

**Slug:** `HALOPSA_DELETE_PROJECT`

Delete one HaloPSA project by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `reason` | string | No | Reason for deleting the project. |
| `project_id` | integer | Yes | Numeric ID of the project to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Quotation

**Slug:** `HALOPSA_DELETE_QUOTATION`

Delete one HaloPSA quotation by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `quotation_id` | integer | Yes | Numeric ID of the HaloPSA quotation to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Report

**Slug:** `HALOPSA_DELETE_REPORT`

Delete one HaloPSA report definition by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `report_id` | integer | Yes | Numeric ID of the report definition to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Site

**Slug:** `HALOPSA_DELETE_SITE`

Delete one HaloPSA customer site by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `site_id` | integer | Yes | Numeric ID of the site to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Status

**Slug:** `HALOPSA_DELETE_STATUS`

Delete one HaloPSA ticket-status configuration record by numeric ID. Use only for a status that is confirmed safe to remove.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status_id` | integer | Yes | Numeric ID of the HaloPSA ticket status to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Supplier

**Slug:** `HALOPSA_DELETE_SUPPLIER`

Delete one HaloPSA supplier by numeric ID. Use only for a supplier that is confirmed safe to remove.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `supplier_id` | integer | Yes | Numeric ID of the HaloPSA supplier to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Team

**Slug:** `HALOPSA_DELETE_TEAM`

Delete one HaloPSA team by numeric ID. This changes tenant-level team configuration.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `team_id` | integer | Yes | Numeric ID of the HaloPSA team to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Ticket

**Slug:** `HALOPSA_DELETE_TICKET`

Delete one HaloPSA ticket by numeric ID, optionally recording a reason. The ticket is removed from active ticket results.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `reason` | string | No | Optional reason to record for deleting the ticket. |
| `ticket_id` | integer | Yes | Numeric ID of the ticket to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Ticket Action

**Slug:** `HALOPSA_DELETE_TICKET_ACTION`

Delete one HaloPSA ticket action by numeric action ID and its parent ticket ID. HaloPSA may reject deletion for protected action types; the provider's reason is returned.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `action_id` | integer | Yes | Numeric ID of the ticket action to delete. |
| `ticket_id` | integer | Yes | Numeric ID of the ticket that contains the action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete Ticket Type

**Slug:** `HALOPSA_DELETE_TICKET_TYPE`

Delete one HaloPSA ticket-type configuration record by numeric ID. This does not create or verify a disposable replacement.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ticket_type_id` | integer | Yes | Numeric ID of the HaloPSA ticket type to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Delete User

**Slug:** `HALOPSA_DELETE_USER`

Delete one HaloPSA end user by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `user_id` | integer | Yes | Numeric ID of the HaloPSA end user to delete. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Agent

**Slug:** `HALOPSA_GET_AGENT`

Return one HaloPSA agent by numeric ID. Optional flags can request expanded configuration, signature, holiday-allowance, cache, or client-context data; the response preserves additional provider fields.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `agent_id` | integer | Yes | Numeric ID of the HaloPSA agent to return. |
| `load_cache` | boolean | No | Use HaloPSA's cached agent data when available. |
| `agent_config` | boolean | No | Request HaloPSA's agent-configuration projection. |
| `include_details` | boolean | No | Include extra agent objects in the response. |
| `client_id_override` | string | No | HaloPSA client ID override value for the agent lookup. |
| `include_holiday_allowance` | boolean | No | Request the agent's holiday allowance fields from HaloPSA. |
| `include_html_designer_signature` | boolean | No | Request the agent's HTML designer signature from HaloPSA. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Appointment

**Slug:** `HALOPSA_GET_APPOINTMENT`

Return one HaloPSA appointment by numeric ID, optionally with extra detail objects.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `appointment_id` | integer | Yes | Numeric HaloPSA appointment ID. |
| `include_details` | boolean | No | Include extra appointment objects in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Asset

**Slug:** `HALOPSA_GET_ASSET`

Return one HaloPSA asset by numeric ID, optionally including activity, allowed statuses, details, diagram data, and hierarchy data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `asset_id` | integer | Yes | Numeric HaloPSA asset ID. |
| `asset_type_id` | integer | No | Asset type ID used to resolve type-specific fields. |
| `include_details` | boolean | No | Include additional asset detail objects. |
| `include_activity` | boolean | No | Include activity details in the response. |
| `include_hierarchy` | boolean | No | Include asset hierarchy details. |
| `include_diagram_details` | boolean | No | Include asset diagram details. |
| `include_allowed_statuses` | boolean | No | Include the asset's allowed statuses. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Attachment

**Slug:** `HALOPSA_GET_ATTACHMENT`

Download one HaloPSA attachment by numeric ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `attachment_id` | integer | Yes | Numeric HaloPSA attachment ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Client Contract

**Slug:** `HALOPSA_GET_CLIENT_CONTRACT`

Return one HaloPSA client contract by numeric ID, with optional expanded billing, asset, user, schedule, and period details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `contract_id` | integer | Yes | Numeric HaloPSA client contract ID. |
| `include_details` | boolean | No | Include expanded contract objects and billing details. |
| `include_periods` | boolean | No | Include contract and pre-pay period details. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Current Agent

**Slug:** `HALOPSA_GET_CURRENT_AGENT`

Return a compact identity for the HaloPSA agent authorized by the current connection, without claims or access-control records.

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Customer

**Slug:** `HALOPSA_GET_CUSTOMER`

Return one HaloPSA customer by numeric ID, with optional expanded, activity, ticket-type, period, and pre-pay data.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `domain` | string | No | Filter customer permissions by domain; HaloPSA documents 'opps' for opportunities. |
| `customer_id` | integer | Yes | Numeric HaloPSA customer ID. |
| `include_prepay` | boolean | No | Include pre-pay information. |
| `ticket_type_id` | integer | No | Ticket type ID used when resolving customer details. |
| `include_details` | boolean | No | Include expanded customer objects. |
| `include_periods` | boolean | No | Include pre-pay periods. |
| `include_activity` | boolean | No | Include customer ticket activity. |
| `get_available_ticket_types` | boolean | No | Include ticket types that the customer can log. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Invoice

**Slug:** `HALOPSA_GET_INVOICE`

Return one HaloPSA invoice by numeric ID, optionally with extra detail objects.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `invoice_id` | integer | Yes | Numeric HaloPSA invoice ID. |
| `include_details` | boolean | No | Include extra invoice objects in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Item

**Slug:** `HALOPSA_GET_ITEM`

Return one HaloPSA inventory or service item by numeric ID, optionally with expanded details and tenant-specific accounting data; additional provider fields are preserved.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `item_id` | integer | Yes | Numeric ID of the HaloPSA item to return. |
| `dbc_company_id` | string | No | Resolve accounting data for this Business Central company. |
| `xero_tenant_id` | string | No | Resolve accounting data for this Xero tenant. |
| `include_details` | boolean | No | Include expanded item details. |
| `kashflow_tenant_id` | integer | No | Resolve accounting data for this KashFlow tenant. |
| `quickbooks_company_id` | string | No | Resolve accounting data for this QuickBooks company. |
| `sage_business_cloud_tenant_id` | integer | No | Resolve data for this Sage Business Cloud tenant. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Knowledge Base Article

**Slug:** `HALOPSA_GET_KNOWLEDGE_BASE_ARTICLE`

Return one HaloPSA knowledge-base article by numeric ID, optionally with expanded details and language or organisation context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `article_id` | integer | Yes | Numeric ID of the HaloPSA knowledge-base article to return. |
| `language_code` | string | No | Return content for this language code. |
| `include_details` | boolean | No | Include expanded article objects. |
| `organisation_id` | integer | No | Return the article in this organisation context. |
| `language_override` | string | No | Override the language used for returned content. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Opportunity

**Slug:** `HALOPSA_GET_OPPORTUNITY`

Return one HaloPSA sales opportunity by numeric ID, optionally with extra provider detail objects.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `includedetails` | boolean | No | Include extra opportunity objects in the response. |
| `opportunity_id` | integer | Yes | Numeric HaloPSA opportunity ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Project

**Slug:** `HALOPSA_GET_PROJECT`

Return one HaloPSA project by numeric ID, optionally with expanded details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `project_id` | integer | Yes | Numeric HaloPSA project ID. |
| `includedetails` | boolean | No | Include expanded project objects in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Quotation

**Slug:** `HALOPSA_GET_QUOTATION`

Return one HaloPSA quotation by numeric ID, optionally with expanded details or portal-view context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `quotation_id` | integer | Yes | Numeric HaloPSA quotation ID. |
| `is_portal_view` | boolean | No | Return the quotation using portal-view context. |
| `include_details` | boolean | No | Include expanded quotation details. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Report

**Slug:** `HALOPSA_GET_REPORT`

Return one HaloPSA report definition by numeric ID. Optionally include definition details or load report data with the documented report context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `client_id` | integer | No | Customer ID used when loading the report. |
| `report_id` | integer | Yes | Numeric HaloPSA report ID. |
| `invoice_id` | integer | No | Invoice ID used as report context. |
| `client_name` | string | No | Customer name used when loading the report. |
| `load_report` | boolean | No | Execute and include the report data. |
| `dashboard_id` | integer | No | Dashboard ID used when loading the report. |
| `include_details` | boolean | No | Include extra report definition objects. |
| `reporting_period` | integer | No | Reporting period ID used when loading the report. |
| `get_composite_token` | boolean | No | Include a composite report token. |
| `report_access_token` | string | No | Provider-issued access token for a published report. |
| `dashboard_published_id` | string | No | Published dashboard identifier used when loading the report. |
| `dont_load_system_report` | boolean | No | Do not load the associated system report. |
| `reporting_period_end_date` | string | No | Reporting period end date used by the report. |
| `reporting_period_start_date` | string | No | Reporting period start date used by the report. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Site

**Slug:** `HALOPSA_GET_SITE`

Return one HaloPSA customer site by numeric ID, with optional customer, permission, activity, detail, setup, and ticket-type context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `domain` | string | No | Filter site permissions by domain; HaloPSA documents 'opps' for opportunities. |
| `site_id` | integer | Yes | Numeric HaloPSA site ID. |
| `is_setup` | boolean | No | Resolve the site in HaloPSA setup context. |
| `ticket_type_id` | integer | No | Ticket type ID used to resolve site details. |
| `client_override` | integer | No | Customer ID used to resolve the site. |
| `include_details` | boolean | No | Include expanded site objects in the response. |
| `include_activity` | boolean | No | Include site ticket activity in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Status

**Slug:** `HALOPSA_GET_STATUS`

Return one HaloPSA ticket-status configuration record by numeric ID, optionally including its detailed configuration.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `status_id` | integer | Yes | Numeric ID of the HaloPSA ticket status to return. |
| `include_details` | boolean | No | Include detailed status configuration fields. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Supplier

**Slug:** `HALOPSA_GET_SUPPLIER`

Return one HaloPSA supplier by numeric ID, optionally including expanded details; additional provider fields are preserved.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `supplier_id` | integer | Yes | Numeric ID of the HaloPSA supplier to return. |
| `include_details` | boolean | No | Include expanded supplier details. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Team

**Slug:** `HALOPSA_GET_TEAM`

Return one HaloPSA team by numeric ID, optionally including agent details and expanded team objects.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `team_id` | integer | Yes | Numeric HaloPSA team ID. |
| `include_agents` | boolean | No | Include agent details in the response. |
| `include_details` | boolean | No | Include extra team objects in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Ticket

**Slug:** `HALOPSA_GET_TICKET`

Return one HaloPSA ticket by numeric ID, with core assignment and classification fields and optional expanded details and most recent action.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ticket_id` | integer | Yes | Numeric HaloPSA ticket ID. |
| `include_details` | boolean | No | Include the ticket's expanded detail objects when available. |
| `include_last_action` | boolean | No | Include the most recent ticket action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Ticket Action

**Slug:** `HALOPSA_GET_TICKET_ACTION`

Get one HaloPSA ticket action by numeric action ID, optionally providing its ticket ID and requesting expanded details.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `action_id` | integer | Yes | Numeric action ID within its HaloPSA ticket. |
| `ticket_id` | integer | No | Ticket ID that contains the action; use it when action IDs are ticket-local. |
| `include_details` | boolean | No | Include extra action objects in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get Ticket Type

**Slug:** `HALOPSA_GET_TICKET_TYPE`

Return one HaloPSA ticket type by numeric ID. Optional flags select the documented configuration, detail, knowledge-base, team-restriction, survey, new-ticket, and ticket-context representations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `debug` | boolean | No | Include HaloPSA debug information in the response. |
| `ticket_id` | integer | No | Resolve the ticket type in the context of this ticket ID. |
| `new_ticket` | boolean | No | Request configuration for a new ticket. |
| `can_edit_only` | boolean | No | Filter by ticket types that can be edited. |
| `detail_screen` | boolean | No | Request the detail-screen representation. |
| `survey_fields` | boolean | No | Include survey fields. |
| `include_config` | boolean | No | Include ticket-type configuration data. |
| `ticket_type_id` | integer | Yes | Numeric ID of the HaloPSA ticket type to return. |
| `can_create_only` | boolean | No | Filter by ticket types that can be created. |
| `include_details` | boolean | No | Include extra ticket-type objects. |
| `include_kb_info` | boolean | No | Include knowledge-base information. |
| `include_team_restrictions` | boolean | No | Include team restrictions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Get User

**Slug:** `HALOPSA_GET_USER`

Return one HaloPSA end user by numeric ID, with optional customer, site, ticket-type, opportunity, supplier, activity, billing, asset, and detail context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `domain` | string | No | Filter site permissions by domain; HaloPSA documents 'opps' for opportunities. |
| `site_id` | integer | No | Filter by the specified site ID. |
| `user_id` | integer | Yes | Numeric HaloPSA end-user ID. |
| `is_setup` | boolean | No | Resolve the user in HaloPSA setup context. |
| `username` | string | No | Filter by the specified username. |
| `customer_id` | integer | No | Filter by the specified customer ID. |
| `supplier_id` | integer | No | Filter by the specified supplier ID. |
| `site_override` | integer | No | Override the site context used to resolve the user. |
| `include_popups` | boolean | No | Include customer pop-up records in the response. |
| `opportunity_id` | integer | No | Filter by an opportunity assigned to the user. |
| `ticket_type_id` | integer | No | Ticket type ID used as context when resolving user details and permissions. |
| `client_override` | integer | No | Override the customer context used to resolve the user. |
| `include_details` | boolean | No | Include expanded user objects in the response. |
| `include_activity` | boolean | No | Include the user's ticket activity in the response. |
| `include_user_assets` | boolean | No | Include assets assigned to the user. |
| `include_billing_info` | boolean | No | Include billing information in the response. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Agents

**Slug:** `HALOPSA_LIST_AGENTS`

Return compact HaloPSA agent records for assignment lookup, optionally filtered by name, email address, telephone number, or team ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `search` | string | No | Filter agents by matching name, email address, or telephone number. |
| `team_id` | integer | No | Return agents belonging to this team ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Appointments

**Slug:** `HALOPSA_LIST_APPOINTMENTS`

Return one page of HaloPSA appointments, optionally filtered by customer, ticket, date range, or search text.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Return appointments matching this search text. |
| `end_date` | string | No | Return appointments whose end date is after this value. |
| `client_id` | integer | No | Return appointments assigned to this customer ID. |
| `page_size` | integer | No | Maximum appointments in this page (1-100). |
| `ticket_id` | integer | No | Return appointments assigned to this ticket ID. |
| `start_date` | string | No | Return appointments whose start date is after this value. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Assets

**Slug:** `HALOPSA_LIST_ASSETS`

Return one page of HaloPSA assets, optionally filtered by customer, site, user, asset type, search text, and active state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter assets by HaloPSA's asset search. |
| `site_id` | integer | No | Return assets belonging to this site ID. |
| `user_id` | integer | No | Return assets assigned to this end-user ID. |
| `page_size` | integer | No | Maximum assets in this page (1-100). |
| `customer_id` | integer | No | Return assets belonging to this customer ID. |
| `asset_type_id` | integer | No | Return assets of this asset type ID. |
| `include_inactive` | boolean | No | Include inactive assets. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Attachments

**Slug:** `HALOPSA_LIST_ATTACHMENTS`

List HaloPSA attachment metadata, optionally for one ticket.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ticket_id` | integer | No | Return attachments belonging to this numeric ticket ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Client Contracts

**Slug:** `HALOPSA_LIST_CLIENT_CONTRACTS`

Return one page of HaloPSA client contracts, optionally filtered by customer, site, search text, and active state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter client contracts by matching search text. |
| `site_id` | integer | No | Return contracts associated with this site ID. |
| `page_size` | integer | No | Maximum contracts in this page (1-100). |
| `customer_id` | integer | No | Return contracts belonging to this customer ID. |
| `include_inactive` | boolean | No | Include inactive client contracts. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Customers

**Slug:** `HALOPSA_LIST_CUSTOMERS`

Return one page of HaloPSA customers, optionally filtered by name and active state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter customers by a matching name or search text. |
| `page_size` | integer | No | Maximum customers in this page (1-100). |
| `include_inactive` | boolean | No | Include inactive customers. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Invoices

**Slug:** `HALOPSA_LIST_INVOICES`

Return one page of HaloPSA invoices, optionally filtered by date, customer, site, ticket, user, or search text.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter invoices by HaloPSA's invoice search. |
| `site_id` | integer | No | Return invoices for this site ID. |
| `user_id` | integer | No | Return invoices for this user ID. |
| `end_date` | string | No | Return invoices before this date, using HaloPSA's date filter. |
| `client_id` | integer | No | Return invoices for this customer ID. |
| `page_size` | integer | No | Maximum invoices in this page (1-100). |
| `ticket_id` | integer | No | Return invoices assigned to this ticket ID. |
| `start_date` | string | No | Return invoices after this date, using HaloPSA's date filter. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Items

**Slug:** `HALOPSA_LIST_ITEMS`

Return one page of HaloPSA inventory and service items with the provider's documented status, asset, supplier, accounting, stock, search, and ordering filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | General item search text; use this search field by default. |
| `page_size` | integer | No | Maximum items in this page (1-100). |
| `asset_types` | string | No | Comma-separated asset type IDs. |
| `supplier_id` | integer | No | Filter by supplier ID. |
| `asset_groups` | string | No | Comma-separated asset group IDs. |
| `asset_group_id` | integer | No | Filter by asset group ID. |
| `dbc_company_id` | string | No | Filter by Dynamics Business Central company ID. |
| `exact_division` | integer | No | Filter by exact division ID. |
| `include_active` | boolean | No | Include active items. |
| `recurring_only` | boolean | No | Return only recurring items. |
| `xero_tenant_id` | string | No | Filter by Xero tenant ID. |
| `active_inactive` | string ("true,false" | "true,true" | "false,true" | "false,false") | No | Two comma-separated booleans: include active items first, then include inactive items. For example, 'true,false' returns active items only. |
| `advanced_search` | string | No | HaloPSA advanced item search expression. |
| `item_service_id` | integer | No | Filter by item service ID. |
| `maximum_results` | integer | No | Provider result-count limit applied before pagination. This is distinct from page_size, which controls how many matching items are returned per page. |
| `include_inactive` | boolean | No | Include inactive items. |
| `secondary_search` | string | No | Second provider search input. HaloPSA publishes no semantic distinction from search, so use it only when a tenant workflow requires both clauses. |
| `exclude_recurring` | boolean | No | Exclude recurring items. |
| `fifth_order_field` | string | No | Fifth provider field to sort by; paired with fifth_order_descending. |
| `show_not_in_stock` | boolean | No | Include items that are not in stock. |
| `stock_location_id` | integer | No | Filter by stock location ID. |
| `third_order_field` | string | No | Third provider field to sort by; paired with third_order_descending. |
| `fourth_order_field` | string | No | Fourth provider field to sort by; paired with fourth_order_descending. |
| `kashflow_tenant_id` | integer | No | Filter by KashFlow tenant ID. |
| `primary_order_field` | string | No | First provider field to sort by; paired with primary_order_descending. |
| `include_custom_fields` | string | No | Comma-separated custom field IDs to include. |
| `quickbooks_company_id` | string | No | Filter by QuickBooks Online company ID. |
| `quickbooks_items_only` | boolean | No | Return only QuickBooks items. |
| `secondary_order_field` | string | No | Second provider field to sort by; paired with secondary_order_descending. |
| `autotask_service_items` | boolean | No | Return only Autotask service items. |
| `fifth_order_descending` | boolean | No | Sort fifth_order_field descending when true, ascending when false. |
| `item_supplier_currency` | integer | No | Return prices in this supplier currency ID. |
| `third_order_descending` | boolean | No | Sort third_order_field descending when true, ascending when false. |
| `fourth_order_descending` | boolean | No | Sort fourth_order_field descending when true, ascending when false. |
| `item_supplier_client_id` | integer | No | Filter by supplier customer ID. |
| `primary_order_descending` | boolean | No | Sort primary_order_field descending when true, ascending when false. |
| `secondary_order_descending` | boolean | No | Sort secondary_order_field descending when true, ascending when false. |
| `sage_business_cloud_tenant_id` | integer | No | Filter by Sage Business Cloud tenant ID. |
| `item_service_request_details_id` | integer | No | Filter by item service request details ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Knowledge Base Articles

**Slug:** `HALOPSA_LIST_KNOWLEDGE_BASE_ARTICLES`

Return one page of HaloPSA knowledge-base articles using the provider's documented status, access, relationship, language, search, and ordering filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `key` | string | No | Filter by knowledge-base key. |
| `count` | integer | No | Provider-defined maximum number of articles to return. |
| `order` | string | No | First provider field to sort by; paired with order_descending. |
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter articles by matching search text. |
| `order_2` | string | No | Second provider field to sort by; paired with order_descending_2. |
| `order_3` | string | No | Third provider field to sort by; paired with order_descending_3. |
| `order_4` | string | No | Fourth provider field to sort by; paired with order_descending_4. |
| `order_5` | string | No | Fifth provider field to sort by; paired with order_descending_5. |
| `site_id` | integer | No | Filter articles by site ID. |
| `client_id` | integer | No | Filter articles by customer ID. |
| `device_id` | integer | No | Filter articles by device ID. |
| `faq_lists` | string | No | Comma-separated numeric FAQ-list IDs to include. |
| `page_size` | integer | No | Maximum articles in this page (1-100). |
| `related_to` | integer | No | Filter by a related knowledge-base article ID. |
| `article_type` | string | No | Comma-separated provider article-type selectors. HaloPSA documents the format but does not publish a fixed value vocabulary. |
| `needs_review` | string | No | Provider selector for articles past their next review date. HaloPSA documents this as a string but does not publish accepted values. |
| `language_code` | string | No | Return content for this language code. |
| `include_active` | boolean | No | Include active articles. |
| `active_inactive` | string ("true,false" | "true,true" | "false,true" | "false,false") | No | Two comma-separated booleans: include active articles first, then include inactive articles. For example, 'true,false' returns active articles only. |
| `advanced_search` | string | No | Provider-defined advanced knowledge-base search. |
| `article_type_id` | integer | No | Filter by numeric knowledge-base article type. |
| `organisation_id` | integer | No | Filter articles by organisation ID. |
| `include_inactive` | boolean | No | Include inactive articles. |
| `order_descending` | boolean | No | Sort order descending when true, ascending when false. |
| `language_override` | string | No | Override the language used for returned content. |
| `related_to_ticket` | integer | No | Filter by a related ticket ID. |
| `order_descending_2` | boolean | No | Sort order_2 descending when true, ascending when false. |
| `order_descending_3` | boolean | No | Sort order_3 descending when true, ascending when false. |
| `order_descending_4` | boolean | No | Sort order_4 descending when true, ascending when false. |
| `order_descending_5` | boolean | No | Sort order_5 descending when true, ascending when false. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Opportunities

**Slug:** `HALOPSA_LIST_OPPORTUNITIES`

Return one page of HaloPSA sales opportunities, optionally filtered by customer, assignment, status, date range, or search text.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter opportunities using HaloPSA's general search. |
| `enddate` | string | No | End of the HaloPSA date-search range. |
| `site_id` | integer | No | Return opportunities for this site ID. |
| `user_id` | integer | No | Return opportunities for this end-user ID. |
| `agent_id` | integer | No | Return opportunities assigned to this agent ID. |
| `client_id` | integer | No | Return opportunities for this customer ID. |
| `page_size` | integer | No | Maximum opportunities in this page (1-100). |
| `startdate` | string | No | Start of the HaloPSA date-search range. |
| `status_id` | integer | No | Return opportunities in this status. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Priorities

**Slug:** `HALOPSA_LIST_PRIORITIES`

Return HaloPSA policy-priority mappings used to classify tickets, optionally filtered by SLA policy ID.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `sla_id` | integer | No | Return priorities for this SLA policy ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Projects

**Slug:** `HALOPSA_LIST_PROJECTS`

Return one page of HaloPSA projects. HaloPSA represents projects as ticket-like records in a tickets array.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter projects using HaloPSA's general ticket search. |
| `enddate` | string | No | End of the date range used by HaloPSA's date search. |
| `site_id` | integer | No | Return projects for this site ID. |
| `user_id` | integer | No | Return projects for this end-user ID. |
| `agent_id` | integer | No | Return projects assigned to this agent ID. |
| `client_id` | integer | No | Return projects for this customer ID. |
| `page_size` | integer | No | Maximum projects in this page (1-100). |
| `startdate` | string | No | Start of the date range used by HaloPSA's date search. |
| `status_id` | integer | No | Return projects in this status. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Quotations

**Slug:** `HALOPSA_LIST_QUOTATIONS`

Return HaloPSA quotations with customer, state, approval, processing, text, attachment, ordering, and page filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `open` | boolean | No | Filter by open state. |
| `closed` | boolean | No | Filter by closed state. |
| `search` | string | No | Search quotation text. |
| `site_id` | integer | No | Filter by numeric site ID. |
| `user_id` | integer | No | Filter by numeric user ID. |
| `page_size` | integer | No | Number of quotations requested in the provider page. |
| `processed` | boolean | No | Filter by processed state. |
| `ticket_id` | integer | No | Filter by numeric ticket ID. |
| `customer_id` | integer | No | Filter by numeric customer ID. |
| `page_number` | integer | No | One-based quotation page number. |
| `count_filter` | integer | No | HaloPSA count selector. The provider does not document its exact filtering semantics. |
| `include_lines` | boolean | No | Whether to include quotation line items in each result. |
| `customer_scope` | integer | No | HaloPSA customer-scope selector for the current customer versus all customers. |
| `use_pagination` | boolean | No | Whether HaloPSA should return its page metadata and quotation envelope. |
| `fifth_sort_field` | string | No | Quotation field used for the fifth sorting level. |
| `needs_processing` | boolean | No | Filter by whether quotations need processing. |
| `quotation_status` | string | No | Filter by HaloPSA quotation status value. |
| `awaiting_approval` | boolean | No | Filter by whether quotations await approval. |
| `fourth_sort_field` | string | No | Quotation field used for the fourth sorting level. |
| `primary_sort_field` | string | No | Quotation field used for primary sorting. |
| `tertiary_sort_field` | string | No | Quotation field used to break secondary-sort ties. |
| `attachment_file_type` | string | No | Return quotations containing an attachment of this file type. |
| `secondary_sort_field` | string | No | Quotation field used to break primary-sort ties. |
| `fifth_sort_descending` | boolean | No | Sort the fifth field in descending order. |
| `fourth_sort_descending` | boolean | No | Sort the fourth field in descending order. |
| `primary_sort_descending` | boolean | No | Sort the primary field in descending order. |
| `tertiary_sort_descending` | boolean | No | Sort the tertiary field in descending order. |
| `secondary_sort_descending` | boolean | No | Sort the secondary field in descending order. |
| `current_user_approvals_only` | boolean | No | Return quotations awaiting the current user's approval. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Reports

**Slug:** `HALOPSA_LIST_REPORTS`

Return one page of HaloPSA report definitions with the provider's documented access, chart, customer, publication, ordering, group, search, and type filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | integer | No | Provider-defined maximum number of reports to return. |
| `order` | string | No | Primary provider field used to order reports. |
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter reports by matching search text. |
| `order_2` | string | No | Secondary provider field used to order reports. |
| `order_3` | string | No | Third provider field used to order reports. |
| `order_4` | string | No | Fourth provider field used to order reports. |
| `order_5` | string | No | Fifth provider field used to order reports. |
| `page_size` | integer | No | Maximum reports in this page (1-100). |
| `chart_only` | boolean | No | Return only reports that include charts. |
| `client_name` | string | No | Filter reports by customer name. |
| `report_type` | integer | No | Filter reports by HaloPSA report type ID. |
| `report_group_id` | integer | No | Filter reports by report group ID. |
| `order_descending` | boolean | No | Sort the primary order field descending. |
| `agent_restriction` | integer | No | Filter reports by HaloPSA agent restriction ID. |
| `include_published` | boolean | No | Include published reports. |
| `order_descending_2` | boolean | No | Sort the secondary order field descending. |
| `order_descending_3` | boolean | No | Sort the third order field descending. |
| `order_descending_4` | boolean | No | Sort the fourth order field descending. |
| `order_descending_5` | boolean | No | Sort the fifth order field descending. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Sites

**Slug:** `HALOPSA_LIST_SITES`

Return one page of HaloPSA customer sites, optionally filtered by customer, name, and active state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter sites by matching search text. |
| `page_size` | integer | No | Maximum sites in this page (1-100). |
| `customer_id` | integer | No | Return sites belonging to this customer ID. |
| `include_inactive` | boolean | No | Include inactive sites. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Statuses

**Slug:** `HALOPSA_LIST_STATUSES`

Return HaloPSA ticket statuses, optionally constrained to a ticket type or a specific ticket's valid context.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `ticket_id` | integer | No | Return statuses relevant to this ticket ID. |
| `exclude_closed` | boolean | No | Exclude closed statuses. |
| `ticket_type_id` | integer | No | Return statuses relevant to this ticket type ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Suppliers

**Slug:** `HALOPSA_LIST_SUPPLIERS`

Return one page of HaloPSA suppliers with the provider's documented status, integration, ordering, search, and top-level filters.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `count` | integer | No | Provider-defined maximum number of suppliers to return. |
| `order` | string | No | Primary provider field used to order suppliers. |
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter suppliers by matching search text. |
| `id_only` | boolean | No | Return only supplier identifiers when supported. |
| `order_2` | string | No | Secondary provider field used to order suppliers. |
| `order_3` | string | No | Third provider field used to order suppliers. |
| `order_4` | string | No | Fourth provider field used to order suppliers. |
| `order_5` | string | No | Fifth provider field used to order suppliers. |
| `page_size` | integer | No | Maximum suppliers in this page (1-100). |
| `top_level_id` | integer | No | Filter suppliers by top-level group ID. |
| `include_active` | boolean | No | Include active suppliers. |
| `xero_tenant_id` | string | No | Filter suppliers by Xero tenant ID. |
| `active_inactive` | string | No | HaloPSA active/inactive selector string. |
| `include_inactive` | boolean | No | Include inactive suppliers. |
| `order_descending` | boolean | No | Sort the primary order field descending. |
| `kashflow_tenant_id` | integer | No | Filter by KashFlow tenant ID. |
| `order_descending_2` | boolean | No | Sort the secondary order field descending. |
| `order_descending_3` | boolean | No | Sort the third order field descending. |
| `order_descending_4` | boolean | No | Sort the fourth order field descending. |
| `order_descending_5` | boolean | No | Sort the fifth order field descending. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Teams

**Slug:** `HALOPSA_LIST_TEAMS`

Return HaloPSA teams available for ticket assignment, optionally limited to the current agent's teams or a department.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `department_id` | integer | No | Return teams in this department ID. |
| `my_teams_only` | boolean | No | Return only teams the current agent belongs to. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Ticket Actions

**Slug:** `HALOPSA_LIST_TICKET_ACTIONS`

List HaloPSA ticket actions, optionally filtering by occurrence date range and whether attachment details are included. Set ticket_id to retrieve actions for a ticket; HaloPSA can return an empty list when it is omitted.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `end_date` | string | No | Return actions that occurred before this ISO 8601 date and time. |
| `ticket_id` | integer | No | Return actions for this ticket ID. |
| `start_date` | string | No | Return actions that occurred after this ISO 8601 date and time. |
| `include_attachments` | boolean | No | Include attachment details in returned actions. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Tickets

**Slug:** `HALOPSA_LIST_TICKETS`

Return one page of HaloPSA tickets, optionally filtered by customer, site, user, status, assigned agent, or text search.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Text to match against tickets using HaloPSA's general ticket search. |
| `site_id` | integer | No | Return tickets for this site ID. |
| `user_id` | integer | No | Return tickets for this end-user ID. |
| `agent_id` | integer | No | Return tickets assigned to this agent ID. |
| `page_size` | integer | No | Maximum tickets in this page (1-100). |
| `status_id` | integer | No | Return tickets in this status. |
| `customer_id` | integer | No | Return tickets for this customer ID. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Ticket Types

**Slug:** `HALOPSA_LIST_TICKET_TYPES`

Return ticket types available for ticket classification, optionally limited to types that agents can create for a customer.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `customer_id` | integer | No | Limit ticket types to those available for this customer ID. |
| `creatable_only` | boolean | No | Return only ticket types the current agent can create. |
| `include_inactive` | boolean | No | Include inactive ticket types. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### List Users

**Slug:** `HALOPSA_LIST_USERS`

Return one page of HaloPSA end users, optionally filtered by customer, site, name, and active state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `cursor` | string | No | Continuation cursor returned by a previous call; omit for the first page. |
| `search` | string | No | Filter users by matching name or search text. |
| `site_id` | integer | No | Return users belonging to this site ID. |
| `page_size` | integer | No | Maximum users in this page (1-100). |
| `customer_id` | integer | No | Return users belonging to this customer ID. |
| `include_inactive` | boolean | No | Include inactive end users. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Agent

**Slug:** `HALOPSA_UPSERT_AGENT`

Create or update HaloPSA agent profiles, team memberships, account enablement, administrator access, working hours, licensing, costs, notifications, and approval settings in one array request.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Agents to create or update. An item with id updates that agent; an item without id creates an agent. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Appointment

**Slug:** `HALOPSA_UPSERT_APPOINTMENT`

Create or update HaloPSA appointments in one array request. Each item with id updates that appointment and each item without id creates one. HaloPSA does not document a universally sufficient minimal create payload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Appointment objects to create or update. An item with id updates that appointment; an item without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Asset

**Slug:** `HALOPSA_UPSERT_ASSET`

Create or update one or more HaloPSA assets. Each item with an id updates that asset; each item without an id creates a new asset.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Assets to create or update. An item with id updates that asset; an item without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Client Contract

**Slug:** `HALOPSA_UPSERT_CLIENT_CONTRACT`

Create or update one or more HaloPSA client contracts. Each item with an id updates that contract; each item without an id creates a contract. Creates require client_id, ref, start_date, end_date, and billingperiod.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Client contracts to create or update. An item with id updates that contract; an item without id creates a contract. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Customer

**Slug:** `HALOPSA_UPSERT_CUSTOMER`

Create or update one or more HaloPSA customers in the endpoint's array body. Each item with id updates that customer; each item without id creates one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Customers to create or update. An item with id updates that customer; an item without id creates a customer. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Invoice

**Slug:** `HALOPSA_UPSERT_INVOICE`

Create or update HaloPSA invoice records and their typed line items. This action does not capture payment, post or email invoices, create credit notes, or trigger accounting-system synchronization.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Invoice records to create or update. A record with id updates that invoice; a record without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Item

**Slug:** `HALOPSA_UPSERT_ITEM`

Create or update HaloPSA inventory and service items in one array request. Each item with id updates that record and each item without id creates one; mixed batches are supported and can alter inventory and accounting state.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Items to create or update. An item with id updates that item; an item without id creates one. HaloPSA may reject operationally incomplete data. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Knowledge Base Article

**Slug:** `HALOPSA_UPSERT_KNOWLEDGE_BASE_ARTICLE`

Create or update one or more HaloPSA knowledge-base articles through POST /KBArticle. Each item with id updates that article; each item without id creates one. HaloPSA documents no universally sufficient create payload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | KBEntry objects to create or update. An item with id updates that article; an item without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Opportunity

**Slug:** `HALOPSA_UPSERT_OPPORTUNITY`

Upsert HaloPSA sales opportunities: each resource item with id updates that record, while each item with id omitted creates a record. HaloPSA does not document a universally sufficient minimal create payload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | HaloPSA Faults objects representing sales opportunities. An item with id updates that opportunity; an item without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Project

**Slug:** `HALOPSA_UPSERT_PROJECT`

Create or update HaloPSA project records, typed milestones, and tags. This action does not close projects, publish articles, send notifications, override record locks, or invoke provider-import and validation workflows.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Project records to create or update. A record with id updates that project; a record without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Quotation

**Slug:** `HALOPSA_UPSERT_QUOTATION`

Create or update HaloPSA quotation records and typed quotation lines. This action does not send quotations, start signing or approval, create sales orders, or invoke external commerce integrations.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Quotation records to create or update. A record with id updates that quotation; a record without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Report

**Slug:** `HALOPSA_UPSERT_REPORT`

Create or update HaloPSA report definitions in one array request. Each item with id updates that report and each item without id creates one; this mutates report definitions and may expose saved SQL or report output.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | AnalyzerProfile report definitions to create or update. An item with id updates that report; an item without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Site

**Slug:** `HALOPSA_UPSERT_SITE`

Create or update one or more HaloPSA customer sites. Each item with an id updates that site; each item without an id creates a site. HaloPSA does not document a universally sufficient minimal create payload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Sites to create or update. An item with id updates that site; an item without id creates a site. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Status

**Slug:** `HALOPSA_UPSERT_STATUS`

Create or update HaloPSA ticket statuses in one array request. Set an item's id to update that exact status, or omit id to create one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Statuses to create or update. Set id to update that exact status; omit id to create a new status. Only supplied fields are sent. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Supplier

**Slug:** `HALOPSA_UPSERT_SUPPLIER`

Create or update one or more HaloPSA suppliers through POST /Supplier. Each item with id updates that supplier; each item without id creates one. HaloPSA does not document a universally sufficient minimal create payload.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Suppliers to create or update. An item with id updates that supplier; an item without id creates one. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Team

**Slug:** `HALOPSA_UPSERT_TEAM`

Create or update HaloPSA teams in one array request. Set an item's id to update that exact team, or omit id to create one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Teams to create or update. Set id to update that exact team; omit id to create a new team. Only supplied fields are sent. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Ticket Action

**Slug:** `HALOPSA_UPSERT_TICKET_ACTION`

Create or update ticket notes and work-log actions, optionally recording time or applying a ticket status, without sending email. Each resource with action_id updates that action; each resource without action_id creates one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Ticket actions to create or update. An item with action_id updates that action; an item without action_id creates an action. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert Ticket Type

**Slug:** `HALOPSA_UPSERT_TICKET_TYPE`

Create or update HaloPSA ticket types in one array request. Set an item's id to update that exact ticket type, or omit id to create one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Ticket types to create or update. Set id to update that exact ticket type; omit id to create a new ticket type. Only supplied fields are sent. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |

### Upsert User

**Slug:** `HALOPSA_UPSERT_USER`

Create or update one or more HaloPSA end-user records without sending welcome email. Each item with an id updates that user; each item without an id creates one.

#### Input Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `resources` | array | Yes | Users to create or update. An item with id updates that user; an item without id creates a user. |

#### Output

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `data` | string | Yes | Data from the action execution |
| `error` | string | No | Error if any occurred during the execution of the action |
| `successful` | boolean | Yes | Whether or not the action execution was successful or not |
