EXTREMELY EARLY STAGE DEVELOPMENT. READ CURRENTLY WORKING ENDPOINTS BEFORE TRYING ANYTHING!
For everyone's safety, none of the delete functions currently work. This will be fixed/updated later.
- Python (tested from Python 3.9 to 3.13 right now)
- HaloPSA API key
- Some basic understanding of the Halo API (will try to reduce this)
pip install HaloPSA
- Login to your Halo instance and go to HaloPSA API here: (your tenant).halopsa.com/config/integrations/api
- Under Applications, click "View Applications"
- Create a new application, and set type to Client ID and Secret (Service).
- Name it something memorable, so it doesn't get deleted accidentally.
- Set login type to Agent and select any agent (Make sure the account you pick has permissions to do the actions you will be using)
- Make sure that "Active" is ticked and click save (Not: this shouldn't be needed, but I have lost my progress too many times to risk it)
- Note your Client ID and Secret, you will need these later!
- Click on the integration/Application you just created and go to Permissions.
- Set permissions to either All or, if you know what you'll be using, enable just those permissions. (I recommend testing with All and then disabling permissions selectively, that way you know your connection is working before you start troubleshooting)
- Click Save and move on to setting up your .env file.
- Create a .env file with the following lines
HALO_CLIENT_ID = [Your Client ID]
HALO_SECRET = [Your Secret]
HALO_API_URL = https://[Your Halo Instance].halopsa.com/api
HALO_AUTH_URL = https://[Your Halo Instance].halopsa.com/auth/token
Now you're ready to go!
Because of the way Halo is designed, anything you can do in the web interface, can be done from the API (and hopefully one day from this Python package too).
You can either import every endpoint
import HaloPSA.Halo
Or import only the ones you need (Full list below)
from HaloPSA.Halo import clients, invoices
I highly recommend you check the official Halo API documentation here: https://halo.halopsa.com/apidoc/info and for an even more in depth list, check out the swagger file here: https://halo.halopsa.com/api/swagger/index.html
Feel free to ask questions in the github issues area, I will try my best to answer.
I am implementing these as I need them, and trying to keep them as consistent and easy to understand as possible.
You Halo assets
Working, has docstring.
Working, has docstring.
Working, but planning to remove this as you can just use search with no variables to get the same result.
Creates or updates one or more assets. If ID is included, asset(s) will be updated. If ID is not included, new asset(s) will be created.
- Working but requires "fields" to be sent in a specific JSON-like format. Working on a better solution. Has docstring.
- Allows queuing multiple items so a single update can be sent, reducing calls to Halo
Not implemented.
Attachments on tickets.
Working, needs docstring
- Returns attachment in base64
Working, has docstring but needs more updating
Not implemented.
Not implemented.
Your customers/clients.
Working, has docstring.
Working, has docstring.
Not implemented.
Not implemented.
*Not in official documentation, found in Swagger + checking API calls from browser.
Not implemented.
Working, needs better docstring.
Not implemented.
Technically working, needs documentation and docstring.
Not implemented.
Not implemented.
Implemented, has docstring.
Not implemented.
Not implemented.
Halo tickets endpoint.
Working, has docstring.
Not implemented.
Working, has docstring.
- Allows queuing multiple items so a single update can be sent, reducing calls to Halo
Not implemented.
Halo users endpoint.
Working, has docstring.
Working, has docstring.
Not implemented.
Not implemented.
- Currency
- Items
- Invoices
- Actions