Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project attempts to adhere to Semantic Versioning.

IMPORTANT: Known Security Issue in v1.5.3 and below

Versions of ruby-jss prior to 1.6.0 contain a known security issue due to how we were using the ‘plist’ gem.

This has been resolved in 1.6.0, which now uses the CFProperlyList gem.

Please update all installations of ruby-jss to at least v1.6.0.

Many many thanks to actae0n of Blacksun Hackers Club for reporting this issue and providing examples of how it could be exploited.

——–

[4.1.1] 2024-06-25

Changed

Fixed

——–

[4.1.0] 2024-04-06

Changed

——–

[4.0.0] 2024-02-05

Changed

Added

Fixed

Deprecated

——–

[3.2.1] 2023-09-12

Fixed

——–

[3.2.1] 2023-09-08

Fixed

——–

[3.2.0] 2023-09-05

Added

Changed

Fixed

[3.1.0] 2023-06-06

Added

Fixed

Changed

[3.0.0] - 2023-05-22

Major version bump because changes to policy log flushing are not backward compatible.

Added

Fixed

Changed

[2.1.1] - 2022-11-07

Fixed & Deprecated

[2.1.0] - 2022-10-10

Added

Fixed

[2.0.0] - 2022-09-12

Version 2.0.0 is a major refactoring of ruby-jss. While attempting to provide as much backward compatibility as possible, there are some significant changes and v2.0.0 is not fully backward compatible. PLEASE TEST YOUR CODE EXTENSIVELY

Here are the high-level changes and there are many many others. For more details, see CHANGES-2.0.0.md

Added

Changed

These things are notably different in v2.0.0 - Paged queries to the Jamf Pro API - API data are no longer cached for the JP API, possibly eventually for the classic - No Attribute aliases for Jamf Pro API objects - Class/Mixin hierarchy for Jamf Pro API objects - Support for 'Sticky Sessions' in Jamf Cloud - The valid_id method for Classic API collection classes

Deprecated

These things will go away in some future version of ruby-jss, please update your code sooner than later.

[1.6.7] - 2022-02-22

Added

[1.6.6] - 2022-02-06

Added

[1.6.5] - 2021-10-14

Fixed

Added

[1.6.4] - 2021-10-04

Fixed

Added

[1.6.3] - 2021-09-13

Fixed

Changed

[1.6.1] - 2021-07-27

Fixed

Changed

[1.6.0] - 2021-05-24

Fixed

Changed

Security

Many many thanks to actae0n of Blacksun Hackers Club for reporting this security issue and providing examples of how it could be exploited.

[1.5.3] - 2020-12-28

Fixed

[1.5.2] - 2020-12-21

Added

Changed

Fixed

[1.5.1] - 2020-11-16

IMPORTANT: New minimum require ruby version is 2.3.0

Big thanks to @cybertunnel for many enhancements and fixes.

Added

Changed

Fixed

[1.4.1] - 2020-10-01

Added

[1.4.0] - 2020-09-14

Added

Changed

Fixed

[1.3.3] - 2020-08-07

Fixed

[1.3.2] - 2020-07-31

Many thanks to @cybertunnel for adding a huge amount of code to get JSS::Policy fully implimented, as well as other fixes and updates!

Added

Changed

[1.3.1] - 2020-06-21

Changed

Fixed

[1.3.0] - 2020-06-05

Added

Changed

Fixed

[1.2.15] - 2020-04-30

Fixed

[1.2.13] - 2020-04-29

Fixed

[1.2.12] - 2020-04-29

Added

Changed

[1.2.11] - 2020-04-26

Fixed

[1.2.10] - 2020-04-25

Added

Fixed

Changed

[1.2.9] - 2020-04-13

Fixed

[1.2.8] - 2020-04-12

Added

Changed

[1.2.7] - 2020-04-01

Changed

[1.2.6] - 2020-04-01

Fixed

[1.2.5] - 2020-03-30

Fixed

[1.2.4] - 2020-03-16

Added

