Skip to content
Richard Glaser edited this page Mar 20, 2021 · 31 revisions

Home

python-jamf is a Python 3 module to access the Jamf Pro Classic API. The Classic API is the primary tool for programmatic access to data on a Jamf Pro server to allow integrations with other utilities or systems. The concept behind it is to have a class or simply a collection of data (variables) and methods (functions) that maps directly to the API (https://example.com:8443/api).

The Classic API supports Basic Authentication and uses the standard User Accounts and Groups functionality of Jamf Pro. The Create, Read, Update and Delete privileges for an account or group within Jamf Pro correspond respectively with the POST, GET, PUT and DELETE HTTP methods.

See the Classic API Overview documentation for more details.

At JNUC 2016, Jamf announced the Jamf Pro Universal API (aka Jamf Pro API). This API is the underlying framework that Jamf Pro uses to display information in much of its web interface. In the longterm, the Jamf Pro API is supposed to meet and exceed the functionality of the Classic API. But, due to the expansive Classic API framework currently in place, the Jamf Pro API project will take some time according to jamf. So, the python-jamf module currently integrates the Classic API as the Jamf Pro API is lacking in features and supported that is needed, but we will plan on integrating support for the new Jamf Pro API when it features and functionality meet the python-jamf requirements.

The python-jamf API class doesn't hide anything from you. It handles the URL requests, authentication, and converts between XML/JSON to Python dictionaries/lists.

The python-jamf module also provides undocumented access to Jamf Admin functionality used for uploading items to Jamf Distribution Points.

Currently, python-jamf supports 56 Jamf records (e.g. Buildings, Categories, Computers, OSXConfigurationProfiles, Policies).

Each record is a Python object, but they are generic. Objects do not have member variables for Jamf data. All Jamf Pro data is stored as a Python dictionary that is accessed with the data() method. Lists of records and individual records use the same object type as well. So all class names are plural, regardless if they represent a list of objects or one object.

Almost all of our design decisions were based on our primary goal to make this project as minimal as possible but to be as functional as possible. The reason why we value minimalism so much is that we wanted to be able to create python-jamf as quickly as possible but maintain it with minimal effort.

Start at the Introduction