Skip to main content

Email & Communications Endpoints

Email & Communications


Mail

Endpoints for processing inbound mail from various email providers via the HaloIntegrator.

POST /Mail/Azure

Process an Azure/Microsoft 365 email message. No request body schema documented.

POST /Mail/Integrator/Azure

Process an Azure email message via the integrator. No request body schema documented.

POST /Mail/Integrator/Google

Process a Gmail message via the integrator.

Request Body: GmailMessage

POST /Mail/Integrator/Pop3

Process a POP3 email message via the integrator.

Request Body: Pop3Message

FieldTypeDescription
idstringMessage identifier
haloMailboxIdintegerID of the Halo mailbox
incomingEmailIdintegerID of the incoming email record
mimeMessageMimeMessageThe raw MIME message object

POST /Mail/Integrator/IMAP

Process an IMAP email message via the integrator.

Request Body: IMAPMessage

FieldTypeDescription
idstringMessage identifier
haloMailboxIdintegerID of the Halo mailbox
incomingEmailIdintegerID of the incoming email record
mimeMessageMimeMessageThe raw MIME message object

POST /Mail/ProcessMail

Trigger processing of queued mail items by task ID.

Query Parameters:

NameTypeDescription
task_idintegerID of the mail task to process

Request Body: Array of integers (mail item IDs to process)


Mailbox

Manage mailbox configurations used for inbound and outbound email in HaloPSA.

GET /Mailbox

List of Mailbox. Returns multiple mailbox records. Requires authentication.

Query Parameters:

NameTypeDescription
department_idintegerFilter by department
from_addressesbooleanInclude from-address mailboxes
ignore_defaultbooleanIgnore the default mailbox
organisation_idintegerFilter by organisation
showallbooleanShow all mailboxes including disabled
team_idintegerFilter by team

POST /Mailbox

Create or update mailbox records.

Request Body: Array of Mailbox objects

Key Mailbox fields:

FieldTypeDescription
idintegerMailbox ID
namestringDisplay name
serverstringMail server hostname
usernamestringLogin username
smtpaddressstringSMTP send address
enabledbooleanWhether mailbox is active
typeintegerMailbox type
inbound_methodintegerInbound polling method
azureemailstringAzure/M365 email address
azureappidstringAzure app registration ID
azuretenantstringAzure tenant ID
google_emailstringGoogle Workspace email
tickettype_idintegerDefault ticket type for new tickets
restriction_typeintegerRestriction type for inbound matching
restrictto_org_idintegerRestrict to a specific organisation
restrictto_department_idintegerRestrict to a specific department
restrictto_team_idintegerRestrict to a specific team
smtpserverstringSMTP server hostname
smtpportintegerSMTP port
smtpusetlsbooleanUse TLS for SMTP
usetlsbooleanUse TLS for inbound
dontsendackbooleanSuppress acknowledgement emails
ignore_cc_emailsbooleanIgnore CC recipients
accept_auto_repliesbooleanProcess auto-reply emails
allow_email_hashtagsbooleanParse hashtag commands in email
stopnewticketsviaemailbooleanBlock new ticket creation via email
unmatched_usersintegerAction for unmatched sender users
use_emailaddress_for_new_usersbooleanAuto-create users from email address
newuser_default_siteintegerDefault site for auto-created users
azure_subscribedbooleanWhether Azure webhook subscription is active
azure_subscription_expirydatetimeExpiry date of Azure subscription

GET /Mailbox/{id}

Get one Mailbox. Returns a single mailbox instance. Requires authentication.

Path Parameters: id (integer, required)

Query Parameters:

NameTypeDescription
includedetailsbooleanInclude full configuration details
includeglobalsmtpbooleanInclude global SMTP settings

DELETE /Mailbox/{id}

Delete a mailbox by ID.

Path Parameters: id (integer, required)

GET /Mailbox/{id}/OutlookContacts

Retrieve Outlook contacts associated with a mailbox.

Path Parameters: id (integer, required)


MailboxCredential

Manage credential records associated with mailboxes.

GET /MailboxCredential

List all mailbox credentials.

POST /MailboxCredential

Create or update mailbox credential records.

Request Body: Array of MailboxCredential objects

GET /MailboxCredential/{id}

Get a single mailbox credential by ID.

Path Parameters: id (integer, required)

DELETE /MailboxCredential/{id}

Delete a mailbox credential by ID.

Path Parameters: id (integer, required)


EmailRule

Configure rules for processing inbound emails — match conditions and field extraction.

GET /EmailRule

List of EmailRule. Returns multiple email rule records. Requires authentication.

Query Parameters:

NameTypeDescription
fromaddressstringFilter rules by from-address pattern
typeintegerFilter by rule type

POST /EmailRule

Create or update email rule records.

Request Body: Array of EmailRule objects

Key EmailRule fields:

FieldTypeDescription
idintegerRule ID
namestringRule name
typeintegerRule type
pop3serveridintegerAssociated mailbox ID
subjectstringSubject match pattern
bodystringBody match pattern
fromaddrstringFrom-address match pattern
toaddrstringTo-address match pattern
fromaddrexactbooleanRequire exact from-address match
toaddrexactbooleanRequire exact to-address match
enabledbooleanWhether the rule is active
requesttypeintegerTicket type to create
closestringstringString that triggers ticket close
dontsendacknowledgementbooleanSuppress acknowledgement for matched emails
scan_full_bodybooleanScan entire email body for matches
privateactionsbooleanCreate private actions from matched emails
matchonattachmentbooleanMatch based on attachment name
attachmentnamestringAttachment filename pattern to match
pagerdutybooleanRoute to PagerDuty
splunkoncallbooleanRoute to Splunk On-Call
always_close_alertsbooleanAlways close matching alert tickets
fieldmappingsarrayField extraction mappings (EmailRuleFieldMapping)

