Skip to content
Graham Pugh edited this page Apr 19, 2026 · 30 revisions

JamfUploader

JamfUploader is a name given to a set of AutoPkg Processors designed to interact with Jamf Pro. Most (but not all) of these processors are concerned with uploading things to a Jamf Pro Server. The Jamf Pro, Classic, and Platform APIs are supported.

These may be added to AutoPkg recipes in sequence, to perform simple or complex workflows involving the Jamf Pro API.

Here's a current list of processors and their basic functions:

Processor Object type API type Action
JamfAccountUploader Accounts Classic Create/Update
JamfAPIRoleUploader API Roles Pro Create/Update
JamfAPIClientUploader API Clients Pro Create/Update
JamfCategoryUploader Categories Pro Create/Update
JamfComputerProfileUploader Computer Configuration Profiles Classic Create/Update
JamfComputerGroupUploader Computer Groups (Smart and Static) Classic Create/Update
JamfComputerGroupDeleter Computer Groups (Smart and Static) Classic Delete
JamfComputerPreStageUploader Computer PreStage Enrollments Pro Create/Update
JamfComputerStaticGroupUploader Static Computer Groups Pro Create/Update
JamfDockItemUploader Dock Items Pro Create/Update
JamfExtensionAttributeUploader Extension Attributes Pro Create/Update
JamfExtensionAttributePopupChoiceAdjuster Extension Attributes Pro Add/remove choices from a pop-up-style EA
JamfIconUploader Icons Pro Upload/Replace
JamfMacAppUploader Mac Applications (VPP apps) Classic Update/Clone
JamfMobileDeviceAppUploader Mobile Device Applications (VPP apps) Classic Update/Clone
JamfMobileDeviceProfileUploader Mobile Device Configuration Profiles Classic Create/Update
JamfMSUPlanUploader Managed Software Update Plans Pro Create
JamfObjectUploader Many API object types Classic, Pro Create/Update
JamfObjectDeleter Many API object types Classic, Pro Delete
JamfObjectReader Many API object types Classic, Pro Download the API object (XML or JSON). Profiles, Scripts and Script-Based Extension Attributes are also downloaded. Optionally, all objects of a specified type can be downloaded, or a list of all objects can be created.
JamfObjectStateChanger Policies, Computer Extension Attributes, App Installers Classic, Pro Update
JamfPackageUploader Packages Pro Upload/Replace and Create/Update metadata
JamfPkgMetadataUploader Packages Pro Create/Update metadata without uploading a package
JamfPackageCleaner Packages Pro Delete old packages
JamfPatchChecker Patch Titles Classic Checks Patch Software Titles
JamfPatchUploader Patch Policies Classic Create/Update
JamfPolicyUploader Policies Classic Create/Update
JamfPolicyLogFlusher Policies Classic Flushes policy logs
JamfScopeAdjuster Any scopeable object type - Adjusts the scope of an XML object
JamfScriptUploader Scripts Pro Create/Update
JamfSoftwareRestrictionUploader Restricted Software Classic Create/Update
JamfUnusedPackageCleaner Packages Pro Delete unused packages

Note that although the Pro and Classic APIs are listed here, the Jamf Platform API can be used to interact with Pro and Classic endpoints.

Additionally, there are some processors used for associated tasks:

Processor Action
AppStoreInfoProvider Get information about App Store apps
ConvertGroupXMLtoJSON Convert an XML-based smart group template to JSON for use with the Jamf Pro API
JamfUploaderJiraIssueCreator Create a Jira Issue for certain operations
JamfUploaderSlacker Send notifications to a Slack channel for certain operations
JamfUploaderTeamsNotifier Send notifications to a Microsoft Teams channel for certain operations

Note

This repo contains the latest version of the JamfUploader processors.

Stable versions of the processors are hosted in the autopkg/grahampugh-recipes repo, in the JamfUploaderProcessors folder).

For more details, please consult the JamfUploader AutoPkg Processors wiki page


jamf-upload.sh Script

The jamf-upload.sh script provides a way of utilising the framework provided by the JamfUploader processors, without writing recipes. This is most useful for simple, one-off tasks such as uploading a script or package, or deleting an object. It is designed to be run using command line flags, which means it can be called as part of wrapper scripts that may perform repetitive identifiable tasks, reducing the need for writing bespoke API scripts or commands, or using tools like Postman.

For more information and usage instructions, please go to the jamf-upload.sh wiki page.


Resources

The JamfUploader project has been mentioned in various blog posts and presentations. Here are some I found, please feel free to send me any missing links:


Acknowledgements

The following people have contributed especially significantly to this project:

  • @zackn9ne - early contributions to the python project.
  • @MLBZ521 - various functionality improvements and bug fixes.
  • @Marschelloss - contributed the JamfPatchUploader and JamfDockItemUploader processors.
  • @jc0b - contributed the JamfUploaderTeamsNotifier processor.
  • @everettallen - provided additional help with Notifier processors.
  • @novaksam - helped provide code to support multiple package distribution points for JamfPackageUploader.
  • @mosen and @rodgerramjet - provided the logic for jcds_mode (now deprecated).
  • @cr3ation - contributed the JamfPackageCleaner processor.
  • @neilmartin83 - contributed the JamfScopeAdjuster and JamfExtensionAttributePopupChoiceAdjuster processors.
  • @jazzace - has contributed to the project's documentation and knowledge sharing in many ways
  • @mpanighetti - also helped with documentation

Many other people have also made contributions to this project, be that via GitHub PRs, Issues, or feedback in the MacAdmins Slack. Thank you all!


Additional Resources

JamfCLIRunner

JamfCLIRunner is a sister processor to JamfUploader. JamfCLIRunner uses the jamf-cli tool as the API engine. This allows AutoPkg recipes to be constructed not only for Jamf Pro/Classic API endpoints, but also for Jamf Platform, Protect, and School API endpoints.

Jamf-API-Tool

The Jamf-API-Tool uses the Jamf Pro/Classic API endpoints to perform discovery tasks, such as finding unused packages. Please go to Jamf API Tool

Clone this wiki locally