Updates to the Jamf Pro API

New Contributor III
New Contributor III

Some of you may be familiar with the Jamf Pro Universal API that was announced at JNUC 2016. This API is the underlying framework that Jamf Pro uses to display information in much of its web interface. There are many benefits to the new API, including enhanced scalability and consistency. We have received a lot of interest and questions about this new technology, so I am excited to provide some updates on this project today.
The first update revolves around the naming conventions we use to refer to Jamf APIs. In order to provide more clarity around the purpose and direction of our APIs going forward we are renaming them as follows:
The API located at the /JSSResource path on each Jamf Pro server has been traditionally referred to as the “Customer API” or the “Jamf API”. We will now be referring to this API as the “Classic API”.

The Universal API, which was our internal name, (located at the /uapi path on each Jamf Pro server) will now be referred to as the “Jamf Pro API” to reflect the product focus of this API.
Our vision for the Jamf Pro API is to meet and exceed the functionality of the Classic API. Due to the expansive Classic API framework currently in place, this project will take some time. In the mean time, we do not want to hold back customers and partners from accessing this new set of functionality. In order to increase adoption of the Jamf Pro API and gain the necessary feedback and validation for this project, we are excited to announce beta availability of the Jamf Pro API for all customers and partners. 
Development on the Jamf Pro API will continue during the beta period. We will provide updates during the beta, however breaking changes may occur without versioning. Based upon the relatively low number of currently-built Jamf Pro API endpoints and current usage data around the Jamf Pro API, we believe that this should impact an extremely low number of Jamf Pro customers and partners. Your feedback and validation will be critical in guiding this project to release.
We will continue to support the existing Classic API until the new Jamf Pro API achieves full parity. Once we release the Jamf Pro API out of beta, we will determine an acceptable sunset period to ensure that customer and partner integrations can transition fully to the new Jamf Pro API technology.

For further reading about the Jamf Pro API, please visit out blog post: https://www.jamf.com/blog/defining-the-jamf-api-options/

If you have questions or concerns about the Classic or Jamf Pro API, please reach out to Jamf Developer Relations (developer.relations@jamf.com) for assistance.


Honored Contributor

Please implement XML support in the new Jamf Pro API:

I strongly encourage others to vote this up.

It's not full feature parity if you've removed the option of what we had available in the old API.

Contributor II

So the Jamf Pro API is the new one? When I load http://developer.jamf.com/apis/jamf-pro-api/index it shows "Classic API"

Edit: Nvm, you answered it. Thanks!

New Contributor III
New Contributor III

@lashomb The docs for the Jamf Pro API are located at /uapi/doc and will be documented on the Jamf Developer Portal (https://developer.jamf.com) in an upcoming release.

New Contributor

I pull XML data from the Jamf API daily. My script has not changed. Today i got the message

:1: parser error: start tag expected, '<' not found
{"computer_group":{"id":1,"name":"All Managed Clients",...

so it looks like the Jamf API is returning JSON instead of XML.

the script i use does curl ${OPTIONS} --output "${outfile}" --request GET --user "${API_USER}":"${API_PASS}" "${APIURL}${query}"

why did this change? Until i can rewrite my code, is there a way to revert to getting XML?

Honored Contributor

@thvv The Classic Jamf Pro API has not been touched. This thread is about the new Jamf Pro API.

To fix your issue, specify in the header that you want XML. An example:

curl -k -v -u "$jssUser":"$jssPass" -H "Accept: application/xml" -H "Content-Type: application/xml" "$jssURL"/JSSResource/departments -X GET -o "$DeptXML"