The Jamf Pro API, formerly known as the ‘Universal’ API, aims to be a far more robust, modern, and standardized way to programmatically access a Jamf Pro server. While its been in development for a while, it is finally starting to settle in to some standards, to the point that its worth releasing some early ruby-jss code to access it.

Because the JP-API is so fundamentally different from the Classic API, it’s being implemented as a totally separate ruby module ‘Jamf’, and many of the underlying standards of ruby-jss’s JSS module are being re-thought and modernized, much like the JP-API itself. Classic API access using the JSS module is unchanged, and will continue to get fixes and other updates as needed. However many things in the Jamf module will behave differently from the JSS module, at least in detail if not concept.

For requirements and details of using the Jamf module to access the Jamf Pro API, see lib/jamf/README-JP-API.md.

IMPORTANT: As with the JP-API, The Jamf module is an early work-in-progress, and things might change drastically at any point. Please mention ‘ruby-jss’ in MacAdmins Slack channels jamf-api or ruby, or email ruby-jss@pixar.com, or open an issue on github if you have questions or want to contribute.

Changed

[1.2.3] - 2019-10-31

Added

Fixed

Changed

[1.2.0] - 2019-10-17

Added

Fixed

Changed

[1.1.3] - 2019-09-23

Added

Fixed

Changed

[1.0.4] - 2019-05-06

Added

NOTE: Checksum calculation can be slow, especially for large packages on a network server.

WARNING: when using a local file to calculate checksums, BE 100% SURE it is identical to the file on the distribution point, or you will get an invalid checksum.

Fixed

Changed

[1.0.2] - 2018-10-16

Added

Fixed

[1.0.1] - 2018-08-27

Added

[1.0.0] - 2018-08-10

Finally we’re going to version 1.0, which we should have done when we went opensource. Future releases will try to adhere to Semantic Versioning as described in the rubygems.org guidelines

IMPORTANT This version is not backward compatible with 0.x version. Please read the details below and test your code before deploying widely.

Changed

As of Jamf Pro 10.5. the server requires TLSv1.2 and will not accept connections using TLSv1.

COMPATIBILITY:

MacOS 10.12 and lower have an old version of the openssl library which used by the built-in ruby (/usr/bin/ruby), which does not support TLSv1.2.

If you are using macOS 10.12 or lower to connect to Jamf Pro 10.4 (the lowest Jamf server supported by this version of ruby-jss), you must specify the older TLS when using APIConnection#connect, e.g.

Jamf.cnx.connect server: 'myjss.myschool.edu', user: 'username', pw: :prompt, ssl_version: :TLSv1

Machines running macOS 10.12 or lower will not be able to connect to Jamf Pro > v10.4 with the built-in ruby openssl library. If you specify ssl_version: :TLSv1 you will get an error because the server won’t accept it. If you leave the default :TLSv1_2, ruby’s openssl library will complain that it doesn’t know about that.

If you have 10.12 or older machines that must connect to newer Jamf Pro servers with ruby-jss, there are a few options.

If you have questions about this, feel free to reach out to ruby-jss@pixar.com, or in the ruby or jss-api channels in MacAdmins slack space, for some advice.

Added

Removed

COMPATIBILITY:

existingcomp = JSS::Computer.new id: 1234 and new_pol = JSS::Policy.new id: :new, name: 'mypolicy' will now raise an error.

Instead you must use existingcomp = JSS::Computer.fetch id: 1234 and new_pol = JSS::Policy.make name: 'mypolicy'

Note that the instance methods #create (create the current instance as a new object in the JSS) and #update (send changes in the current instance to the JSS) remain unchanged, and both continue handled by #save

Fixed

[0.14.0] - 2018-05-30

Fixed

[0.13.0] - 2018-05-30

Changed

Fixed

[0.12.0] - 2018-04-16

Changed

Added

Fixed

[0.11.0] - 2018-03-12

Changed

WARNING Due to the expanded functionality of MDM commands overall, the syntax for calling .send_mdm_command may have changed, depening on how you used it. Please test your code before updating.

The primary query method (.management_history) returns the raw JSON data from the API, possibly for a subset of the data, as a Ruby Hash with symbolized keys. This data is somewhat inconsistent in its structure and content across the different types of history events, but you’re welcome to use it if needed.

