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&section=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=HARDWARE for 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.