> ## Documentation Index
> Fetch the complete documentation index at: https://serval-hannah-docs-custom-access.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Jamf

## About Jamf Pro

Jamf Pro is a mobile-device-management (MDM) platform used to deploy, configure and secure macOS, iOS, iPadOS and tvOS devices. Connecting Jamf to Serval lets your IT team trigger remote commands, pull inventory or enforce compliance policies directly from chat.

## What the Jamf integration enables

| Capability           | Description                                            |
| -------------------- | ------------------------------------------------------ |
| Access Management    | Create, update, and manage users and their permissions |
| Automation workflows | Streamline device provisioning and management          |

Anything defined in the [Jamf API](https://developer.jamf.com/jamf-pro/reference/classic-api) can be accessed through Serval.

***

## Jamf configuration (in Jamf Pro)

### 1. Create or select an API role

* Log in at \<yourdomain>.[jamfcloud.com](http://jamfcloud.com) and navigate to the settings. From there, search for "API roles and clients"

<img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/image(46).png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=a05d81787f531e8d78ff4b8fbd2c514e" alt="Image(46) Pn" width="2716" height="1166" data-path="images/integrations/jamf/image(46).png" />

* From the API Roles tab you may now click on the + New button in the top right to begin creating a new API Role. If you already have a role that you wish to use with Serval, you may skip the rest of this section.

<img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/image(47).png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=b1f5a81cff48c72520c18810e1f3758e" alt="Image(47) Pn" width="3456" height="1740" data-path="images/integrations/jamf/image(47).png" />

* Create the API Role by choosing a name and selecting the privileges you wish Serval to have and hit Save.

<img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/image(48).png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=89d1e1a90fd2c4e2b1d9c4d2db7c9964" alt="Image(48) Pn" width="2936" height="1634" data-path="images/integrations/jamf/image(48).png" />

### 2. Create an API Client

* From the same settings page, navigate to the API Clients tab and click the + New button once again.

<img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/image(49).png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=d61f50cdb524ec44babd935f0ed913a1" alt="Image(49) Pn" width="3456" height="1730" data-path="images/integrations/jamf/image(49).png" />

* From here, begin filling out the details: For the name, we recommend something like `Serval Integration`. Make sure to include the proper role(s) and set a custom Access token lifetime if you wish to do so. Confirm that the API client is enabled and then hit save.
  * Note: For more details on how this integration works from a security perspective, check out this doc: [Jamf Integration Security Details](https://www.notion.so/Jamf-Integration-Security-Details-1065b4e67d2680c49e6ad47914ee5b19?pvs=21)

<img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/image(50).png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=1449ecfb0457130649c0c93526ea7009" alt="Image(50) Pn" width="2934" height="1628" data-path="images/integrations/jamf/image(50).png" />

* With the client created, next you will need to hit the Generate client secret button to generate the client credentials. Be sure to keep the client ID and the client secret on hand for the next section.

  <img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/image(51).png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=42e30d9982ca24709ee6d3bb5fe19649" alt="Image(51) Pn" width="2932" height="1618" data-path="images/integrations/jamf/image(51).png" />

### 3. Configure the integration in Serval

* In Serval, navigate to Applications and then the Available tab. Find the Jamf integration and press Connect.

<img src="https://mintcdn.com/serval-hannah-docs-custom-access/fzMTcY0ZRf7ewJRV/images/integrations/jamf/jamf_serval_modal.png?fit=max&auto=format&n=fzMTcY0ZRf7ewJRV&q=85&s=aabb04d8a0f4a9ca3481d0f35bdb72f1" alt="Image Pn" width="2466" height="1494" data-path="images/integrations/jamf/jamf_serval_modal.png" />

* The Service Instance ID should be the full domain of your Jamf Cloud instance. For example, if your Jamf Cloud URL is `https://serval.jamfcloud.com`, you should enter `serval.jamfcloud.com` here.
* Copy over the client ID and client secret from the previous section.
* Leave the scopes blank and hit `Save`. That's it! Jamf should now be connected.

***

## Serval Configuration

1. In Serval go to **Apps → Available → Jamf → Connect**.
2. Outlined in step 3.3, enter your **Service Instance ID** (your Jamf Cloud domain, e.g., `serval.jamfcloud.com`), **Client ID** and **Client Secret** from the API Client you generated above.
3. Click **Save**.

Serval will now use the Jamf OAuth token it generates to run your workflows. Rotate the client secret anytime—just update it in Serval by reconnecting the app.