All other methods now return Arrays of various instances of classes defined in the module.

For example, the {JSS::MobileDevice.audit_history} method returns an Array of JSS::ManagementHistory::AuditEvent instances, and the {JSS::Computer.completed_policies} gives an Array of JSS::ManagementHistory::PolicyLog objects. These objects are read-only and provide access to their values via attribute-style methods, and hash-like keys, similar to how OpenStruct objects do.

As with MDM command handling, and computer app usage and mgmt data, the work is done by class methods, so that the data is available without creating instances of the Computers or MobileDevices, and the instance methods just call the class methods.

WARNING these changes mean that the methods returning Arrays of ManagementHistory class instances are not backward compatible, since the earlier versions returned Hashes

Added

Fixed

Deprecated

These methods have been updated to work with the new methods in the MDM and ManagementHistory modules, but will be removed from JSS::APIConnection in a future release. Instead, call them directly from the JSS::Computer or JSS::MobileDevice classes, passing in the desired APIConnection if needed. Given the expansion of MDM commands and history details, maintaining the convenience methods in APIConnection is too prone to errors.

[0.10.2] - 2018-02-16

Fixed

[0.10.1] - 2017-11-08

Added

Previously, attempts to set the value would raise an exception, because those values aren't modifiable in the WebUI. However, the API itself allows such modification, so now ruby-jss does too.

Unfortunately there is no way to get at this data via the API, but if you can connect to the MySQL database (JSS::DB_CNX.connect) then you can call #object_history and #add_object_history_entry for individual object instances.

Fixed

[0.10.0] - 2017-10-09

Changed

The default/active connection continues to work as always, so your existing code will be fine. See the documentation for the JSS::APIConnection class for details.

Fixed

Added

[0.9.3] - 2017-08-08

Added

[0.9.2] - 2017-07-25

Fixed

[0.9.0] - 2017-07-17

Changed

Added

Fixed

[0.8.3] - 2017-06-07

Fixed

[0.8.2] - 2017-06-07

Fixed

[0.8.1] - 2017-06-05

Changed

Fixed

[0.8.0] - 2017-04-07

Changed

Added

Fixed

[0.7.0] - 2017-02-01

Changed

Fixed

[0.6.7] - 2017-01-03

Added

[0.6.6] - 2016-11-30

Changed

Added

[0.6.5] - 2016-08-10

Changed

Added

Fixed

[0.6.4] - 2016-03-24

Changed

Added

Fixed

[0.6.3] - 2016-03-09

Maintenence version bump to fix an issue uploading to rubygems.org

[0.6.2] - 2016-03-08

As of v0.6.2, the github project, and rubygem have been renamed to ‘ruby-jss’. The ‘require’ name is now ‘jss’.

In part this was to make the name more in-line with other ruby gems, and also to get in line with Shea Craig's python-jss and Charles Edge's swift-jss

Yes we now have native API access in 3 languages!

The ‘jss-api’ gem has been updated one last time, also to v0.6.2. That gem has a dependency on ruby-jss v0.6.2 or greater, and if you require ‘jss-api’ with it, it merely requires ‘jss’ for you. While that will provide backward-compatibility, please update your code to require ‘jss’ directly, since the jss-api wrapper gem won’t be around forever.

Changed

Added

Fixed

[0.6.1] - 2016-03-01

Added

[0.6.0] - 2016-01-06

This version of the jss-api gem incorporates changes needed for the upcoming release of d3 (a.k.a. depot3), a package/patch management system for Casper, which was the reason for the jss-api gem to begin with.

As such, while the JSS module will continue to be a separate git repo, specific commits of it will be submodules of the depot3 git repo, starting with this one, or one shortly hereafter.

Changed

Added

Fixed

[0.5.8] - 2015-09-22

Added

Fixed

[0.5.7] - 2015-05-26

Changed

Fixed

[0.5.6] - 2014-11-04

Changed

Fixed

[0.5.0] - 2014-10-23

Changed