Guide
JAMF Setup (OAUTH Builder)
This page covers the JAMF-specific implementation pattern for OAuth Builder. Use this as the reference for contract rows, mapping structure, and validation gates when targeting JAMF Pro endpoints.
When to Use Builder vs JAMF Profile
Use JAMF Profile When
- You want predefined JAMF behavior and fast setup.
- You do not need custom endpoint, method, or body-format control.
- You want the profile to provide expected default mapping semantics.
Use OAuth Builder When
- You need explicit control over API contract paths and HTTP methods.
- You need to choose request format (JSON/XML) per contract endpoint.
- You want to manually map destination fields from real destination samples.
JAMF Builder Contract Example (Successful Pattern)
Recommended Contract Inputs
| Contract Endpoint | Method | Formatter | Example Path | Notes |
|---|---|---|---|---|
| Computers - Required fetch API | GET | JSON | /api/v1/computers-inventory?page=0§ion=HARDWARE&page-size=100 |
Must return serial-related fields for reliable record lookup. |
| Computers - Required update API | PATCH | JSON | /api/v1/computers-inventory-detail/{id} |
Update endpoint uses resolved destination record ID. |
| Mobile Devices - Required fetch API | GET | JSON | /api/v2/mobile-devices |
Used for destination lookup and sampling for mobile records. |
| Mobile Devices - Required update API | PUT | XML | /JSSResource/mobiledevices/id/{id} |
Classic endpoint typically requires XML payload formatting. |
Important Contract Notes
- Replace placeholders (for example page-size) with a real numeric value in Builder paths.
- Computers fetch path should include
section=HARDWAREfor reliable serial availability in JAMF. - If update returns 405/415/400, verify method and formatter pairing before changing mappings.
JAMF Builder Mapping Example (Computers)
ABM Source to Destination Mapping Pattern
| ABM Field | Destination Field (Example) | Action | Formatter | Notes |
|---|---|---|---|---|
serialNumber |
serialNumber |
Key | String | Lookup key. Do not treat as a writable business field. |
orderNumber |
purchasing.poNumber |
Update | String or Integer | Choose formatter based on destination type expectation. |
orderDateTime |
purchasing.poDate |
Update | Date (yyyy-MM-dd) | Common requirement for JAMF purchase date fields. |
purchaseSourceType |
purchasing.vendor |
Update | String | Vendor and source label mapping. |
purchaseSourceId |
purchasing.purchasingAccount |
Update | String or Integer | Align with destination schema. |
appleCareId |
purchasing.appleCareId |
Update | String or Integer | Formatter should match target field type. |
warrantyDate |
purchasing.warrantyDate |
Update | Date (yyyy-MM-dd) | Use date-only format when destination expects date-only values. |
lifeExpectancy |
purchasing.lifeExpectancy |
Update | Integer | Use Integer when destination rejects string values like “6 Years”. |
Formatter Guidance
Builder formatters are explicit and important. Choose formatters based on destination expectations, not source display style. A date-time source may need date-only output, and a decorated numeric string may need Integer output.
Successful JAMF Builder Setup Checklist
End-to-End Validation Gates
| Stage | What to Confirm | Pass Condition | If It Fails |
|---|---|---|---|
| OAuth Validation | Connection test succeeds with current base URL, token URL, and client credentials. | Wizard advances to contract and mapping. | Recheck host, token URL path, client secret, and OAuth scope or audience requirements. |
| Contract Save | Contract rows are valid and persist after close and reopen. | Method, formatter, and endpoint path rehydrate exactly. | Reopen Update API Contract and verify each row, especially mobile update formatter. |
| Mapping Save | Mapped destination fields and formatters persist after Save. | Update Mapping reopens with exact saved values. | Validate key field mapping and required field mappings are still set. |
| Single Dry Run | One target serial shows expected would-update and skip diagnostics. | No endpoint or media-type errors in diagnostics. | Check contract method and formatter pairing and mapped destination field names. |
| Single Live Run | One target serial applies expected updates in JAMF destination. | Destination reflects mapped values. | Check response error field details and adjust formatter and date rules as needed. |
| Full Run | Jobs complete with expected update and skip counts across all records. | No unexpected destination-missing spikes or payload format failures. | Re-validate fetch endpoint serial visibility and action rules. |