Using Global API Keys
We have added Global API Keys, which allow customers to use our APIs across all organizations under their account, rather than for a single organization. Note that some API endpoints will continue to accept a regular organization API key, assuming that endpoint is only checking permissions at the account and/or global scopes.
Important
Keep API Keys Secure!
Depending on your role, your API key may be able to modify users, devices, and policies. API keys should be kept secure and not shared to prevent unforeseen changes or potential security issues. Never email or write down your API key.
API Keys Overview
Automox supports two types of API keys: Organization API Keys and Global API Keys.
Organization API Keys
- Created within a specific organization.
- Can only be used when making requests to that same organization.
- The access granted matches the permissions of the user who created the key within that organization.
Note
Some API endpoints will continue to accept a regular organization API key, assuming that endpoint is only checking permissions at the account and/or global scopes.
Global API Keys
- Valid across all organizations within your Automox account.
- When used, they inherit the permissions that the key owner has in the organization being targeted by the request.
- This means your access level will depend on your assigned permissions in whichever organization the API call is directed to.
Quick Example
- If you create an Organization API Key in Org A, you can always use it for API calls targeting Org A, but not necessarily for API calls targeting Org B.
- If you create a Global API Key, you can use it to make API calls against Org A, Org B, or any other org in your account. The permissions applied in each case will match your role in the org you are targeting.
Permissions and Scopes
We have various permissions that have scopes associated with them. Some permissions are can only be attached at a specific scope, whereas other permissions can attached at any combination of account, global, organization scopes. Additionally, some permissions have conditions that must be met in order to use the API. We have added information about the required permissions to our API endpoints. See the following table for a listing of permissions and scopes.
Endpoint | Required Permission | Scope | Conditions | Documentation Notes |
---|---|---|---|---|
GET /servers/{id}/queues | devices:read | Organization | View upcoming commands for a specific device | |
POST /servers/{id}/queues | devices:manage | Organization | Force immediate scan/patch/reboot on a device | |
GET /servers | devices:read | Organization | List all devices in organization | |
GET /servers/{id} | devices:read | Organization | View specific device details | |
PUT /servers/{id} | devices:manage | Organization | Update device configuration | |
DELETE /servers/{id} | devices:delete | Organization | Remove device from organization | |
POST /servers/batch | devices:manage | Organization | Update multiple devices in batch | |
GET /device-details/orgs/{org_UUID}/devices/{device_UUID}/inventory | devices:read | Organization | View device software inventory | |
GET /device-details/orgs/{org_UUID}/devices/{device_UUID}/categories | devices:read | Organization | View device software categories | |
GET /servers/{id}/packages | package:read | Organization | View software packages for specific device | |
GET /orgs/{id}/packages | package:read | Organization | List all packages for organization | |
GET /worklet-catalog | custom_policy:read | Organization | View worklet catalog (deprecated feature) | |
GET /worklet-catalog/{uuid-legacy_id} | custom_policy:read | Organization | View specific worklet (deprecated feature) | |
GET /servergroups | server_group:read | Organization | List all server groups | |
POST /servergroups | server_group:create | Organization | Create new server group | |
GET /servergroups/{id} | server_group:read | Organization | User must be affiliated with the group | View specific server group |
PUT /servergroups/{id} | server_group:modify | Organization | User must be affiliated with the group | Update server group |
DELETE /servergroups/{id} | server_group:delete | Organization | User must be affiliated with the group | Delete server group |
GET /approvals | approval:read | Organization | List manual approval requests | |
PUT /approvals/{id} | approval:update | Organization | Update manual approval status | |
GET /events | organization:read | Organization | View organization event logs | |
GET /data-extracts | report:read | Organization | List data export jobs | |
POST /data-extracts | report:read | Organization | Create new data export job | |
GET /data-extracts/{id} | report:read | Organization | View specific data export job | |
GET /data-extracts/{id}/download | report:read | Organization | Download completed data export | |
GET /orgs | organization:read | Account OR Global OR Organization | List the organizations in the account that the authenticated user has access to. Note: if a user doesn't have "devices:add" org-scoped permission, the corresponding org data is still returned, but no access key attached. Also, any orgs that the user doesn't have org:read permission in in rbac-cr are filtered out. | |
GET /policies | Multiple policy types:read | Organization | Requires read permission for patch_policy, required_software_policy, and/or custom_policy depending on policy types | |
POST /policies | Multiple policy types:create | Organization | Requires create permission for the specific policy type being created | |
GET /policies/{id} | Multiple policy types:read | Organization | Requires read permission for the specific policy type | |
PUT /policies/{id} | Multiple policy types:modify | Organization | Requires modify permission for the specific policy type | |
DELETE /policies/{id} | Multiple policy types:delete | Organization | Requires delete permission for the specific policy type | |
POST /policies/{id}/files | Multiple policy types:modify | Organization | Upload files to policies | |
POST /policies/{id}/action | Multiple policy types:execute | Organization | Execute policy immediately | |
POST /policies/device-filters-preview | devices:read | Organization | Preview devices matching filter criteria | |
GET /policystats | report:read | Organization | View policy compliance statistics | |
GET /orgs/{id}/api_keys | all_api_keys:list | Organization | List all API keys for organization | |
GET /users/{userId}/api_keys/{id} | all_api_keys:read OR user_api_key:manage | Organization | all_api_keys:read for admin access, user_api_key:manage for own keys | View API key details |
PUT /users/{userId}/api_keys/{id} | all_api_keys:modify OR user_api_key:manage | Organization | all_api_keys:modify for admin access, user_api_key:manage for own keys | Enable/disable API key |
POST /users/{userId}/api_keys/{id}/decrypt | user_api_key:manage | Organization | User must own the API key | Decrypt API key value |
GET /users | users:read | Account OR Global | List users | |
POST /users | None | None | No authentication required | Public user registration |
GET /users/{id} | users:read | Account OR Global | No permission required if viewing own user data | View user details |
PUT /users/{userId} | users:modify OR None | Organization OR None | users:modify for admin updates, no permission required for self-updates | Update user (full replacement) |
PATCH /users/{userId} | users:modify OR None | Organization OR None | users:modify for admin updates, no permission required for self-updates | Update user (partial update) |
DELETE /users/{id} | users:delete | Organization | Cannot delete own account | Delete user |
GET /users/self | None | None | Authentication required only | View own user profile |
GET /accounts/{accountId}/rbac-roles | role:read | Global | List available RBAC roles | |
GET /accounts/{accountId} | account:read | Account | View account information | |
GET /accounts/{accountId}/users/{userId} | users:read | Account OR Global | No permission required if viewing own data | View account user details |
DELETE /accounts/{accountId}/users/{userId} | users:delete | Required at every scope where user has role assignments | Remove user from account | |
POST /accounts/{accountId}/invitations | users:invite | Required at every scope where role assignments will be made | Invite user to account with zone access | |
GET /accounts/{accountId}/users/{userId}/zones | organization:read | Account OR Global | List zones user has access to | |
POST /accounts/{accountId}/zones | organization:create | Account | Create new zone | |
GET /accounts/{accountId}/zones | organization:read | Account OR Global | List account zones | |
GET /accounts/{accountId}/zones/{zoneId} | organization:read | Organization | View specific zone details | |
GET /accounts/{accountId}/zones/{zoneId}/users | users:read | Organization | List users in zone | |
GET /orgs/{orgID}/remediations/action-sets/upload/formats | remediation:read | Organization | List supported CSV upload formats | |
POST /orgs/{orgID}/remediations/action-sets/upload | remediation:create | Organization | Upload vulnerability remediation CSV | |
GET /orgs/{orgID}/remediations/action-sets/{actionSetID} | remediation:read | Organization | View specific action set | |
DELETE /orgs/{orgID}/remediations/action-sets/{actionSetID} | remediation:delete | Organization | Delete action set | |
GET /orgs/{orgID}/remediations/action-sets/{actionSetID}/solutions | remediation:read | Organization | List solutions in action set | |
GET /orgs/{orgID}/remediations/action-sets/{actionSetID}/issues | remediation:read | Organization | List issues found during import | |
GET /orgs/{orgID}/remediations/action-sets | remediation:read | Organization | List all action sets | |
DELETE /orgs/{orgID}/remediations/action-sets | remediation:delete | Organization | Bulk delete action sets | |
POST /orgs/{orgID}/remediations/action-sets/{actionSetID}/actions | remediation:execute | Organization | Execute remediation actions | |
GET /reports/prepatch | report:read | Organization | When using groupId parameter, user must have report:read permission on the group's organization | View pre-patch report |
GET /reports/needs-attention | report:read | Organization | View devices needing attention report | |
POST /policies/{policyID}/clone | Source policy read permission + target policy create permission | Multiple Organizations | Requires read permission on source policy type and create permission for same policy type in all target organizations | Clone policy to multiple organizations |
DELETE /users/{userId}/api_keys/{id} | all_api_keys:delete OR user_api_key:manage | Organization | all_api_keys:delete for admin access, user_api_key:manage for own keys | Delete API key |
GET /wis/search | None (only need to be authenticated) | N/A | Search worklets by query | |
GET /wis/search/{id} | None (only need to be authenticated) | N/A | Load a worklet by UUID/Legacy id/Alias | |
POST /config/consent/account/{accountUUID}/org/{orgUUID}/device | remote_control_consent:manage | Organization | Exclude/include a device from remote consent | |
DELETE /global/api_keys/{key_id} | user_api_key:manage OR all_api_keys:delete | Account OR Global | If the user only has the user_api_key:manage permission, the user must own the key in order to delete it. | |
GET /global/api_keys | user_api_key:manage OR all_api_keys:list | Account OR Global | If a user only has the user_api_key:manage permission, only the keys they own will be returned. | |
POST /global/api_keys | user_api_key:manage | Account OR Global | ||
POST /global/api_keys/{key_id}/decrypt | user_api_key:manage | Account OR Global | The user must own the key in order to decrypt it. | |
PUT /global/api_keys/{key_id} | user_api_key:manage OR all_api_keys:modify | Account OR Global | If the user only has the user_api_key:manage permission, the user must own the key in order to delete it. |