A user is a person with a login to your AlgaPSA instance. This is the admin-facing API for managing those accounts: create them, set their type, control passwords and two-factor, and read what each one can actually do.
username, email, and password are required. Set user_type to one of internal, client, admin, or contractor; a new account carries no roles until you assign them.
curl https://algapsa.com/api/v1/users \
-H "X-API-Key: $ALGA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"username": "jdoe",
"email": "jdoe@northwind.example",
"password": "set-a-strong-one",
"first_name": "Jamie",
"last_name": "Doe",
"user_type": "internal"
}'Reset a login with PUT /users/{id}/password. Turn two-factor on with POST /users/{id}/2fa/enable or clear it with DELETE /users/{id}/2fa/disable. Avatar, preferences, and per-user activity each hang off the same /users/{id} path.
Membership lives under each user. Read or change roles with GET /users/{id}/roles and its POST/PUT/DELETE counterparts; do the same for /users/{id}/teams. To see the result of all that without re-deriving it yourself, read GET /users/{id}/permissions for the user's effective permissions.
List and filter with GET /users, match by name or email with GET /users/search, and read headcount and activity totals from GET /users/stats.
Every endpoint links through to its full parameters, request and response schemas, and code samples.
GET/api/v1/usersAlgaPSAAlgaDeskList usersPOST/api/v1/usersAlgaPSAAlgaDeskCreate userGET/api/v1/users/{id}AlgaPSAAlgaDeskGet userPUT/api/v1/users/{id}AlgaPSAAlgaDeskUpdate userDELETE/api/v1/users/{id}AlgaPSAAlgaDeskDelete userDELETE/api/v1/users/{id}/2fa/disableAlgaPSAAlgaDeskDisable user 2FAPOST/api/v1/users/{id}/2fa/enableAlgaPSAAlgaDeskEnable user 2FAGET/api/v1/users/{id}/activityAlgaPSAAlgaDeskGet user activityPOST/api/v1/users/{id}/avatarAlgaPSAAlgaDeskUpload user avatarDELETE/api/v1/users/{id}/avatarAlgaPSAAlgaDeskDelete user avatarPUT/api/v1/users/{id}/passwordAlgaPSAAlgaDeskChange user passwordGET/api/v1/users/{id}/permissionsAlgaPSAAlgaDeskGet user effective permissionsGET/api/v1/users/{id}/preferencesAlgaPSAAlgaDeskGet user preferencesPUT/api/v1/users/{id}/preferencesAlgaPSAAlgaDeskUpdate user preferencesGET/api/v1/users/{id}/rolesAlgaPSAAlgaDeskList user rolesPOST/api/v1/users/{id}/rolesAlgaPSAAlgaDeskAssign user rolesPUT/api/v1/users/{id}/rolesAlgaPSAAlgaDeskReplace user rolesDELETE/api/v1/users/{id}/rolesAlgaPSAAlgaDeskRemove user rolesGET/api/v1/users/{id}/teamsAlgaPSAAlgaDeskList user teamsPOST/api/v1/users/{id}/teamsAlgaPSAAlgaDeskAdd user to team (route currently mapped to user create)DELETE/api/v1/users/{id}/teams/{teamId}AlgaPSAAlgaDeskRemove user from team (route currently mapped to user delete)GET/api/v1/users/activityAlgaPSAAlgaDeskList global user activityPOST/api/v1/users/bulk/createAlgaPSAAlgaDeskBulk create users (route currently mapped to single create)PUT/api/v1/users/bulk/deactivateAlgaPSAAlgaDeskBulk deactivate users (route currently mapped to update-by-id)GET/api/v1/users/searchAlgaPSAAlgaDeskSearch usersGET/api/v1/users/statsAlgaPSAAlgaDeskGet user stats