GET /EmailRule/{id}

Get one EmailRule. Returns a single email rule instance. Requires authentication.

Path Parameters: id (integer, required)

Query Parameters:

NameTypeDescription
includedetailsbooleanInclude full rule details and mappings

DELETE /EmailRule/{id}

Delete an email rule by ID.

Path Parameters: id (integer, required)


EmailStore

Stored outbound email records — emails queued or sent from HaloPSA.

GET /EmailStore

List all stored email records.

POST /EmailStore

Create or queue email records for sending.

Request Body: Array of EmailStore objects

Key EmailStore fields:

FieldTypeDescription
idintegerRecord ID
refintegerAssociated ticket ID
emailsubjectstringEmail subject
emailbodystringEmail body (plain text)
emailbody_htmlstringEmail body (HTML)
emailtostringTo address(es)
emailccstringCC address(es)
emailbccstringBCC address(es)
dateemaileddatetimeDate the email was sent
mailbox_idintegerSending mailbox ID
org_idintegerAssociated organisation ID
client_idintegerAssociated client ID
site_idintegerAssociated site ID
user_idintegerAssociated user ID
templateidintegerEmail template ID used
replyaddressstringReply-to address
reply_directbooleanWhether reply-to is set directly
invoice_idintegerAssociated invoice ID
quotation_idintegerAssociated quotation ID
purchaseorder_idintegerAssociated purchase order ID
salesorder_idintegerAssociated sales order ID
bulk_user_id_arrayarray[integer]User IDs for bulk send
bulk_ticket_id_arrayarray[integer]Ticket IDs for bulk send
is_stand_alone_emailbooleanWhether this is a standalone (non-ticket) email
attachmentsarrayAttached files (Attachment objects)

GET /EmailStore/{id}

Get one EmailStore record. Requires authentication.

Path Parameters: id (integer, required)

Query Parameters:

NameTypeDescription
includedetailsbooleanInclude full email details

DELETE /EmailStore/{id}

Delete an email store record by ID.

Path Parameters: id (integer, required)


EmailAddressBook

Query the email address book — returns Users that can be addressed via email.

GET /EmailAddressBook

List of Users from the email address book. Requires authentication.

Query Parameters:

NameTypeDescription
searchstringFilter users by name or email
client_idintegerFilter by client
organisation_idintegerFilter by organisation
site_idintegerFilter by site
department_idintegerFilter by department
toplevel_idintegerFilter by top-level grouping
asset_idintegerFilter by assigned asset
contract_idintegerFilter by contract
opp_idintegerFilter by opportunity
supplier_idintegerFilter by supplier
tickettype_idintegerFilter by ticket type
roleintegerFilter by user role
includeactivebooleanInclude active users
includeinactivebooleanInclude inactive users
activeinactivestringComma-separated active/inactive flags
approvers_onlybooleanReturn only approver users
allapproversbooleanInclude all approvers (OR condition)
exclude_agentsbooleanExclude agent users
exclude_generaluserbooleanExclude general users
includeserviceaccountbooleanInclude service account users
includenonserviceaccountbooleanInclude non-service account users
includebillinginfobooleanInclude billing information
includenotesbooleanInclude user notes
include_custom_fieldsstringComma-separated custom field IDs to include
idonlybooleanReturn only user IDs
search_phonenumbersbooleanSearch phone numbers
integration_typestringFilter by integration type (okta, azure)
linked_to_user_idintegerFilter users linked to a specific user
myareabooleanUsers in your area only
mydepartmentbooleanUsers in your department only
mysitebooleanUsers at your site only
mysitecontactbooleanYour site contacts only
mytoplevelbooleanUsers at your top level only
myallcustomersbooleanAll your customer users
listagentuserfirstbooleanOrder agent-users first
orderstringPrimary sort field
order2order5stringSecondary sort fields
orderdescorderdesc5booleanSort descending for each order field
pageinatebooleanEnable pagination
page_nointegerPage number (when paginating)
page_sizeintegerPage size (when paginating)
countintegerNumber of results to return (without pagination)
lastupdatefromdatebooleanInclude lastupdatefromdate field
lastupdatetodatebooleanInclude lastupdatetodate field
is_followersbooleanFilter by followers
is3cxcallbooleanFilter for 3CX call recipients

FormattedEmail

Email templates and formatted outbound message definitions.

GET /formattedemail

List all formatted email records.

POST /formattedemail

Create or update formatted email records.

Request Body: Array of FormattedEmail objects

GET /formattedemail/{id}

Get one formatted email record. Requires authentication.

Path Parameters: id (integer, required)

Query Parameters:

NameTypeDescription
includedetailsbooleanInclude full template details

DELETE /formattedemail/{id}

Delete a formatted email record by ID.

Path Parameters: id (integer, required)


IncomingEmail

Inbound email queue — emails received by HaloPSA mailboxes awaiting or having been processed into tickets.

GET /incomingemail

List of IncomingEmail. Returns multiple incoming email records. Requires authentication.

Query Parameters:

NameTypeDescription
showcurrentagentonlybooleanShow only emails assigned to current agent
orderorder5stringSort fields (1–5)
orderdescorderdesc5booleanSort descending for each order field
pageinatebooleanEnable pagination
page_nointegerPage number
page_sizeintegerPage size