An implementation of an external patch source for Jamf Pro. The Patch Server provides the endpoints for Jamf Pro to read and subscribe to your custom software title definitions and a API for managing those definitions.
This is a work in progress application. The UI and API are being iterated on with each update. Some buttons in the Web UI may not be functional yet.
Create a Python virtual environment and install the project requirements to it.
cd /path/to/PatchServer
virtualenv ./venv
source ./venv/bin/activate
pip install ./requirements.txt
Run the application.
python run.py
You will be able to access the application using localhost
or your computer's IP address.
Go to http://localhost/
in a browser to view all titles that are available on the Patch Server.
http://localhost/jamf/v1/software
Lists all available titles for Jamf Pro.
http://localhost/jamf/v1/software/<Title>,<Title>
Lists a subset of titles, separated by comma, for Jamf Pro.
http://localhost/jamf/v1/patch/<Title>
Returns the full definition of a title.
http://localhost/api/v1/title
POST
: Create a new title. You may optionally send a full patch definition from another source to this endpoint.
{ "id": "", "name": "", "publisher": "", "appName": "", "bundleId": "" } - Or full definition - { "id": "", "name": "", "publisher": "", "appName": "", "bundleId": "", "requirements": [...], "patches": [...], "extensionAttributes": [...] }
http://localhost/api/v1/title/<Title>
DELETE
: Delete a title.
PUT
: Update a title. You cannot change the id
of a title. Additional objects included will be ignored with this operation.
{ "name": "", "publisher": "", "appName": "", "bundleId": "" }
http://localhost/api/v1/title/<Title>/requirements
POST
: Add requirements to a title. These requirements must be within an array under an items
key.
{ "name": "", "operator": "", "value": "", "type": "", "and": "" }
http://localhost/api/v1/title/<Title>/patches
GET
: Returns all patch versions of a title.
POST
: Add patch versions to a title.
{ "version": "", "releaseDate": "", "standalone": true, "minimumOperatingSystem": "", "reboot": false, "capabilities": [...], "components": [...], "killApps": [...] }