Jamf Connector
Description
Jamf is an Apple device management and security platform. This component allows managing computers, mobile devices, users, scripts, packages, categories, and departments in Jamf Pro, as well as polling for newly enrolled computers and mobile devices and receiving webhook notifications from Jamf Pro.
API Documentation
This component was built using the following API References:
Connections
Basic Authentication
key: jamfBearerTokenTo authenticate with Jamf Pro using basic authentication, a local Jamf Pro user account with appropriate privileges is required.
Prerequisites
- A Jamf Pro instance
- A local (standard) Jamf Pro user account — SSO/federated accounts cannot be used for API authentication
Setup Steps
- Log in to the Jamf Pro dashboard
- Navigate to Settings > System > User Accounts and Groups
- Click New and select Create Standard Account
- Set the Access Level to Full Access and the Privilege Set to Administrator (or a custom set with the minimum required privileges)
- Note the username and password for the account
Jamf Pro does not support API authentication for SSO or federated accounts (for example, accounts backed by Okta, Azure AD, or another identity provider). This applies even when the account has Full Access and Administrator privileges.
If your Jamf Pro instance uses an identity provider for web UI login, you must still create a Standard Account (step 3 above) specifically for API use. Standard accounts coexist with federated accounts in the same Jamf Pro instance. You can identify account type in Settings > System > User Accounts and Groups — the Type column shows Local for standard accounts and Federated User for IdP-backed accounts.
Configure the Connection
Create a connection of type Basic Authentication and provide the following values:
- Jamf Pro URL: The base URL of the Jamf Pro instance (e.g.,
https://acme.jamfcloud.com) - Username: The username of the local Jamf Pro account
- Password: The password of the local Jamf Pro account
OAuth 2.0 client credentials is the recommended authentication method for production integrations. Basic authentication (username and password) exchanges credentials for a bearer token, which expires after 20 minutes.
| Input | Notes | Example |
|---|---|---|
| Jamf Pro URL | The base URL of the Jamf Pro instance (e.g., https://acme.jamfcloud.com). | https://acme.jamfcloud.com |
| Password | The Jamf Pro user account password. | |
| Username | The Jamf Pro user account username. SSO accounts cannot be used for API authentication. | admin |
OAuth 2.0 Client Credentials
key: jamfClientCredentialsTo authenticate with Jamf Pro using OAuth 2.0 client credentials, create an API client in the Jamf Pro dashboard.
Prerequisites
- A Jamf Pro instance with administrator access
- Access to Settings > API Roles and Clients in Jamf Pro
Setup Steps
- Log in to the Jamf Pro dashboard
- Navigate to Settings > API Roles and Clients
- Create an API role with the required privileges for the integration
- Click New under the API Clients tab to create a new API client
- Assign the API role created in step 3 to the new client
- Enable the API client and click Save
- Click Generate Client Secret and copy the Client Secret immediately (it will not be shown again)
- Copy the Client ID displayed on the API client details page
Refer to the Jamf Pro API Roles and Clients documentation for detailed instructions.
Configure the Connection
Create a connection of type OAuth 2.0 Client Credentials and provide the following values:
- Jamf Pro URL: The base URL of the Jamf Pro instance (e.g.,
https://acme.jamfcloud.com) - Client ID: The API Client ID from the Jamf Pro API client
- Client Secret: The API Client Secret generated in the setup steps
| Input | Notes | Example |
|---|---|---|
| Jamf Pro URL | The base URL of the Jamf Pro instance (e.g., https://acme.jamfcloud.com). | https://acme.jamfcloud.com |
| Client ID | The API Client ID from Settings > API Roles and Clients in Jamf Pro. | abc12345-1234-1234-1234-abc1234567890 |
| Client Secret | The API Client Secret from Settings > API Roles and Clients in Jamf Pro. |
Triggers
Manual Webhook
Receive and validate webhook requests from Jamf Pro for manually configured webhook subscriptions. | key: webhook
| Input | Notes | Example |
|---|---|---|
| Auth Header Name | Name of the header Jamf Pro sends for header authentication (must match the webhook's configured header). Leave blank to accept all incoming requests. | X-Jamf-Signature |
| Auth Header Value | Expected value of the authentication header. Incoming requests whose header does not match are rejected. Required only if an Auth Header Name is set. |
Example Payload for Manual Webhook⤓
New Computers
Retrieves existing and newly enrolled computers in Jamf Pro. Load history once, check for new enrollments on a schedule, or both. | key: pollNewComputers
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Look-back Date | The date the initial sync starts from, in YYYY-MM-DD format. Cannot be a future date. Leave empty to start from the first recurrence with no backfill. When set, the initial sync seeds each computer enrolled on or after this date once. | 2026-01-01 |
This trigger checks for newly enrolled computers in Jamf Pro on a configured schedule.
How It Works
- The trigger runs on the configured schedule (e.g., every 5 minutes).
- It queries the Jamf Pro
GET /v3/computers-inventoryendpoint with an RSQL filter ongeneral.lastEnrolledDate, sorted oldest enrollment first, and reads one page at a time. - Each computer returned by the API that has not been delivered before is treated as a newly enrolled device.
- The trigger stores a position in its internal state, so a backlog larger than one page is read across consecutive rounds or recurrences without skipping or repeating computers.
State Management
The trigger persists a small position between executions:
State Shape
{
// The committed position: the enrollment time (to the second) the last fully read poll reached.
lastPolledAt: "2026-04-15T10:30:00.000Z",
// Ids already delivered at exactly lastPolledAt, so they are not delivered twice.
boundaryIds: ["4821"],
// Present only while a backlog is still being read. Holds the position the next round resumes from.
cursor: { watermark: "2026-04-15T10:30:00.000Z", boundaryIds: ["4821"] }
}
The position comes from the computers themselves (their newest enrollment time), never from the time the poll ran. Each request asks for computers enrolled at or after that position and at least one minute in the past, so a computer whose enrollment is recorded late is not stepped over; computers newer than that wait for the next poll. If more computers share one enrollment second than fit on a page, they are read by increasing id within that second, and each computer is still delivered once.
Initial Sync
An initial sync seeds a complete starting state rather than a change feed, so an input that narrowed
which computers are reported would leave gaps in it. This trigger has no such input, so an initial
sync ignores none. It begins on the first recurrence, when the trigger has no stored position and a
Look-back Date (YYYY-MM-DD) is set, and seeds each computer enrolled on or after 00:00 UTC on
that date once. Left empty, there is no sync: the first recurrence records the current time as its
starting position and delivers nothing, and later recurrences deliver computers enrolled after it.
The backlog is read oldest enrollment first, one page of up to 1000 computers per round. With batching on, the platform runs one round after another until the backlog is read. With batching off, each scheduled recurrence reads up to 20 pages and stores where it stopped, so a larger backlog drains over several recurrences, one window per recurrence, and the next recurrence continues from the stored position rather than starting over. The first incremental recurrence after the sync resumes from the position the sync reached; nothing is lost and nothing is repeated. Nothing in the payload marks the handoff. A trigger deployed before this change carries only the old poll-time position; it resumes from that time, and computers enrolled within that same second may be delivered once more.
Connection still applies. The trigger has no page-size or field-selection input, so nothing else is suppressed.
Batching
Batching is enabled per flow on this trigger: each changed record is dispatched as its own execution, or grouped by the configured batch size. It also lets a large backlog be read in consecutive rounds within one recurrence, one page per round. Batch size and batch concurrency can both be overridden per instance. Raising concurrency increases the request volume sent to Jamf Pro.
To turn it on, select the flow's trigger, open the Flow control tab, and switch on Enable Batching. Under Batch Size, keep Trigger default or choose Custom batch size. Batch Concurrency is optional; leave it blank for no batch-level limit.
With batching off a downstream step reads the computer array at body.data. With batching on that
array does not exist: each execution receives one { "changeType": "created", "record": ... }
item, or an array of them when the batch size is greater than 1. Any step reading the older shape
must be updated before batching is enabled. Because batching is enabled per flow, that change is
scoped to the flow rather than to the component or to other flows using the same trigger.
Returned Data
With batching off, the trigger returns the list of newly enrolled computers in the data array. When no new computers are found, the trigger emits an empty array and marks the poll as having no changes. The trigger requests only the GENERAL inventory section, so each computer carries id, udid, and general. Fields shown are representative. The full response object includes additional properties.
Example Payload
{
"data": [
{
"id": "1",
"udid": "A8C5F29D-1234-5678-ABCD-9E0F1B2C3D4E",
"general": {
"name": "MacBook-Pro-001",
"lastContactTime": "2026-04-15T10:23:00.000Z",
"platform": "Mac",
"assetTag": null,
"reportDate": "2026-04-15T10:22:00.000Z",
"remoteManagement": { "managed": true },
"supervised": true
}
}
]
}
With batching on, each execution receives one computer tagged with how it changed, or an array of such items when the batch size is greater than 1. Every item has changeType created. The data array is not part of this shape.
Batched Item
{
"changeType": "created",
"record": {
"id": "1",
"udid": "A8C5F29D-1234-5678-ABCD-9E0F1B2C3D4E",
"general": {
"name": "MacBook-Pro-001",
"lastContactTime": "2026-04-15T10:23:00.000Z",
"platform": "Mac",
"assetTag": null,
"reportDate": "2026-04-15T10:22:00.000Z",
"remoteManagement": { "managed": true },
"supervised": true
}
}
}
Refer to the Jamf Pro Computer Inventory API reference for the complete list of fields in the general section.
Notes
- Without a Look-back Date, the first execution after deployment establishes the baseline timestamp and does not emit any computers. New computers enrolled after that baseline will appear in subsequent polls.
- A computer enrolled in the last minute is delivered by a later poll, not the current one.
- This trigger reads Jamf Pro's
/v3/computers-inventoryendpoint, which Jamf has deprecated in favor of/v4. - Frequent polling schedules (under one minute) may be subject to Jamf Pro API rate limits. A polling interval of 5 minutes or longer is recommended for most use cases.
- The RSQL filter relies on
general.lastEnrolledDate. Computers that have been re-enrolled (rather than newly enrolled) will also match the filter when their re-enrollment falls within the polling window.
New Mobile Devices
Checks for newly enrolled mobile devices in Jamf Pro on a configured schedule. | key: pollNewMobileDevices
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
This trigger checks for newly enrolled mobile devices in Jamf Pro on a configured schedule.
How It Works
- The trigger runs on the configured schedule (e.g., every 5 minutes).
- It queries the Jamf Pro
GET /v2/mobile-devicesendpoint to retrieve the current set of enrolled mobile devices. - Each device's numeric
idis compared against the highest device ID seen on the previous poll. Devices with an ID greater than the stored maximum are treated as newly enrolled. - The trigger updates its internal state with the new maximum ID so subsequent runs only emit devices added after this point.
Why Max-ID Tracking
Unlike the Jamf Pro Computer Inventory API, the v2 mobile devices endpoint does not expose a reliable "enrolled since" filter. Jamf assigns sequential IDs to mobile devices as they are enrolled, so tracking the highest known ID provides a stable way to detect new enrollments between polls.
State Management
The trigger persists a single value between executions:
State Shape
{
// The highest mobile device ID observed in the previous poll.
// Devices with an ID greater than this value are treated as newly enrolled.
lastMaxId: 42;
}
On the first execution, lastMaxId is undefined and the trigger establishes a baseline by recording the current maximum ID without emitting any devices. From that point forward, only devices with an ID greater than lastMaxId are emitted.
Configuration
The trigger accepts the following inputs:
- Connection: The Jamf Pro connection to use.
- Page Size: The maximum number of mobile devices to fetch per poll (defaults to 100, maximum 1000).
Returned Data
The trigger returns the list of newly enrolled mobile devices in the data array. When no new devices are found, the trigger emits an empty array and marks the poll as having no changes.
Example Payload
{
"data": [
{
"id": "5",
"managementId": "mgmt-abc-123",
"name": "iPad-001",
"udid": "B3D6E19F-4321-8765-DCBA-EF0A1B2C3D4E",
"serialNumber": "DMPC123456789",
"wifiMacAddress": "a4:5e:60:ab:cd:ef",
"phoneNumber": null,
"username": "jdoe",
"type": "ios",
"model": "iPad Pro (11-inch) (4th generation)",
"modelIdentifier": "iPad14,3",
"softwareUpdateDeviceId": null
}
]
}
Refer to the Jamf Pro Mobile Devices API reference for the complete list of fields returned for each mobile device.
Notes
- The first execution after deployment establishes the baseline maximum ID and does not emit any devices. New devices enrolled after that baseline will appear in subsequent polls.
- Because detection relies on a monotonically increasing ID, devices that are unenrolled and later re-enrolled may receive a new ID and be emitted again.
- The maximum
Page Sizeaccepted by the Jamf Pro API is 1000. For tenants with high mobile device enrollment volume, pair this trigger with frequent polling to ensure new devices are captured within a single page.
Webhook Events
Subscribe to Jamf Pro events. On deploy, this trigger creates a webhook in Jamf Pro for each selected event (secured with a generated authentication header) and removes them when the instance is deleted. Incoming requests are validated against that header. | key: webhookEvents
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Events | The Jamf Pro events to subscribe to. One webhook is created per selected event. | ComputerAdded |
Example Payload for Webhook Events⤓
Data Sources
Select Category
Dynamically fetch a list of categories from Jamf Pro for use in a dropdown. | key: selectCategory | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Category⤓
Select Computer
Dynamically fetch a list of computers from Jamf Pro for use in a dropdown. | key: selectComputer | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Computer⤓
Select Department
Dynamically fetch a list of departments from Jamf Pro for use in a dropdown. | key: selectDepartment | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Department⤓
Select Mobile Device
Dynamically fetch a list of mobile devices from Jamf Pro for use in a dropdown. | key: selectMobileDevice | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Mobile Device⤓
Select Package
Dynamically fetch a list of packages from Jamf Pro for use in a dropdown. | key: selectPackage | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Package⤓
Select Script
Dynamically fetch a list of scripts from Jamf Pro for use in a dropdown. | key: selectScript | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Script⤓
Select Webhook
Dynamically fetch a list of webhooks from Jamf Pro for use in a dropdown. | key: selectWebhook | type: picklist
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Select Webhook⤓
Actions
Create Category
Create a new category. | key: createCategory
| Input | Notes | Example |
|---|---|---|
| Name | The display name used to identify the category in Jamf Pro. | Productivity Apps |
| Connection | The Jamf Pro connection to use. | |
| Priority | The sort order weight for the category. Lower numbers appear first. | 9 |
Example Payload for Create Category⤓
Create Department
Create a new department. | key: createDepartment
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Name | The display name used to identify the department in Jamf Pro. | Information Technology |
Example Payload for Create Department⤓
Create Package
Create a new package record in Jamf Pro. | key: createPackage
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Priority, Info, Notes, Reboot Required, OS Install, Fill User Template, Suppress Updates, Suppress EULA, Suppress From Dock, and Suppress Registration. | |
| Connection | The Jamf Pro connection to use. | |
| Category ID | The unique identifier of the category to assign to this package. | 3 |
| File Name | The filename of the package file on the Jamf distribution point (e.g., GoogleChrome.pkg). | GoogleChrome-120.0.6099.199.pkg |
| Package Name | The display name of the package as shown in Jamf Pro. | Google Chrome 120.0.pkg |
Example Payload for Create Package⤓
Create Script
Create a new script. | key: createScript
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Script Contents, Priority, Info, and Notes. | |
| Connection | The Jamf Pro connection to use. | |
| Category ID | The unique identifier of the category to assign to this script. | 3 |
| Name | The display name used to identify the script in Jamf Pro. | Install Chrome |
Example Payload for Create Script⤓
Create Webhook
Create a new webhook subscription in Jamf Pro. | key: createWebhook
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Content Type, Enabled, Authentication Type, Auth Header Name, and Auth Header Value. | |
| Connection | The Jamf Pro connection to use. | |
| Event | The Jamf Pro event that triggers this webhook. | ComputerAdded |
| Name | The display name used to identify the webhook in Jamf Pro. | New Computer Notifier |
| URL | The destination URL that Jamf Pro sends webhook events to. | https://example.com/webhook |
Example Payload for Create Webhook⤓
Delete Category
Delete a category by ID. | key: deleteCategory
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Category | The unique identifier of the category. | 1 |
Example Payload for Delete Category⤓
Delete Department
Delete a department by ID. | key: deleteDepartment
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Department | The unique identifier of the department. | 1 |
Example Payload for Delete Department⤓
Delete Instanced Webhooks
Delete all Jamf Pro webhooks that point to a flow in this instance. | key: deleteInstancedWebhooks
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for Delete Instanced Webhooks⤓
Delete Package
Delete a package record by ID. | key: deletePackage
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Package | The unique identifier of the package. | 1 |
Example Payload for Delete Package⤓
Delete Script
Delete a script by ID. | key: deleteScript
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Script | The unique identifier of the script. | 1 |
Example Payload for Delete Script⤓
Delete Webhook
Delete a webhook subscription by ID. | key: deleteWebhook
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Webhook | The unique identifier of the webhook. | 1 |
Example Payload for Delete Webhook⤓
Get Category
Get a single category by ID. | key: getCategory
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Category | The unique identifier of the category. | 1 |
Example Payload for Get Category⤓
Get Computer
Get a single computer inventory record by ID. | key: getComputer
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Computer | The unique identifier of the computer. | 1 |
| Section | Section of computer details to include in the response. If not specified, General section data is returned. | GENERAL |
Example Payload for Get Computer⤓
Get Department
Get a single department by ID. | key: getDepartment
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Department | The unique identifier of the department. | 1 |
Example Payload for Get Department⤓
Get Mobile Device
Get a single mobile device record by ID. | key: getMobileDevice
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Mobile Device | The unique identifier of the mobile device. | 1 |
Example Payload for Get Mobile Device⤓
Get Package
Get a single package record by ID. | key: getPackage
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Package | The unique identifier of the package. | 1 |
Example Payload for Get Package⤓
Get Script
Get a single script by ID. | key: getScript
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Script | The unique identifier of the script. | 1 |
Example Payload for Get Script⤓
Get Webhook
Get a single webhook subscription by ID. | key: getWebhook
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Webhook | The unique identifier of the webhook. | 1 |
Example Payload for Get Webhook⤓
List Categories
List all categories with optional filtering and pagination. | key: listCategories
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Categories⤓
List Computers
List computer inventory records with optional filtering and pagination. | key: listComputers
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Section | Section of computer details to include in the response. If not specified, General section data is returned. | GENERAL |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Computers⤓
List Departments
List all departments with optional filtering and pagination. | key: listDepartments
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Departments⤓
List Mobile Devices
List mobile device inventory records with optional filtering and pagination. | key: listMobileDevices
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Section | Section of mobile device details to include in the response. If not specified, General section data is returned. | GENERAL |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Mobile Devices⤓
List Packages
List all packages with optional filtering and pagination. | key: listPackages
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Packages⤓
List Scripts
List all scripts with optional filtering and pagination. | key: listScripts
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Scripts⤓
List Users
List Jamf Pro user accounts with optional filtering and pagination. | key: listUsers
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Fetch All | If true, fetch every page of results and ignore the Page and Page Size inputs. If false, return a single page. | false |
| Filter | An RSQL filter expression to narrow results. Example: name=="Apps*" or id>=5. Leave blank to return all results. | name=="Acme*" |
| Pagination | Page and page-size controls. | |
| Sort | The sort criteria in the format property:asc or property:desc. Multiple criteria are comma-separated. | name:asc,id:desc |
Example Payload for List Users⤓
List Webhooks
List all webhook subscriptions configured in Jamf Pro. | key: listWebhooks
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. |
Example Payload for List Webhooks⤓
Raw Request
Send a raw HTTP request to the Jamf Pro API or the Classic API. | key: rawRequest
| Input | Notes | Example |
|---|---|---|
| API | Which Jamf Pro API to target. The Pro API uses the /api base path; the Classic API uses /JSSResource. | api |
| Connection | The Jamf Pro connection to use. | |
| Data | The HTTP body payload to send to the URL. | {"exampleKey": "Example Data"} |
| File Data | File Data to be sent as a multipart form upload. | [{key: "example.txt", value: "My File Contents"}] |
| File Data File Names | File names to apply to the file data inputs. Keys must match the file data keys above. | |
| Form Data | The Form Data to be sent as a multipart form upload. | [{"key": "Example Key", "value": new Buffer("Hello World")}] |
| Header | A list of headers to send with the request. | User-Agent: curl/7.64.1 |
| Max Retry Count | The maximum number of retries to attempt. Specify 0 for no retries. | 0 |
| Method | The HTTP method to use. | |
| Query Parameter | A list of query parameters to send with the request. This is the portion at the end of the URL similar to ?key1=value1&key2=value2. | |
| Response Type | The type of data you expect in the response. You can request json, text, or binary data. | json |
| Retry On All Errors | If true, retries on all erroneous responses regardless of type. This is helpful when retrying after HTTP 429 or other 3xx or 4xx errors. Otherwise, only retries on HTTP 5xx and network errors. | false |
| Retry Delay (ms) | The delay in milliseconds between retries. This is used when 'Use Exponential Backoff' is disabled. | 0 |
| Timeout | The maximum time that a client will await a response to its request | 2000 |
| URL | The API path only (e.g., /v1/computers-inventory for the Pro API, or /computers/id/1 for the Classic API). The base URL and selected API prefix are added automatically. | /v1/computers-inventory |
| Use Exponential Backoff | Specifies whether to use a pre-defined exponential backoff strategy for retries. When enabled, 'Retry Delay (ms)' is ignored. | false |
Update Category
Update an existing category. | key: updateCategory
| Input | Notes | Example |
|---|---|---|
| Name | The display name used to identify the category in Jamf Pro. | Productivity Apps |
| Connection | The Jamf Pro connection to use. | |
| Priority | The sort order weight for the category. Lower numbers appear first. | 9 |
| Category | The unique identifier of the category. | 1 |
Example Payload for Update Category⤓
Update Computer
Update specific fields of a computer inventory record. Only the provided fields are modified. | key: updateComputer
| Input | Notes | Example |
|---|---|---|
| Update Data | JSON object with the computer inventory fields to update. Only the provided fields will be modified (PATCH semantics). | |
| Connection | The Jamf Pro connection to use. | |
| Computer | The unique identifier of the computer. | 1 |
Example Payload for Update Computer⤓
Update Department
Update an existing department. | key: updateDepartment
| Input | Notes | Example |
|---|---|---|
| Connection | The Jamf Pro connection to use. | |
| Name | The display name used to identify the department in Jamf Pro. | Information Technology |
| Department | The unique identifier of the department. | 1 |
Example Payload for Update Department⤓
Update Package
Update an existing package record. | key: updatePackage
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Package Name, File Name, Priority, Info, Notes, Reboot Required, OS Install, Fill User Template, Suppress Updates, Suppress EULA, Suppress From Dock, and Suppress Registration. | |
| Connection | The Jamf Pro connection to use. | |
| Category ID | The unique identifier of the category to assign to this package. | 3 |
| Package | The unique identifier of the package. | 1 |
Example Payload for Update Package⤓
Update Script
Update an existing script. | key: updateScript
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Name, Script Contents, Priority, Info, and Notes. | |
| Connection | The Jamf Pro connection to use. | |
| Script | The unique identifier of the script. | 1 |
| Category ID | The unique identifier of the category to assign to this script. | 3 |
Example Payload for Update Script⤓
Update Webhook
Update an existing webhook subscription. | key: updateWebhook
| Input | Notes | Example |
|---|---|---|
| Additional Fields | Additional optional fields: includes Name, Event, URL, Content Type, and Enabled. | |
| Connection | The Jamf Pro connection to use. | |
| Webhook | The unique identifier of the webhook. | 1 |
Example Payload for Update Webhook⤓
Changelog
2026-10-19
- Added opt-in batching to the New Computers trigger, dispatching each changed record individually or in configured batches so large backlogs drain in one recurrence; enabling it changes the shape a downstream step receives
- Added an optional Look-back Date input to the New Computers trigger for performing an initial sync of computers. The initial sync begins on the first recurrence and backfills every computer enrolled on or after the specified date, seeding each once; recurrences after the sync completes are unaffected. Leave it empty to start from the first recurrence with no backfill
- Fixed the New Computers trigger delivering some computers twice or skipping a computer enrolled while a recurrence was running
2026-07-21
Restructured action inputs into structured objects for an improved user experience:
- List actions (List Categories, List Departments, List Packages, List Scripts, List Users, List Computers, and List Mobile Devices) group their pagination inputs into Pagination; Fetch All stays a top-level toggle
- Create Package, Update Package, Create Script, Update Script, Create Webhook, and Update Webhook group their optional inputs into Additional Fields
2026-06-16
Enhanced List Mobile Devices with full inventory detail
2026-06-10
Initial release of the Jamf Pro component, providing:
- Connects to Jamf Pro using OAuth 2.0 Client Credentials (Jamf Pro 10.49.0+) or Basic Authentication
- Manages Computers, Mobile Devices, Users, Departments, Categories, Scripts, Packages, and Webhooks through dedicated actions
- Includes a Raw Request action with an API option to target either the Jamf Pro API or the Classic API
- Offers a Manual Webhook trigger plus a managed Webhook Events trigger that creates a webhook per selected event on instance deploy, secures deliveries with a generated authentication header, removes the webhooks on instance delete, and covers all 22 Jamf Pro event types
- Provides New Computers and New Mobile Devices polling triggers that page through all results
- Surfaces Select Computer, Select Mobile Device, Select Department, Select Category, Select Package, Select Script, and Select Webhook data sources, wired to the relevant ID inputs across the get, update, and delete actions
- Supports a Fetch All option on list actions to optionally retrieve every page of results in a single run
- Applies partial updates on Update Package, Update Script, and Update Category so fields left blank keep their current values
- Returns a confirmation message from Update Computer, since the Jamf Pro endpoint responds with no content on success
- Secures Create Webhook with header authentication and supports optional header validation on the Manual Webhook trigger
- Documents known Jamf Pro behavior where Delete Package can return a 500 or 504 error while still deleting the package