Home - grahampugh/jamf-upload GitHub Wiki

JamfUploader

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

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 Action
JamfAccountUploader Accounts Create/Update
JamfAPIRoleUploader API Roles Create/Update
JamfApiClientUploader API Clients Create/Update
JamfCategoryUploader Categories Create/Update
JamfComputerProfileUploader Computer Configuration Profiles Create/Update
JamfComputerGroupUploader Computer Groups (Smart and Static) Create/Update
JamfDockItemUploader Dock Items Create/Update
JamfExtensionAttributeUploader Extension Attributes Create/Update
JamfExtensionAttributePopupChoiceAdjuster Extension Attributes Add/remove choices from a pop-up-style EA
JamfIconUploader Icons Upload/Replace
JamfMacAppUploader Mac Applications (VPP apps) Update/Clone
JamfMobileDeviceAppUploader Mobile Device Applications (VPP apps) Update/Clone
JamfMobileDeviceProfileUploader Mobile Device Configuration Profiles Create/Update
JamfObjectUploader Many API object types Create/Update
JamfObjectDeleter Many API object types Delete
JamfObjectReader Many API object types 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.
JamfPackageUploader Packages Upload/Replace and Create/Update metadata
JamfPkgMetadataUploader Packages Create/Update metadata without uploading a package
JamfPackageCleaner Packages Delete old packages
JamfPatchChecker Patch Titles Checks Patch Software Titles
JamfPatchUploader Patch Policies Create/Update
JamfPolicyUploader Policies Create/Update
JamfPolicyLogFlusher Policies Flushes policy logs
JamfScopeAdjuster Any scopeable object type Adjusts the scope of an XML object
JamfScriptUploader Scripts Create/Update
JamfSoftwareRestrictionUploader Restricted Software Create/Update

Additionally, there are two processors used for sending notifications, which are typically used as post-processors:

Processor Action
JamfUploaderSlacker Send notifications to a Slack channel for certain operations
JamfUploaderSlackerTeamsNotifier 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 instrictions, 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

Jamf API Tool

Please go to Jamf API Tool

Standalone upload scripts

Please go to Standalone Scripts.

The standalone scripts require a python 3 installation.

Note: the standalone jamf_X_uploader.py scripts are no longer maintained.
Please see instructions for using the AutoPkg processors as standalone scripts by using the jamf-upload.sh wrapper script, below. This will give equivalent functionality to the standalone scripts, without me having to maintain the standalone scripts in addition to the AutoPkg processors.