Computers Inventory
Fetches computer inventory records from Jamf Pro, including hardware details, OS, security posture, and installed software.
Sync Type: Full Synchronization
Prerequisites
Before connecting Monad to Jamf Pro, you need:
- An active Jamf Pro instance (cloud-hosted at
*.jamfcloud.comor self-hosted) with API access enabled. - Your Jamf Pro tenant base URL — for example,
https://acme.jamfcloud.com. - An API Client configured under Settings → API Roles and Clients in Jamf Pro, with a Client ID and Client Secret. See the Authentication section below for steps to create one.
- The API Client must be assigned an API Role that includes at minimum the Read Computers privilege so that Monad can query the
/api/v3/computers-inventoryendpoint.
Creating an API Role
- Log in to your Jamf Pro instance.
- Navigate to Settings (gear icon, top-right) → System → API Roles and Clients.
- Click the API Roles tab, then click New.
- Give the role a descriptive name (for example,
monad-computers-inventory). - Under Privileges, enable Read Computers (and any other inventory sections you want Monad to access).
- Click Save.
Creating an API Client
- Still under Settings → API Roles and Clients, click the API Clients tab, then click New.
- Give the client a descriptive display name (for example,
monad-computers-inventory). - Under API Roles, select the role you created above.
- Set an appropriate Access Token Lifetime (Jamf Pro defaults to 30 minutes; Monad refreshes tokens automatically).
- Make sure the client is Enabled.
- Click Save, then click Generate Client Secret.
- Copy the Client ID and Client Secret — the secret is shown only once, so store it securely.
Configuration
The following configuration defines the input parameters.
Settings
| Setting | Type | Required | Description |
|---|---|---|---|
| Base URL | string | Yes | The base URL for your Jamf Pro tenant (for example, https://acme.jamfcloud.com). |
| Inventory Sections | array | Yes | Inventory sections to request from Jamf Pro. Multi-select from the supported section values: GENERAL, DISK_ENCRYPTION, PURCHASING, APPLICATIONS, STORAGE, USER_AND_LOCATION, CONFIGURATION_PROFILES, PRINTERS, SERVICES, HARDWARE, LOCAL_USER_ACCOUNTS, CERTIFICATES, ATTACHMENTS, PLUGINS, PACKAGE_RECEIPTS, FONTS, SECURITY, OPERATING_SYSTEM, LICENSED_SOFTWARE, IBEACONS, SOFTWARE_UPDATES, EXTENSION_ATTRIBUTES, CONTENT_CACHING, GROUP_MEMBERSHIPS. A security-focused default (GENERAL, HARDWARE, SECURITY, OPERATING_SYSTEM, DISK_ENCRYPTION, LOCAL_USER_ACCOUNTS) is suggested if you have no specific need. |
| Cron Schedule | string | Yes | Cron expression that controls how often the connector runs an inventory sync (5-field, standard syntax). Jamf recommends no more than one full sync per day. Example: 0 0 * * * for daily at midnight. |
| Use synthetic data | boolean | No | Generate synthetic data for testing instead of connecting to the real Jamf Pro API. Defaults to false. |
Secrets
| Secret | Type | Required | Description |
|---|---|---|---|
| Client ID | secret | Yes | OAuth2 Client ID from your Jamf Pro API Client. Created under Settings → API Roles and Clients. Used to obtain access tokens via the client credentials grant. |
| Client Secret | secret | Yes | OAuth2 Client Secret paired with the Client ID. Used alongside the Client ID to obtain access tokens. |
Setup Walk-through
-
Create an API Role — follow the Authentication section above to create an API Role in Jamf Pro with the Read Computers privilege.
-
Create an API Client — under Settings → API Roles and Clients, create a new API Client, assign the role you just created, generate a Client Secret, and copy the Client ID and Client Secret.
-
Note your tenant base URL — this is the root URL of your Jamf Pro instance, for example
https://acme.jamfcloud.com. -
Create the input in Monad:
- Open your Monad workspace and navigate to Inputs.
- Click Add Input and select Jamf — Computers Inventory.
-
Fill in the configuration:
- Enter your Base URL (for example,
https://acme.jamfcloud.com). - Enter the Client ID and Client Secret from your API Client.
- Select the Inventory Sections you want Monad to fetch. Each selected value is sent as a repeated
section=query parameter on the computers-inventory request, so the response size and sync duration scale with the number of selected sections. - Set the Cron Schedule to control how often the connector runs (for example,
0 0 * * *for once daily at midnight).
- Enter your Base URL (for example,
-
Save and test — click Test Connection. Monad will authenticate with Jamf Pro and make a sample request to the computers-inventory endpoint to confirm the credentials are valid.
-
Activate — once the connection test passes, enable the input. Monad will incrementally sync computer inventory records on each scheduled run, fetching records across the inventory sections you selected.
Troubleshooting
Common Issues
-
Authentication Errors (401 / 403)
- Confirm the Client ID and Client Secret are correct and have not been revoked.
- Verify the API Client is Enabled in Jamf Pro (Settings → API Roles and Clients → API Clients).
- Confirm the API Client is assigned an API Role that includes the Read Computers privilege.
- Ensure no extra whitespace was included when copying the credentials.
- Regenerate the Client Secret in Jamf Pro if you suspect it has been compromised.
-
Invalid Base URL
- The Base URL must use HTTPS and must not include a trailing slash or path (for example,
https://acme.jamfcloud.com, nothttps://acme.jamfcloud.com/). - For self-hosted instances, confirm the URL is reachable from the Monad pipeline network.
- The Base URL must use HTTPS and must not include a trailing slash or path (for example,
-
Empty Results
- Confirm that computers exist and are enrolled in your Jamf Pro instance.
- Verify the API Role includes the Read Computers privilege.
- Check the pipeline logs for any API errors returned from the Jamf Pro computers-inventory endpoint.
-
Invalid Cron Expression
- Ensure the cron expression uses standard 5-field syntax. Refer to Cron Expression Syntax for guidance.
- Jamf recommends no more than one full inventory sync per day to avoid excessive load on your Jamf Pro instance.
-
Rate Limit Errors (429)
- Monad limits requests to 10 per second against the Jamf Pro API. If you see rate-limit responses, contact Monad support or review your Jamf Pro API throttle settings.