Skip to content
Python wrapper for the Jamf JSS Rest API
Branch: master
Clone or download
mosen Allow POST verb for singleton type configuration objects.
Don't reraise exceptions without adding anything.
Latest commit 3a511e6 Jul 1, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Merge master back into testing to incorporate hotfixes Jun 5, 2019
jss Allow POST verb for singleton type configuration objects. Jul 1, 2019
tests Messing with upload servlet support for uploadable objects outside of May 12, 2019
.gitignore Add some things to gitignore Apr 25, 2018 Changelog for 2.0.1 Sep 22, 2018 More developer testing notes Jul 29, 2018
LICENSE.txt Add LICENSE and boilerplate. May 29, 2014
Pipfile Fix host parameter in boto S3Connection constructor Jul 28, 2018 Remove spurious preference exceptions and refactor some pref code Apr 25, 2018 Update API scraper. Apr 25, 2018
pytest.ini Remove nose tests entirely Jul 28, 2018
setup.cfg Remove nose tests entirely Jul 28, 2018 Merge upstream changes for py3 compat Jan 7, 2019



This project aims to offer simple, elegant, pythonic access to the Jamf Casper JSS API.

Jamf provides access to the JSS and most of its object types through a REST API. python-jss allows you interact with the API to create new objects, list or edit the existing ones, and to upload files to configured distribution points.

The level of coverage for convenience methods and properties is primarily centered on Computer management, and specifically, those aspects which factor into policy and package management.

Automating policy creation is streamlined; however, class MobileDeviceInvitations provides nothing beyond basic JSSObject methods and properties to the API. Those aspects which I use heavily in our organization, and in support of JSSImporter, tend to be more fleshed out, whereas aspects of the JSS API that I never use tend to be minimalistic. However, based on the code here, it should be easy for anyone wishing to do so to implement a new() method for those objects they're interested in, and I would be happy to include them. Send me your pull requests!


The easiest method is to use pip to grab python-jss: $ pip install python-jss

However, if you use JSSImporter, its package installer uses easy_install since that is included on pre-10.10.5 OS X. You may want to use easy_install instead: $ easy_install -U python-jss.

If you don't have pip, you should probably get it:

Alternately, download the source and copy the python-jss package wherever you normally install your packages.

Behind the scenes, python-jss requires the requests, pyasn1, and ndg-httpsclient packages. If you install using easy-install or pip, these dependencies are handled for you. Otherwise, you'll have to acquire them yourself: easy_install -U pyasn1 ndg-httpsclient requests


python-jss on Linux has some extra dependencies if you need to be able to mount distribution points.

  • AFP distribution points require the fuse-afp package.
  • SMB distribution points require the cifs-utils package.

As I'm currently developing on Fedora, these requirements are specific to RedHat-based distros. Feel free to test and comment on Debian so I can update!


Please see the wiki for complete documentation.

Also, my blog has a series of posts about using python-jss, JSSImporter, and jss_helper, and solving unique problems using these tools.

You can’t perform that action at this time.