Halopsa
HaloPSA is a versatile PSA platform that optimizes service delivery for MSPs and IT professionals.
HaloPSA is a comprehensive IT service management platform designed to streamline ticket management and incident tracking. The HaloPSA connector for Swimlane Turbine enables seamless integration with HaloPSA, allowing users to automate the creation, updating, and retrieval of tickets. This integration enhances the efficiency of security operations by automating routine tasks, reducing manual effort, and ensuring timely incident response.
Limitations
None to date.
Supported Versions
This connector supports the latest version of the HaloPSA REST API.
Additional Docs
Configuration
Prerequisites
Before you can use the HaloPSA connector for Turbine, you'll need access to the HaloPSA API. This requires the following:
- OAuth 2.0 Password authentication using the following parameters:
- URL: The endpoint for accessing HaloPSA services.
- HaloPSA Username: Your username for HaloPSA account access.
- HaloPSA Password: The password associated with your HaloPSA account.
- Client ID: The client identifier for OAuth 2.0 authentication.
- Scopes: Permissions required for accessing specific resources.
- OAuth 2.0 Client Credentials authentication using the following parameters:
- URL: The endpoint for accessing HaloPSA services.
- Client ID: The client identifier for OAuth 2.0 authentication.
- Client Secret: A secret key used in conjunction with the client ID.
- Scopes: Permissions required for accessing specific resources.
Authentication Methods
To effectively utilize the HaloPSA connector within Swimlane Turbine, ensure you have the following prerequisites:
- OAuth 2.0 Client Credentials for authentication with these parameters:
- URL: Endpoint for HaloPSA API access.
- Client ID: Unique identifier for the application making the request.
- Client Secret: A secret known only to the application and the authorization server.
- Scopes: Permissions the application needs to function correctly.
- OAuth 2.0 Password Credentials for authentication with these parameters:
- URL: Endpoint for HaloPSA API access.
- HaloPSA Username: Your HaloPSA user account name.
- HaloPSA Password: Your HaloPSA user account password.
- Client ID: Unique identifier for the application making the request.
- Scopes: Permissions the application needs to function correctly.
Capabilities
This Connector provides the following capabilities:
- Add or Update Ticket
- Add or Update Attachments
- Delete Ticket by ID
- Get Ticket by ID
- Get Tickets
Add or Update Ticket
Adds or updates one or more tickets. If ID is included then updates, if not included then creates new.
Swimlane record attachments mapped into the ticket attachments field are uploaded via HaloPSA's /api/Attachment endpoint after the ticket is created or updated. You can also pass HaloPSA-shaped objects with filename and Base64 data.
HaloPSA's Documentation for this action can be found here.
Add or Update Attachments
Adds or updates one or more attachments on an existing ticket. Prefer Base64 data with filename and ticket_id, or map a Swimlane record attachment (file + file_name).
HaloPSA's Documentation for this action can be found here.
Delete Ticket by ID
Deletes the ticket and related objects with the specified ID.
HaloPSA's Documentation for this action can be found here.
Get Ticket by ID
Returns a single ticket object.
HaloPSA's Documentation for this action can be found here.
Get Tickets
Returns an object containing the count of tickets, and an array of ticket objects.
HaloPSA's Documentation for this action can be found here.
Additional Documentation
Configurations
HaloPSA Oauth 2.0 Client Credentials
Authenticates using oauth 2.0 client credentials.
Configuration Parameters
Parameter | Description | Type | Required |
|---|---|---|---|
url | A URL to the target host. | string | Required |
tenant_id | The Tenant ID. | string | Optional |
client_id | The client ID | string | Required |
client_secret | The client secret. | string | Required |
scope | Permission scopes for this action. | array | Required |
verify_ssl | Verify SSL certificate | boolean | Optional |
http_proxy | A proxy to route requests through. | string | Optional |
HaloPSA Oauth 2.0 Password Grant
Authenticates using oauth 2.0 client credentials
Configuration Parameters
Parameter | Description | Type | Required |
|---|---|---|---|
url | A URL to the target host. | string | Required |
tenant_id | The Tenant ID. | string | Optional |
oauth2_username | The username for authentication | string | Required |
oauth2_password | The password for authentication | string | Required |
client_id | The client ID | string | Required |
scope | Permission scopes for this action. | array | Required |
verify_ssl | Verify SSL certificate | boolean | Optional |
http_proxy | A proxy to route requests through. | string | Optional |
Actions
Add or Update Attachments
Add or update attachments on a HaloPSA ticket. File content must be Base64 encoded, or pass a Swimlane record attachment for conversion. Include ID to update; omit ID to create.
Endpoint
- URL: /api/Attachment
- Method: POST
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
Output Example
{"status_code":201,"response_headers":{},"reason":"Created","json_body":{}}
Add or Update Ticket
Add or update a ticket in HaloPSA using the provided JSON body, based on the presence of a ticket ID.
Endpoint
- URL: /api/Tickets
- Method: POST
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
Output Example
{"status_code":201,"response_headers":{"Content-Type":"text/html; charset=utf-8","x-hsci-cache-time":"2024-10-21T12:01:22.328Z","Content-Encoding":"gzip","Expires":"Mon, 21 Oct 2024 12:08:57 GMT","Cache-Control":"max-age=0, no-cache, no-store","Pragma":"no-cache","Date":"Mon, 21 Oct 2024 12:08:57 GMT"},"reason":"OK","json_body":{}}
Delete Ticket by ID
Remove a ticket and its related objects from HaloPSA using the provided unique ID.
Endpoint
- URL: /api/Tickets/{{id}}
- Method: DELETE
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
parameters.reason | string | Optional | The reason for Ticket's deletion. |
path_parameters.id | string | Required | The Ticket's ID. |
Input Example
{"parameters":{"reason":"Duplicate ticket."},"path_parameters":{"id":"463"}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
Output Example
{"status_code":200,"response_headers":{"Content-Type":"text/html; charset=utf-8","x-hsci-cache-time":"2024-10-21T12:01:22.328Z","Content-Encoding":"gzip","Expires":"Mon, 21 Oct 2024 12:08:57 GMT","Cache-Control":"max-age=0, no-cache, no-store","Pragma":"no-cache","Date":"Mon, 21 Oct 2024 12:08:57 GMT"},"reason":"OK","json_body":{}}
Get Ticket by ID
Retrieve a specific ticket from HaloPSA using the unique identifier (ID) provided.
Endpoint
- URL: /api/Tickets/{{id}}
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
parameters.includedetails | boolean | Optional | Whether to include extra objects in the response. |
parameters.includelastaction | boolean | Optional | Whether to include the last action in the response. |
parameters.ticketidonly | boolean | Optional | Returns only the ID fields (Ticket ID, SLA ID, Status ID, Client ID and Name and Lastincomingemail date) of the Tickets (Not compatible with Pagination). |
path_parameters.id | number | Required | The Ticket's ID. |
Input Example
{"parameters":{"includedetails":false,"includelastaction":false,"ticketidonly":false},"path_parameters":{"id":3}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
actioncode | number | Output field: actioncode |
id | number | Unique identifier |
dateoccurred | string | Output field: dateoccurred |
status_id | number | Unique identifier |
tickettype_id | number | Unique identifier |
sla_id | number | Unique identifier |
priority_id | number | Unique identifier |
client_id | number | Unique identifier |
timetaken | number | Output field: timetaken |
respondbydate | string | Date value |
responsedate | string | Date value |
responsestartdate | string | Date value |
slaresponsestate | string | Output field: slaresponsestate |
fixbydate | string | Date value |
dateclosed | string | Output field: dateclosed |
excludefromsla | boolean | Output field: excludefromsla |
slaholdtime | number | Time value |
slaactiondate | string | Date value |
slapercused | number | Output field: slapercused |
slatimeleft | number | Output field: slatimeleft |
lastactiondate | string | Date value |
organisation_id | number | Unique identifier |
department_id | number | Unique identifier |
Output Example
{"status_code":200,"response_headers":{"Content-Type":"text/html; charset=utf-8","x-hsci-cache-time":"2024-10-21T12:01:22.328Z","Content-Encoding":"gzip","Expires":"Mon, 21 Oct 2024 12:08:57 GMT","Cache-Control":"max-age=0, no-cache, no-store","Pragma":"no-cache","Date":"Mon, 21 Oct 2024 12:08:57 GMT","Content-Length":"106931","Connection":"keep-alive"},"reason":"OK","json_body":{"actioncode":0,"id":0,"dateoccurred":"2019-08-02T14:35:55.618Z","status_id":0,"tickettype_id":0,"sla_id":0,"priority_...
Get Tickets
Retrieve an array of ticket objects from HaloPSA, offering a summary of existing tickets.
Endpoint
- URL: /api/Tickets
- Method: GET
Input
Argument Name | Type | Required | Description |
|---|---|---|---|
parameters.pageinate | boolean | Optional | Whether to use Pagination in the response. |
parameters.page_size | number | Optional | When using Pagination, the size of the page. Maximum size is 100. |
parameters.page_no | number | Optional | When using Pagination, the page number to return. |
parameters.order | string | Optional | The name of the field to order by. |
parameters.orderdesc | boolean | Optional | Whether to order ascending or descending. |
parameters.ticketidonly | boolean | Optional | Returns only the ID fields (Ticket ID, SLA ID, Status ID, Client ID and Name and Lastincomingemail date) of the Tickets (Not compatible with Pagination). |
parameters.view_id | number | Optional | The ID of the filter profile to filter by. |
parameters.columns_id | number | Optional | The column profile ID. |
parameters.includecolumns | boolean | Optional | Include column details in the response. |
parameters.includeslaactiondate | boolean | Optional | Include the SLA action date in the response. |
parameters.includeslatimer | boolean | Optional | Include SLA timer in the response. |
parameters.includetimetaken | boolean | Optional | Include time taken in the response. |
parameters.includesupplier | boolean | Optional | Include supplier details in the response. |
parameters.includerelease1 | boolean | Optional | Include release 1 details in the response. |
parameters.includerelease2 | boolean | Optional | Include release 2 details in the response. |
parameters.includerelease3 | boolean | Optional | Include release 3 details in the response. |
parameters.includechildids | boolean | Optional | Include child ticket IDs in the response. |
parameters.includenextactivitydate | boolean | Optional | Include nextactivitydate in the response. |
parameters.includefirstresponse | boolean | Optional | Include First Response data in the response. |
parameters.list_id | number | Optional | Filters by the specified list. |
parameters.agent_id | number | Optional | Filters by the specified agent. |
parameters.status_id | number | Optional | Filters by the specified status. |
parameters.requesttype_id | number | Optional | Filters by the specified request type. |
parameters.supplier_id | number | Optional | Filters by the specified supplier. |
parameters.client_id | number | Optional | Filters by the specified client. |
Input Example
{"parameters":{"pageinate":false,"page_size":10,"page_no":10,"order":"","orderdesc":false,"ticketidonly":false,"view_id":10,"columns_id":10,"includecolumns":false,"includeslaactiondate":false,"includeslatimer":false,"includetimetaken":false,"includesupplier":false,"includerelease1":false,"includerelease2":false,"includerelease3":false,"includechildids":false,"includenextactivitydate":false,"includefirstresponse":false,"list_id":10,"agent_id":10,"status_id":10,"requesttype_id":10,"supplier_id":10,"client_id":10,"site":10,"username":"david","user_id":10,"release_id":10,"asset_id":10,"itil_requesttype_id":10,"open_only":false,"closed_only":false,"unlinked_only":false,"contract_id":10,"withattachments":false,"team":[10],"agent":[10],"status":[10],"requesttype":[10],"itil_requesttype":[10],"category_1":[10],"category_2":[10],"category_3":[10],"category_4":[10],"sla":[10],"priority":[10],"products":[10],"flagged":[10],"excludethese":[10],"search":"","searchactions":false,"datesearch":"","startdate":"","enddate":"","search_user_name":"","search_summary":"","search_details":"","search_reportedby":"","search_version":"","search_release1":"","search_release2":"","search_release3":"","search_releasenote":"","search_inventory_number":"","search_oppcontactname":"","search_oppcompanyname":""}}
Output
Parameter | Type | Description |
|---|---|---|
status_code | number | HTTP status code of the response |
reason | string | Response reason phrase |
page_no | number | Output field: page_no |
page_size | number | Output field: page_size |
record_count | number | Count value |
tickets | array | Output field: tickets |
tickets.id | number | Unique identifier |
tickets.dateoccurred | string | Output field: tickets.dateoccurred |
tickets.summary | string | Output field: tickets.summary |
tickets.status_id | number | Unique identifier |
tickets.tickettype_id | number | Unique identifier |
tickets.sla_id | number | Unique identifier |
tickets.priority_id | number | Unique identifier |
tickets.client_id | number | Unique identifier |
tickets.client_name | string | Name of the resource |
tickets.site_id | number | Unique identifier |
tickets.site_name | string | Name of the resource |
tickets.user_name | string | Name of the resource |
tickets.team | string | Output field: tickets.team |
tickets.agent_id | number | Unique identifier |
tickets.agent_name | string | Name of the resource |
tickets.category_1 | string | Output field: tickets.category_1 |
tickets.category_2 | string | Output field: tickets.category_2 |
tickets.category_3 | string | Output field: tickets.category_3 |
tickets.category_4 | string | Output field: tickets.category_4 |
Output Example
{"status_code":200,"response_headers":{"Content-Type":"text/html; charset=utf-8","x-hsci-cache-time":"2024-10-21T12:01:22.328Z","Content-Encoding":"gzip","Expires":"Mon, 21 Oct 2024 12:08:57 GMT","Cache-Control":"max-age=0, no-cache, no-store","Pragma":"no-cache","Date":"Mon, 21 Oct 2024 12:08:57 GMT","Content-Length":"106931","Connection":"keep-alive"},"reason":"OK","json_body":{"page_no":0,"page_size":0,"record_count":0,"tickets":[{}],"columns_id":0,"columns":[{}]}}
Response Headers
Header | Description | Example |
|---|---|---|
Cache-Control | Directives for caching mechanisms | max-age=0, no-cache, no-store |
Connection | HTTP response header: Connection | keep-alive |
Content-Encoding | HTTP response header: Content-Encoding | gzip |
Content-Length | The length of the response body in bytes | 106931 |
Content-Type | The media type of the resource | text/html; charset=utf-8 |
Date | The date and time at which the message was originated | Mon, 21 Oct 2024 12:08:57 GMT |
Expires | The date/time after which the response is considered stale | Mon, 21 Oct 2024 12:08:57 GMT |
Pragma | HTTP response header: Pragma | no-cache |
x-hsci-cache-time | HTTP response header: x-hsci-cache-time | 2024-10-21T12:01:22.328Z |