ruby-jss 4.1.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGES.md +84 -1
- data/README-2.0.0.md +19 -8
- data/README.md +46 -33
- data/bin/cgrouper +1 -1
- data/bin/jamfHelperBackgrounder +1 -1
- data/bin/netseg-update +2 -2
- data/data/ruby-jss.conf.example +1 -1
- data/lib/jamf/api/classic/api_objects/account.rb +6 -7
- data/lib/jamf/api/classic/api_objects/advanced_computer_search.rb +1 -1
- data/lib/jamf/api/classic/api_objects/advanced_mobile_device_search.rb +2 -2
- data/lib/jamf/api/classic/api_objects/advanced_user_search.rb +2 -2
- data/lib/jamf/api/classic/api_objects/building.rb +6 -1
- data/lib/jamf/api/classic/api_objects/categorizable.rb +4 -1
- data/lib/jamf/api/classic/api_objects/category.rb +7 -2
- data/lib/jamf/api/classic/api_objects/computer.rb +1 -1
- data/lib/jamf/api/classic/api_objects/computer_extension_attribute.rb +1 -1
- data/lib/jamf/api/classic/api_objects/computer_group.rb +1 -3
- data/lib/jamf/api/classic/api_objects/computer_invitation.rb +2 -5
- data/lib/jamf/api/classic/api_objects/creatable.rb +1 -1
- data/lib/jamf/api/classic/api_objects/criteriable/criteria.rb +7 -3
- data/lib/jamf/api/classic/api_objects/criteriable/criterion.rb +3 -1
- data/lib/jamf/api/classic/api_objects/criteriable.rb +2 -2
- data/lib/jamf/api/classic/api_objects/department.rb +2 -2
- data/lib/jamf/api/classic/api_objects/distribution_point.rb +9 -8
- data/lib/jamf/api/classic/api_objects/ebook.rb +1 -3
- data/lib/jamf/api/classic/api_objects/extendable.rb +1 -1
- data/lib/jamf/api/classic/api_objects/ibeacon.rb +2 -4
- data/lib/jamf/api/classic/api_objects/icon.rb +161 -161
- data/lib/jamf/api/classic/api_objects/ldap_server.rb +1 -1
- data/lib/jamf/api/classic/api_objects/locatable.rb +3 -3
- data/lib/jamf/api/classic/api_objects/mac_application.rb +1 -2
- data/lib/jamf/api/classic/api_objects/management_history/audit_event.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/casper_imaging_log.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/casper_remote_log.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/computer_usage_log.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/ebook.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/hash_like.rb +1 -3
- data/lib/jamf/api/classic/api_objects/management_history/mac_app_store_app.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/mdm_command.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/mobile_device_app.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/policy_log.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/screen_sharing_log.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history/user_location_change.rb +1 -1
- data/lib/jamf/api/classic/api_objects/management_history.rb +14 -5
- data/lib/jamf/api/classic/api_objects/matchable.rb +6 -7
- data/lib/jamf/api/classic/api_objects/mdm.rb +1 -1
- data/lib/jamf/api/classic/api_objects/mobile_device.rb +1 -1
- data/lib/jamf/api/classic/api_objects/mobile_device_application.rb +23 -2
- data/lib/jamf/api/classic/api_objects/mobile_device_configuration_profile.rb +1 -1
- data/lib/jamf/api/classic/api_objects/mobile_device_extension_attribute.rb +3 -3
- data/lib/jamf/api/classic/api_objects/mobile_device_group.rb +6 -7
- data/lib/jamf/api/classic/api_objects/netboot_server.rb +2 -5
- data/lib/jamf/api/classic/api_objects/network_segment.rb +7 -2
- data/lib/jamf/api/classic/api_objects/osx_configuration_profile.rb +3 -3
- data/lib/jamf/api/classic/api_objects/package.rb +37 -17
- data/lib/jamf/api/classic/api_objects/patch_external_source.rb +7 -2
- data/lib/jamf/api/classic/api_objects/patch_internal_source.rb +1 -1
- data/lib/jamf/api/classic/api_objects/patch_policy.rb +1 -1
- data/lib/jamf/api/classic/api_objects/patch_title/version.rb +1 -1
- data/lib/jamf/api/classic/api_objects/patch_title.rb +5 -4
- data/lib/jamf/api/classic/api_objects/peripheral.rb +35 -44
- data/lib/jamf/api/classic/api_objects/peripheral_type.rb +33 -39
- data/lib/jamf/api/classic/api_objects/policy.rb +1 -1
- data/lib/jamf/api/classic/api_objects/purchasable.rb +55 -47
- data/lib/jamf/api/classic/api_objects/removable_macaddr.rb +3 -4
- data/lib/jamf/api/classic/api_objects/restricted_software.rb +6 -2
- data/lib/jamf/api/classic/api_objects/scopable/scope.rb +16 -14
- data/lib/jamf/api/classic/api_objects/scopable.rb +1 -1
- data/lib/jamf/api/classic/api_objects/script.rb +18 -12
- data/lib/jamf/api/classic/api_objects/self_servable.rb +26 -8
- data/lib/jamf/api/classic/api_objects/sitable.rb +3 -1
- data/lib/jamf/api/classic/api_objects/site.rb +1 -2
- data/lib/jamf/api/classic/api_objects/software_update_server.rb +2 -4
- data/lib/jamf/api/classic/api_objects/updatable.rb +2 -1
- data/lib/jamf/api/classic/api_objects/uploadable.rb +1 -1
- data/lib/jamf/api/classic/api_objects/user.rb +25 -25
- data/lib/jamf/api/classic/api_objects/user_extension_attribute.rb +1 -1
- data/lib/jamf/api/classic/api_objects/user_group.rb +6 -8
- data/lib/jamf/api/classic/api_objects/vpp_account.rb +1 -1
- data/lib/jamf/api/classic/api_objects/vppable.rb +2 -2
- data/lib/jamf/api/classic/api_objects/web_hook.rb +12 -5
- data/lib/jamf/api/classic/base_classes/advanced_search.rb +6 -7
- data/lib/jamf/api/classic/base_classes/api_object.rb +10 -2
- data/lib/jamf/api/classic/base_classes/configuration_profile.rb +1 -1
- data/lib/jamf/api/classic/base_classes/extension_attribute.rb +2 -4
- data/lib/jamf/api/classic/base_classes/group.rb +5 -5
- data/lib/jamf/api/classic/base_classes/patch_source.rb +1 -1
- data/lib/jamf/api/classic/xml_workaround.rb +1 -1
- data/lib/jamf/api/connection/attributes.rb +1 -1
- data/lib/jamf/api/connection/cache.rb +1 -1
- data/lib/jamf/api/connection/classic_api.rb +1 -1
- data/lib/jamf/api/connection/connect.rb +1 -1
- data/lib/jamf/api/connection/constants.rb +1 -1
- data/lib/jamf/api/connection/default_connection.rb +1 -1
- data/lib/jamf/api/connection/jamf_pro_api.rb +29 -3
- data/lib/jamf/api/connection/jamf_pro_api_error.rb +5 -5
- data/lib/jamf/api/connection/token.rb +1 -1
- data/lib/jamf/api/connection.rb +1 -1
- data/lib/jamf/api/jamf_pro/api_objects/api_client.rb +5 -6
- data/lib/jamf/api/jamf_pro/api_objects/api_integration.rb +1 -1
- data/lib/jamf/api/jamf_pro/api_objects/api_role.rb +4 -1
- data/lib/jamf/api/jamf_pro/api_objects/computer_prestage.rb +2 -2
- data/lib/jamf/api/jamf_pro/api_objects/device_enrollment.rb +1 -1
- data/lib/jamf/api/jamf_pro/api_objects/inventory_preload_record.rb +1 -1
- data/lib/jamf/api/jamf_pro/api_objects/{jp_building.rb → j_building.rb} +5 -2
- data/lib/jamf/api/jamf_pro/api_objects/j_package.rb +912 -0
- data/lib/jamf/api/jamf_pro/api_objects/managed_software_updates/plan.rb +237 -0
- data/lib/jamf/api/jamf_pro/api_objects/managed_software_updates.rb +291 -0
- data/lib/jamf/api/jamf_pro/api_objects/mobile_device_prestage.rb +1 -1
- data/lib/jamf/api/jamf_pro/base_classes/oapi_object.rb +12 -4
- data/lib/jamf/api/jamf_pro/mixins/bulk_deletable.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/change_log.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/collection_resource.rb +24 -10
- data/lib/jamf/api/jamf_pro/mixins/computer_recovery_lock.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/filevault.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/filterable.rb +9 -3
- data/lib/jamf/api/jamf_pro/mixins/immutable.rb +2 -1
- data/lib/jamf/api/jamf_pro/mixins/jpapi_resource.rb +18 -5
- data/lib/jamf/api/jamf_pro/mixins/lockable.rb +2 -2
- data/lib/jamf/api/jamf_pro/mixins/macos_managed_updates.rb +3 -1
- data/lib/jamf/api/jamf_pro/mixins/macos_redeploy_mgmt_framework.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/prestage.rb +4 -1
- data/lib/jamf/api/jamf_pro/mixins/sortable.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/uncreatable.rb +1 -1
- data/lib/jamf/api/jamf_pro/mixins/undeletable.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_group.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v1.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_settings_request.rb +7 -9
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_settings_response.rb +7 -9
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_error.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_error_cause.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_integration_request.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_integration_response.rb +6 -8
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_integration_search_result.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_role.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_role_request.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_role_result.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/assign_remove_profile_response_sync_state.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_account_v1.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/authentication_type.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/authorization_v1.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/available_updates.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/building.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/building_search_results.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_application.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_attachment.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_certificate.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_configuration_profile.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_alert.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_cache_detail.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_data_migration_error.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_data_migration_error_user_info.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_alert.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_capabilities.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_details.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_local_network.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_disk.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_disk_encryption.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_extension_attribute.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_font.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_general.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_hardware.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_ibeacon.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_file_vault.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_licensed_software.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_local_user_account.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_mdm_capability.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_operating_system.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_package_receipts.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition_encryption.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition_file_vault2_state.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_plugin.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_search_results_v3.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_v3.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_printer.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_purchase.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_remote_management.rb +3 -10
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_section.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_security.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_service.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_software_update.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_storage.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_user_and_location.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_device.rb +6 -8
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_device_search_results.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_disown_response.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance_search_results.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance_sync_status.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_prestage_v2.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_token.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/dss_declaration.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/dss_declarations.rb +9 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_method.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_computer_prestage_v3.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_mobile_device_prestage_v2.rb +1 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_membership.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/history_search_results_v1.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_search_results_v2.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_v2.rb +1 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_information.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_information_v2.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_managed_software_update.rb +10 -12
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_managed_software_update_response.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan.rb +29 -19
- data/lib/jamf/api/jamf_pro/oapi_schemas/{venafi_service_status.rb → managed_software_update_plan_event_store.rb} +11 -9
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan_group_post.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan_post.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan_post_response.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan_toggle.rb +9 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan_toggle_status.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plan_toggle_status_wrapper.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_plans.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_status.rb +21 -22
- data/lib/jamf/api/jamf_pro/oapi_schemas/managed_software_update_statuses.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_name_v2.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_names_v2.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_search_results_v2.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_v2.rb +2 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/o_auth_client_credentials.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history_note.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history_v1.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/package.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/packages_search_results.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_configuration_post.rb +12 -3
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_device.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_device_post.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_device_response.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_group_post.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_search_results.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_status.rb +3 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/post_computer_prestage_v3.rb +2 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_purchasing_information.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_purchasing_information_v2.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_assignment_v2.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_response_v2.rb +2 -6
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_v2.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_computer_prestage_v3.rb +2 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_mobile_device_prestage_v2.rb +2 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/redeploy_jamf_management_framework_response.rb +3 -7
- data/lib/jamf/api/jamf_pro/oapi_schemas/v1_site.rb +1 -1
- data/lib/jamf/api/jamf_pro/oapi_schemas.rb +25 -2
- data/lib/jamf/api/jamf_pro/other_classes/change_log_entry.rb +1 -1
- data/lib/jamf/api/jamf_pro/other_classes/ip_address.rb +2 -3
- data/lib/jamf/api/jamf_pro/other_classes/pager.rb +1 -1
- data/lib/jamf/api/jamf_pro/other_classes/timestamp.rb +1 -1
- data/lib/jamf/base_class.rb +1 -1
- data/lib/jamf/client/jamf_binary.rb +1 -1
- data/lib/jamf/client/jamf_helper.rb +1 -1
- data/lib/jamf/client/management_action.rb +1 -1
- data/lib/jamf/client.rb +5 -1
- data/lib/jamf/composer.rb +115 -107
- data/lib/jamf/configuration.rb +137 -138
- data/lib/jamf/constants.rb +1 -1
- data/lib/jamf/db_connection.rb +13 -19
- data/lib/jamf/deprecations/deprecated_api_connection_class.rb +1 -1
- data/lib/jamf/deprecations/deprecated_api_constant.rb +3 -1
- data/lib/jamf/deprecations/deprecated_config_constant.rb +3 -1
- data/lib/jamf/deprecations.rb +1 -1
- data/lib/jamf/exceptions.rb +2 -2
- data/lib/jamf/oapi_validate.rb +2 -1
- data/lib/jamf/ruby_extensions/array/predicates.rb +1 -1
- data/lib/jamf/ruby_extensions/array/utils.rb +1 -1
- data/lib/jamf/ruby_extensions/array.rb +1 -1
- data/lib/jamf/ruby_extensions/filetest/predicates.rb +1 -1
- data/lib/jamf/ruby_extensions/filetest.rb +1 -1
- data/lib/jamf/ruby_extensions/hash/utils.rb +2 -2
- data/lib/jamf/ruby_extensions/hash.rb +1 -1
- data/lib/jamf/ruby_extensions/ipaddr/utils.rb +11 -13
- data/lib/jamf/ruby_extensions/ipaddr.rb +1 -1
- data/lib/jamf/ruby_extensions/object/predicates.rb +1 -1
- data/lib/jamf/ruby_extensions/object.rb +1 -1
- data/lib/jamf/ruby_extensions/pathname/predicates.rb +1 -1
- data/lib/jamf/ruby_extensions/pathname/utils.rb +1 -1
- data/lib/jamf/ruby_extensions/pathname.rb +1 -1
- data/lib/jamf/ruby_extensions/string/conversions.rb +1 -1
- data/lib/jamf/ruby_extensions/string/predicates.rb +1 -1
- data/lib/jamf/ruby_extensions/string.rb +1 -1
- data/lib/jamf/ruby_extensions/time/utils.rb +2 -3
- data/lib/jamf/ruby_extensions/time.rb +1 -1
- data/lib/jamf/ruby_extensions.rb +1 -1
- data/lib/jamf/utility.rb +1 -1
- data/lib/jamf/validate.rb +1 -1
- data/lib/jamf/version.rb +2 -2
- data/lib/jamf/zeitwerk_config.rb +1 -1
- data/lib/jamf.rb +1 -1
- data/lib/jss-api.rb +1 -1
- data/lib/jss.rb +1 -1
- data/lib/ruby-jss.rb +1 -1
- data/test/bin/runtests +3 -3
- data/test/lib/jamf_test/APITest.rb +7 -6
- data/test/lib/jamf_test/advanced_search.rb +1 -2
- data/test/lib/jamf_test/auth.rb +1 -1
- data/test/lib/jamf_test/collection_tests.rb +13 -5
- data/test/lib/jamf_test/prestage_tests.rb +1 -1
- data/test/lib/jamf_test.rb +1 -1
- data/test/tests/advanced_computer_search.rb +1 -1
- data/test/tests/advanced_mobile_device_search.rb +1 -1
- data/test/tests/advanced_user_search.rb +1 -1
- data/test/tests/building.rb +1 -1
- data/test/tests/category.rb +1 -1
- data/test/tests/computer.rb +1 -1
- data/test/tests/computer_group.rb +30 -14
- data/test/tests/computer_prestage.rb +1 -1
- data/test/tests/department.rb +1 -1
- data/test/tests/device_enrollment.rb +4 -2
- data/test/tests/inventory_preload_record.rb +1 -1
- data/test/tests/{jp_building.rb → j_building.rb} +3 -3
- data/test/tests/j_package.rb +47 -0
- data/test/tests/mobile_device.rb +1 -1
- data/test/tests/mobile_device_prestage.rb +1 -2
- data/test/tests/policy.rb +1 -1
- metadata +9 -465
- data/lib/jamf/api/jamf_pro/oapi_schemas/access_groups_preview_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/access_groups_v2_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/account.rb +0 -159
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_driven_user_enrollment_session_token_settings.rb +0 -97
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_search_type.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_user_interface_display_theme.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v4.rb +0 -142
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v5.rb +0 -299
- data/lib/jamf/api/jamf_pro/oapi_schemas/activation_code.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search.rb +0 -117
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search_criteria_choices.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_user_content_search.rb +0 -117
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_user_content_search_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_role_privileges.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_analytics_setting.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_config_reinstall_code.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_path.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_form_input_field.rb +0 -115
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_form_input_field_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_settings.rb +0 -104
- data/lib/jamf/api/jamf_pro/oapi_schemas/application_attributes.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/application_configuration.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/assignment.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/attributes.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_account.rb +0 -159
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_token.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_token_v1.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/authorization.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/available_os_updates.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration_request.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration_update.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_mappings.rb +0 -156
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration.rb +0 -160
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration_request.rb +0 -152
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration_update.rb +0 -138
- data/lib/jamf/api/jamf_pro/oapi_schemas/branding_image_url.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/cache_settings.rb +0 -150
- data/lib/jamf/api/jamf_pro/oapi_schemas/categories_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/category.rb +0 -104
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_details.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_identity_v2.rb +0 -112
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_key.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_record.rb +0 -146
- data/lib/jamf/api/jamf_pro/oapi_schemas/change_password.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/classic_ldap_mappings.rb +0 -168
- data/lib/jamf/api/jamf_pro/oapi_schemas/clear_restrictions_password_command.rb +0 -77
- data/lib/jamf/api/jamf_pro/oapi_schemas/client_check_in_v3.rb +0 -134
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_distribution_point_upload_capability.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common.rb +0 -108
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common_request.rb +0 -97
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common_response.rb +0 -108
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_connection_pool_statistics.rb +0 -170
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_connection_status.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_keystore.rb +0 -102
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_keystore_file.rb +0 -103
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_mappings_request.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_mappings_response.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_request.rb +0 -157
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_response.rb +0 -154
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_update.rb +0 -154
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_response.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/compliance_vendor_device_information.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_general_update.rb +0 -124
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_group.rb +0 -97
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_hardware_update.rb +0 -106
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_collection_preferences.rb +0 -177
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_collection_settings.rb +0 -108
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_file_vault_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_recovery_lock_password_response.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_update_request.rb +0 -124
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_location.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_operating_system_update.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_overview.rb +0 -194
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_search_results_v2.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_v2.rb +0 -129
- data/lib/jamf/api/jamf_pro/oapi_schemas/computers_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/configuration_profile.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/configuration_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_candidate_request.rb +0 -123
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_response.rb +0 -123
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_status_response.rb +0 -85
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_update_request.rb +0 -109
- data/lib/jamf/api/jamf_pro/oapi_schemas/country.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/country_codes.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/create_path.rb +0 -97
- data/lib/jamf/api/jamf_pro/oapi_schemas/credentials.rb +0 -129
- data/lib/jamf/api/jamf_pro/oapi_schemas/csa_token.rb +0 -96
- data/lib/jamf/api/jamf_pro/oapi_schemas/current_account.rb +0 -160
- data/lib/jamf/api/jamf_pro/oapi_schemas/current_authorization.rb +0 -97
- data/lib/jamf/api/jamf_pro/oapi_schemas/dashboard_api_error.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/dashboard_item.rb +0 -131
- data/lib/jamf/api/jamf_pro/oapi_schemas/dashboard_setup.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/dashboard_setup_task.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/data_roaming_setting.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/database_password.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/day_of_week.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/declarative_management_command.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/delete_user_command.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/department.rb +0 -98
- data/lib/jamf/api/jamf_pro/oapi_schemas/departments_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/deployment_task.rb +0 -129
- data/lib/jamf/api/jamf_pro/oapi_schemas/deployment_task_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/details_v2.rb +0 -264
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_communication_settings.rb +0 -128
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_compliance_information.rb +0 -123
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_disown_body.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_prestage.rb +0 -215
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_information_command.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/diagnostic_submission_setting.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/dock_item.rb +0 -124
- data/lib/jamf/api/jamf_pro/oapi_schemas/download_url.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook.rb +0 -152
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_exclusions.rb +0 -137
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_limitations.rb +0 -97
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_scope.rb +0 -170
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/enable_lost_mode_command.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/engage.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_access_group_preview.rb +0 -141
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_access_group_v2.rb +0 -132
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization.rb +0 -106
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_branding_settings.rb +0 -111
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_dependencies.rb +0 -85
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_dependency.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_ldap_group_access.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_ldap_auth.rb +0 -121
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_list.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_sso_auth.rb +0 -113
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_text.rb +0 -112
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_search_results_v2.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_v2.rb +0 -116
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_method_prestage.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_process_text_object.rb +0 -346
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_settings_v2.rb +0 -278
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_settings_v3.rb +0 -246
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_settings_v4.rb +0 -264
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_sso_config.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/erase_device_command.rb +0 -120
- data/lib/jamf/api/jamf_pro/oapi_schemas/export_field.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/export_parameters.rb +0 -133
- data/lib/jamf/api/jamf_pro/oapi_schemas/extension_attribute_v2.rb +0 -116
- data/lib/jamf/api/jamf_pro/oapi_schemas/external_recipient.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment_delete.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment_v2.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_data.rb +0 -117
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_transfer_item.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/font_path.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_computer_prestage_v2.rb +0 -104
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_ldap_auth.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_sso_auth.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_text.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_mobile_device_prestage.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_mappings.rb +0 -138
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search.rb +0 -106
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search_request.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search_response.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/gsx_connection.rb +0 -127
- data/lib/jamf/api/jamf_pro/oapi_schemas/gsx_connection_update.rb +0 -114
- data/lib/jamf/api/jamf_pro/oapi_schemas/gsx_keystore.rb +0 -117
- data/lib/jamf/api/jamf_pro/oapi_schemas/gsx_test_response.rb +0 -96
- data/lib/jamf/api/jamf_pro/oapi_schemas/history_search_results.rb +0 -151
- data/lib/jamf/api/jamf_pro/oapi_schemas/href_response.rb +0 -194
- data/lib/jamf/api/jamf_pro/oapi_schemas/icon_response.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/id_and_name_v2.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/ids.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/initialize_v1.rb +0 -133
- data/lib/jamf/api/jamf_pro/oapi_schemas/install_package.rb +0 -103
- data/lib/jamf/api/jamf_pro/oapi_schemas/internal_recipient.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_information.rb +0 -113
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_list_mobile_device.rb +0 -680
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_list_mobile_device_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_error.rb +0 -123
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_error.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_error_cause.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_success.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute_column.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute_column_result.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_invalid_csv_response.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record.rb +0 -248
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_search_results.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_branding_configuration.rb +0 -129
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_branding_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_application_response.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_package_response.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_information.rb +0 -124
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_information_v2.rb +0 -124
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_server_url.rb +0 -85
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_version.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_protect_plan.rb +0 -125
- data/lib/jamf/api/jamf_pro/oapi_schemas/jcds_properties.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/language_code.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_account_management_history.rb +0 -123
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_account_management_history_response.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_audit.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_audit_v2.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_history.rb +0 -114
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_history_response.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_password_and_audits.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_password_and_audits_v2.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_password_audits_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_password_audits_results_v2.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_password_response.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_password_response_v2.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_pending_rotation.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_pending_rotation_response.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_settings_request.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_settings_request_v2.rb +0 -108
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_settings_response.rb +0 -99
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_settings_response_v2.rb +0 -106
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_password.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_password_request.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_password_request_v2.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_password_response.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_password_response_v2.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_password_v2.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_results_v2.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/laps_user_v2.rb +0 -106
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_request.rb +0 -99
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_response.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_update.rb +0 -99
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_group.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_group_search_results.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_server.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/linked_connect_profile.rb +0 -126
- data/lib/jamf/api/jamf_pro/oapi_schemas/linked_connect_profile_search_results.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/locale.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_v2.rb +0 -124
- data/lib/jamf/api/jamf_pro/oapi_schemas/log_out_user_command.rb +0 -77
- data/lib/jamf/api/jamf_pro/oapi_schemas/login_content.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/login_content_put.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_branding_configuration.rb +0 -118
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_branding_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/markdown.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_client_type.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command.rb +0 -109
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_base.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_client.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_client_request.rb +0 -81
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_request.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_results.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_state.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_type.rb +0 -98
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_mappings.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_test_search_request.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_test_search_response.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/memcached_endpoints.rb +0 -114
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_application.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_application_inventory_detail.rb +0 -123
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_attachment_v2.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_certificate.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_certificate_v2.rb +0 -147
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details_get_v2.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details_v2.rb +0 -295
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_ebook.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_ebook_inventory_detail.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_extension_attribute.rb +0 -125
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_extension_attribute_results.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_general.rb +0 -216
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_group.rb +0 -96
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_hardware.rb +0 -160
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_inventory.rb +0 -136
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_inventory_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_ios_general.rb +0 -191
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_ios_inventory.rb +0 -134
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_lost_mode_location.rb +0 -118
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_network.rb +0 -180
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage.rb +0 -136
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_name.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_names.rb +0 -118
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_profile.rb +0 -112
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_provisioning_profiles.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_purchasing.rb +0 -157
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_response.rb +0 -74
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_results_v2.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_section.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_security.rb +0 -178
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_service_subscriptions.rb +0 -173
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_shared_user.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_tv_os_general.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_tv_os_inventory.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_user_and_location.rb +0 -142
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_user_profile.rb +0 -118
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_v2.rb +0 -160
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_watch_os_general.rb +0 -112
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_watch_os_inventory.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/network_v2.rb +0 -179
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification.rb +0 -96
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification_type.rb +0 -147
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification_v1.rb +0 -96
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history.rb +0 -141
- data/lib/jamf/api/jamf_pro/oapi_schemas/onboarding_configuration.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/onboarding_eligible_item.rb +0 -104
- data/lib/jamf/api/jamf_pro/oapi_schemas/onboarding_eligible_items_search_result.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/onboarding_item.rb +0 -140
- data/lib/jamf/api/jamf_pro/oapi_schemas/package_manifest.rb +0 -148
- data/lib/jamf/api/jamf_pro/oapi_schemas/parent_app.rb +0 -131
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policies.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_detail.rb +0 -190
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_details.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_list_view.rb +0 -142
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_detail.rb +0 -102
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_detail_action.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_eligible_retry_count.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_retry.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_v2.rb +0 -133
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_logs.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_v2_on_dashboard.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration_base.rb +0 -163
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration_definition_kill_app.rb +0 -81
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration_dependencies.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration_dependency.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration_extension_attributes.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_configuration_patch.rb +0 -126
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_definition.rb +0 -118
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_definitions.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_extension_attributes.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_packages.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_report.rb +0 -130
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_software_title_report_search_result.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_summary.rb +0 -125
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_summary_version.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/personal_hotspot_setting.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/plugin_path.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/policy_properties.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/policy_properties_v1.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/post_computer_prestage_v2.rb +0 -85
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_dependencies.rb +0 -85
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_dependency.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_file_attachment.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_file_attachment_v2.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope.rb +0 -84
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_assignment.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_response.rb +0 -109
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_update.rb +0 -113
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_sync_status.rb +0 -98
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_sync_status_v2.rb +0 -98
- data/lib/jamf/api/jamf_pro/oapi_schemas/process_texts_search_results.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_registration_request.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_settings_response.rb +0 -141
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_updatable_settings_request.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/purchasing_v2.rb +0 -153
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_computer_prestage_v2.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_mobile_device_prestage.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/recalculation_results.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/reenrollment.rb +0 -117
- data/lib/jamf/api/jamf_pro/oapi_schemas/remote_administration_response.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/remote_administration_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/renew_mdm_profile_response.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/restart_device_command.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/return_to_service_configuration.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/return_to_service_configuration_request.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/return_to_service_configuration_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/safelisted_app.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/scheduler_job.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/scheduler_jobs.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/scheduler_summary.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/scheduler_trigger.rb +0 -95
- data/lib/jamf/api/jamf_pro/oapi_schemas/script.rb +0 -193
- data/lib/jamf/api/jamf_pro/oapi_schemas/scripts_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/security_v2.rb +0 -130
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_install_settings.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_interaction_settings.rb +0 -122
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_login_settings.rb +0 -113
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_settings.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/session.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_candidate_request.rb +0 -108
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_details.rb +0 -175
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_details_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_history_item.rb +0 -145
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_history_item_details.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_history_item_with_details.rb +0 -153
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_history_search_results.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_status.rb +0 -98
- data/lib/jamf/api/jamf_pro/oapi_schemas/set_auto_admin_password_command.rb +0 -92
- data/lib/jamf/api/jamf_pro/oapi_schemas/set_recovery_lock_command.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/settings_command.rb +0 -166
- data/lib/jamf/api/jamf_pro/oapi_schemas/shared_device_compliance_feature_toggle.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/shared_device_configuration.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/shut_down_device_command.rb +0 -77
- data/lib/jamf/api/jamf_pro/oapi_schemas/signature.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/site.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/site_object.rb +0 -150
- data/lib/jamf/api/jamf_pro/oapi_schemas/smart_search_criterion.rb +0 -118
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_basic_credentials.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_connection_settings.rb +0 -113
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_graph_api_credentials.rb +0 -98
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_sender_settings.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_server.rb +0 -158
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_server_test.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/smtp_server_v2.rb +0 -127
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_title_configuration_on_dashboard.rb +0 -82
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_update_settings.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_failover_data.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore.rb +0 -128
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_cert_parse_response.rb +0 -130
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_details.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_parse.rb +0 -103
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_response.rb +0 -120
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_response_with_details.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_with_details.rb +0 -93
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_metadata_url.rb +0 -85
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_settings_v1.rb +0 -253
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_settings_v2.rb +0 -253
- data/lib/jamf/api/jamf_pro/oapi_schemas/startup_status.rb +0 -197
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_group.rb +0 -94
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_group_assignment.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_group_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_group_summary.rb +0 -101
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_user_group.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_certificate_upload.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_create.rb +0 -91
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_update.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_features.rb +0 -105
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_settings_request.rb +0 -108
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_settings_response.rb +0 -122
- data/lib/jamf/api/jamf_pro/oapi_schemas/time_frame.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/time_zone.rb +0 -107
- data/lib/jamf/api/jamf_pro/oapi_schemas/tv_os_details.rb +0 -141
- data/lib/jamf/api/jamf_pro/oapi_schemas/udids.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_ios_v2.rb +0 -81
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_mobile_device_v2.rb +0 -137
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_tv_os.rb +0 -88
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_mappings.rb +0 -193
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_preferences_settings.rb +0 -100
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_attributes.rb +0 -117
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search.rb +0 -112
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search_request.rb +0 -83
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search_response.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_ca_record.rb +0 -148
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_pki_payload_record.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_pki_payload_record_search_results.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/verbose_package_deployment_response.rb +0 -90
- data/lib/jamf/api/jamf_pro/oapi_schemas/voice_roaming_setting.rb +0 -87
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_content.rb +0 -154
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_content_list.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_list_view.rb +0 -184
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_patch.rb +0 -111
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_post.rb +0 -114
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_locations.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscription.rb +0 -86
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscription_base.rb +0 -127
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscriptions.rb +0 -89
- data/lib/jamf/api/jamf_pro/oapi_schemas/watch_os_details_v2.rb +0 -201
- data/lib/jamf/api/jamf_pro/oapi_schemas/web_link.rb +0 -87
@@ -0,0 +1,912 @@
|
|
1
|
+
# Copyright 2025 Pixar
|
2
|
+
|
3
|
+
#
|
4
|
+
# Licensed under the Apache License, Version 2.0 (the "Apache License")
|
5
|
+
# with the following modification; you may not use this file except in
|
6
|
+
# compliance with the Apache License and the following modification to it:
|
7
|
+
# Section 6. Trademarks. is deleted and replaced with:
|
8
|
+
#
|
9
|
+
# 6. Trademarks. This License does not grant permission to use the trade
|
10
|
+
# names, trademarks, service marks, or product names of the Licensor
|
11
|
+
# and its affiliates, except as required to comply with Section 4(c) of
|
12
|
+
# the License and to reproduce the content of the NOTICE file.
|
13
|
+
#
|
14
|
+
# You may obtain a copy of the Apache License at
|
15
|
+
#
|
16
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
17
|
+
#
|
18
|
+
# Unless required by applicable law or agreed to in writing, software
|
19
|
+
# distributed under the Apache License with the above modification is
|
20
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
21
|
+
# KIND, either express or implied. See the Apache License for the specific
|
22
|
+
# language governing permissions and limitations under the Apache License.
|
23
|
+
#
|
24
|
+
#
|
25
|
+
|
26
|
+
# frozen_string_literal: true
|
27
|
+
|
28
|
+
require 'cfpropertylist'
|
29
|
+
|
30
|
+
# The main Module
|
31
|
+
module Jamf
|
32
|
+
|
33
|
+
# Classes
|
34
|
+
#####################################
|
35
|
+
|
36
|
+
# A Package in the Jamf Pro API
|
37
|
+
#
|
38
|
+
#################################
|
39
|
+
class JPackage < Jamf::OAPISchemas::Package
|
40
|
+
|
41
|
+
# Mix-Ins
|
42
|
+
#####################################
|
43
|
+
|
44
|
+
include Jamf::CollectionResource
|
45
|
+
extend Jamf::Filterable
|
46
|
+
include Jamf::ChangeLog
|
47
|
+
|
48
|
+
# Constants
|
49
|
+
#####################################
|
50
|
+
|
51
|
+
########### RELATED OAPI OBJECTS
|
52
|
+
# These objects should be OAPIObjects, NOT subclasses of them and
|
53
|
+
# not Collection or Singleton resources.
|
54
|
+
|
55
|
+
# The OAPI object class we get back from a 'list' query to get the
|
56
|
+
# whole collection, or a subset of it. It contains a :results key
|
57
|
+
# which is an array of data for objects of the parent class.
|
58
|
+
SEARCH_RESULT_OBJECT = Jamf::OAPISchemas::PackagesSearchResults
|
59
|
+
|
60
|
+
# The OAPI object class we send with a POST request to make a new member of
|
61
|
+
# the collection in Jamf. This is usually the same as the parent class.
|
62
|
+
POST_OBJECT = Jamf::OAPISchemas::Package
|
63
|
+
|
64
|
+
# The OAPI object class we send with a PUT request to change an object in
|
65
|
+
# Jamf by specifying all its values. Most updates happen this way,
|
66
|
+
# and this is usually the same as the parent class
|
67
|
+
PUT_OBJECT = Jamf::OAPISchemas::Package
|
68
|
+
|
69
|
+
# The OAPI object we send with a PATCH request to change an object in
|
70
|
+
# Jamf by replacing only some of its values. This is never the same as the
|
71
|
+
# parent class, and is usually used when most of the data about an
|
72
|
+
# object cannot be changed via the API.
|
73
|
+
# PATCH_OBJECT = Jamf::OAPISchemas::Building
|
74
|
+
|
75
|
+
############# API PATHS
|
76
|
+
# TODO: See if these paths can be auto-generated from the
|
77
|
+
# OAPI schema and baked into the parent class
|
78
|
+
|
79
|
+
# The path for GETting the list of all objects in the collection, possibly
|
80
|
+
# filtered, sorted, and/or paged
|
81
|
+
# REQUIRED for all collection resources
|
82
|
+
#
|
83
|
+
# GET_PATH, POST_PATH, PUT_PATH, PATCH_PATH, and DELETE_PATH are automatically
|
84
|
+
# assumed from the LIST_PATH if they follow the standards:
|
85
|
+
# - GET_PATH = "#{LIST_PATH}/id"
|
86
|
+
# - fetch an object from the collection
|
87
|
+
# - POST_PATH = LIST_PATH
|
88
|
+
# - create a new object in the collection
|
89
|
+
# - PUT_PATH = "#{LIST_PATH}/id"
|
90
|
+
# - update an object passing all its values back.
|
91
|
+
# Most objects use this or PATCH but not both
|
92
|
+
# - PATCH_PATH = "#{LIST_PATH}/id"
|
93
|
+
# - update an object passing some of its values back
|
94
|
+
# Most objects use this or PUT but not both
|
95
|
+
# - DELETE_PATH = "#{LIST_PATH}/id"
|
96
|
+
# - delete an object from the collection
|
97
|
+
#
|
98
|
+
# If those paths differ from the standards, the constants must be defined
|
99
|
+
# here
|
100
|
+
#
|
101
|
+
LIST_PATH = 'v1/packages'
|
102
|
+
|
103
|
+
# Identifiers not marked in the superclass's OAPI_PROPERTIES constant
|
104
|
+
# which usually only identifies ':id'
|
105
|
+
ALT_IDENTIFIERS = %i[packageName fileName].freeze
|
106
|
+
|
107
|
+
# If the object does not have a 'name' attribute, this is the attribute
|
108
|
+
# that holds its name. Used to allow referencing objects by 'name',
|
109
|
+
# creates a alias of the attribute called "name" and "name=",
|
110
|
+
# and allows the use of "name:" as an identifier in the .fetch, .valid_id and
|
111
|
+
# similar methods.
|
112
|
+
OBJECT_NAME_ATTR = :packageName
|
113
|
+
|
114
|
+
# Must define this when extending Filterable
|
115
|
+
FILTER_KEYS = %i[
|
116
|
+
id fileName packageName categoryId info notes manifestFileName cloudTransferStatus
|
117
|
+
].freeze
|
118
|
+
|
119
|
+
# the suffix for the REST resource for uploading a package
|
120
|
+
UPLOAD_ENDPOINT = 'upload'
|
121
|
+
|
122
|
+
# Defaults for some required values
|
123
|
+
############
|
124
|
+
|
125
|
+
DEFAULT_CATEGORY_ID = '-1'
|
126
|
+
DEFAULT_PRIORITY = 10
|
127
|
+
DEFAULT_FUT = false
|
128
|
+
DEFAULT_REBOOT_REQUIRED = false
|
129
|
+
DEFAULT_OS_INSTALL = false
|
130
|
+
DEFAULT_SUPPRESS_UPDATES = false
|
131
|
+
DEFAULT_SUPPRESS_FROM_DOCK = false
|
132
|
+
DEFAULT_SUPPRESS_EULA = false
|
133
|
+
DEFAULT_SUPPRESS_REGISTRATION = false
|
134
|
+
|
135
|
+
# The hashType value in the API or manifests for md5
|
136
|
+
CHECKSUM_HASH_TYPE_MD5 = 'MD5'
|
137
|
+
|
138
|
+
# The hashType value in the API for sha256 - IF it exists?
|
139
|
+
CHECKSUM_HASH_TYPE_SHA256 = 'SHA_256'
|
140
|
+
|
141
|
+
# The hashType value in MDM deploy manifests for sha256
|
142
|
+
CHECKSUM_HASH_TYPE_SHA256_MDM_DEPLOY = 'SHA256'
|
143
|
+
|
144
|
+
# The hashType value in the API for sha512
|
145
|
+
CHECKSUM_HASH_TYPE_SHA512 = 'SHA_512'
|
146
|
+
|
147
|
+
# Mapping of the hash types to the maching Digest modules
|
148
|
+
# See {.calculate_checksum}
|
149
|
+
CHECKSUM_HASH_TYPES = {
|
150
|
+
CHECKSUM_HASH_TYPE_MD5 => Digest::MD5,
|
151
|
+
CHECKSUM_HASH_TYPE_SHA256 => Digest::SHA256,
|
152
|
+
CHECKSUM_HASH_TYPE_SHA512 => Digest::SHA512
|
153
|
+
}.freeze
|
154
|
+
|
155
|
+
DEFAULT_CHECKSUM_HASH_TYPE = CHECKSUM_HASH_TYPE_SHA512
|
156
|
+
|
157
|
+
# if no manifest filename is provided, this suffix will be appended to the
|
158
|
+
# fileName, with spaces converted to dashes.
|
159
|
+
MANIFEST_FILENAME_DEFAULT_SUFFIX = '-manifest.plist'
|
160
|
+
|
161
|
+
# If no manifest bundle identifier is provided, this will be used before
|
162
|
+
# the packageName.
|
163
|
+
MANIFEST_BUNDLE_ID_PREFIX = 'com.pixar.ruby-jss.'
|
164
|
+
|
165
|
+
# if no manifest bundle version is provided, this will be used.
|
166
|
+
MANIFEST_BUNDLE_VERSION_DEFAULT = '0'
|
167
|
+
|
168
|
+
# Not doing chunking by default in generated manifests,
|
169
|
+
# but if we do, we'll use this
|
170
|
+
MANIFEST_CHUNK_SIZE = 1024 * 1024 * 10 # 10MB
|
171
|
+
|
172
|
+
MANIFEST_PLIST_TEMPLATE = {
|
173
|
+
items: [
|
174
|
+
{
|
175
|
+
assets: [
|
176
|
+
{
|
177
|
+
'kind' => 'software-package',
|
178
|
+
'sha256s' => [],
|
179
|
+
'url' => 'url-goes-here'
|
180
|
+
} # end hash
|
181
|
+
], # end assets array,
|
182
|
+
metadata: {
|
183
|
+
'kind' => 'software',
|
184
|
+
'bundle-identifier' => "#{MANIFEST_BUNDLE_ID_PREFIX}example",
|
185
|
+
'bundle-version' => MANIFEST_BUNDLE_VERSION_DEFAULT,
|
186
|
+
'title' => 'title',
|
187
|
+
'sizeInBytes' => 1,
|
188
|
+
'sha256-whole' => 'sha256-goes-here'
|
189
|
+
} # end metadata
|
190
|
+
} # end hash
|
191
|
+
] # end items array
|
192
|
+
}.freeze
|
193
|
+
|
194
|
+
# The endpoint for deploying a package via MDM
|
195
|
+
# see https://developer.jamf.com/jamf-pro/reference/post_v1-deploy-package
|
196
|
+
DEPLOYMENT_ENDPOINT = '/v1/deploy-package?verbose=true'
|
197
|
+
|
198
|
+
# Class Methods
|
199
|
+
#####################################
|
200
|
+
|
201
|
+
# Given a file path, and hash type, generate the checksum for an arbitrary
|
202
|
+
# file.
|
203
|
+
#
|
204
|
+
# @param filepath [String, Pathname] The file to checksum
|
205
|
+
#
|
206
|
+
# @param type [String ] One of the keys of CHECKSUM_HASH_TYPES, either
|
207
|
+
# CHECKSUM_HASH_TYPE_MD5 or CHECKSUM_HASH_TYPE_SHA512
|
208
|
+
#
|
209
|
+
# @return [String] The checksum of the file
|
210
|
+
#
|
211
|
+
def self.calculate_checksum(filepath, type = DEFAULT_CHECKSUM_HASH_TYPE)
|
212
|
+
raise ArgumentError, 'Unknown checksum hash type' unless CHECKSUM_HASH_TYPES.key? type
|
213
|
+
|
214
|
+
CHECKSUM_HASH_TYPES[type].file(filepath).hexdigest
|
215
|
+
end
|
216
|
+
|
217
|
+
# Setter for a default base URL for package manifests.
|
218
|
+
# Manifests are required for packages deployed via enrollment prestages
|
219
|
+
# or via the InstallEnterpriseApplication MDM command.
|
220
|
+
#
|
221
|
+
# When generating a manifest for a package, you must provide a URL
|
222
|
+
# from which the package can be downloaded. This is usually from your
|
223
|
+
# Cloud Distribution Point, but can be some other https web server.
|
224
|
+
#
|
225
|
+
# If Jamf.config.package_manifest_base_url is defined (see {Jamf::Configuration})
|
226
|
+
# then that will be used as the default. Otherwise, or if you wish to override
|
227
|
+
# the config, the value set here will be used as the default for generating manifests
|
228
|
+
# for all Jamf::JPackage objects in this ruby session.
|
229
|
+
#
|
230
|
+
# Setting this in the config or here means you don't have to provide a base URL
|
231
|
+
# each time when calling #generate_manifest or #upload, however you can still provide
|
232
|
+
# one at that time to override any default.
|
233
|
+
#
|
234
|
+
# Normally, the package's fileName is appended to this URL to generate the full
|
235
|
+
# download URL. E.g. for a package with a fileName 'my-app.pkg', with the base URL of
|
236
|
+
# 'https://my-cdp.myorg.com', the download URL in the manifest would be
|
237
|
+
# 'https://my-cdp.myorg.com/my-app.pkg'
|
238
|
+
#
|
239
|
+
# See {#generate_manifest} for more info.
|
240
|
+
#
|
241
|
+
# @param url[String] the default base URL for building manifests, overrides any
|
242
|
+
# value in the config.
|
243
|
+
#
|
244
|
+
# @return [void]
|
245
|
+
############
|
246
|
+
def self.default_manifest_base_url=(url)
|
247
|
+
@default_manifest_url = url.to_s
|
248
|
+
end
|
249
|
+
|
250
|
+
# Getter for the default base URL for package manifests.
|
251
|
+
# This will be the one set for the class for this ruby session, or the one set in the
|
252
|
+
# Jamf.config.package_manifest_base_url
|
253
|
+
# seealso {JPackage.default_manifest_base_url=}
|
254
|
+
#
|
255
|
+
# @return [String] the default base URL for building manifests
|
256
|
+
############
|
257
|
+
def self.default_manifest_base_url
|
258
|
+
@default_manifest_url || Jamf.config.package_manifest_base_url
|
259
|
+
end
|
260
|
+
|
261
|
+
# Attributes
|
262
|
+
#####################################
|
263
|
+
|
264
|
+
# Checksums
|
265
|
+
#
|
266
|
+
# Packages in Jamf Pro can have a checksum in either MD5 or SHA512, or possibly
|
267
|
+
# SHA256 - none of our 1500 pkgs have 256, but given the existence of the sha256
|
268
|
+
# attribute in the API data, I'm assuming it existed at some point, and behaves like
|
269
|
+
# md5 (read on)
|
270
|
+
#
|
271
|
+
# In all cases, the hashType attribute indicates the type of checksum, as a string,
|
272
|
+
# one of 'MD5', 'SHA_256', or 'SHA_512'.
|
273
|
+
#
|
274
|
+
# In the case of md5 and sha256, the actual digest value (the checksum) is in the
|
275
|
+
# 'md5' or 'sha256' attribute. In the case of sha512, the digest is in the 'hashValue'
|
276
|
+
# attribute.
|
277
|
+
# In anycase, the digest value will also be stored in the checksum attribute
|
278
|
+
#
|
279
|
+
# NOTE: This is the checksum used when installing via a Policy.
|
280
|
+
# The checksum(s) used when deploying via MDM is stored in the manifest.
|
281
|
+
#
|
282
|
+
# @return [String] the checksum of the package, either an MD5, SHA256, or SHA512
|
283
|
+
# digest of the package file.
|
284
|
+
attr_reader :checksum
|
285
|
+
|
286
|
+
# The response body of the last upload of this package, with a timestamp added.
|
287
|
+
# Looks like:
|
288
|
+
# {
|
289
|
+
# :id=>"10392",
|
290
|
+
# :href=>"https://casper-int.pixar.com:8443/api/v1/packages/10392/upload/10392"
|
291
|
+
# :time=>2025-09-01 12:00:00 -0700
|
292
|
+
# }
|
293
|
+
# see #upload
|
294
|
+
# @return [Hash] the response body of the last upload of this package
|
295
|
+
attr_reader :upload_response
|
296
|
+
|
297
|
+
# The response body of the last mdm-deploy of this package. see #deploy_via_mdm
|
298
|
+
#
|
299
|
+
# {
|
300
|
+
# "queuedCommands": [
|
301
|
+
# {
|
302
|
+
# "device": 1,
|
303
|
+
# "commandUuid": "aaaaaaaa-3f1e-4b3a-a5b3-ca0cd7430937"
|
304
|
+
# }
|
305
|
+
# ],
|
306
|
+
# "errors": [
|
307
|
+
# {
|
308
|
+
# "device": 2,
|
309
|
+
# "group": 3,
|
310
|
+
# "reason": "Device does not support the InstallEnterpriseApplication command"
|
311
|
+
# }
|
312
|
+
# ]
|
313
|
+
# }
|
314
|
+
#
|
315
|
+
# @return [Hash] the response body of the last mdm-deploy of this package
|
316
|
+
attr_reader :deploy_response
|
317
|
+
|
318
|
+
# Constructor
|
319
|
+
#####################################
|
320
|
+
|
321
|
+
# Make an instance. Data comes from the API
|
322
|
+
#
|
323
|
+
# @param data[Hash] the data for constructing a new object.
|
324
|
+
##############################
|
325
|
+
def initialize(**data)
|
326
|
+
super
|
327
|
+
|
328
|
+
# set defaults for some required values
|
329
|
+
#
|
330
|
+
# check for explicit nils, since if these are boolean false
|
331
|
+
# we don't want to change them.
|
332
|
+
|
333
|
+
self.categoryId = DEFAULT_CATEGORY_ID if categoryId.nil?
|
334
|
+
self.priority = DEFAULT_PRIORITY if priority.nil?
|
335
|
+
self.fillUserTemplate = DEFAULT_FUT if fillUserTemplate.nil?
|
336
|
+
self.rebootRequired = DEFAULT_REBOOT_REQUIRED if rebootRequired.nil?
|
337
|
+
self.osInstall = DEFAULT_OS_INSTALL if osInstall.nil?
|
338
|
+
self.suppressUpdates = DEFAULT_SUPPRESS_UPDATES if suppressUpdates.nil?
|
339
|
+
self.suppressFromDock = DEFAULT_SUPPRESS_FROM_DOCK if suppressFromDock.nil?
|
340
|
+
self.suppressEula = DEFAULT_SUPPRESS_EULA if suppressEula.nil?
|
341
|
+
self.suppressRegistration = DEFAULT_SUPPRESS_REGISTRATION if suppressRegistration.nil?
|
342
|
+
|
343
|
+
@checksum =
|
344
|
+
case hashType
|
345
|
+
when CHECKSUM_HASH_TYPE_MD5
|
346
|
+
md5 || hashValue
|
347
|
+
when CHECKSUM_HASH_TYPE_SHA256
|
348
|
+
sha256 || hashValue
|
349
|
+
when CHECKSUM_HASH_TYPE_SHA512
|
350
|
+
hashValue
|
351
|
+
end
|
352
|
+
end # init
|
353
|
+
|
354
|
+
# Public Instance Methods
|
355
|
+
#####################################
|
356
|
+
|
357
|
+
# @return [Pathname] the local receipt when this pkg is installed by a policy
|
358
|
+
#############################
|
359
|
+
def receipt
|
360
|
+
# the receipt is the filename with any .zip extension removed.
|
361
|
+
fileName ? (Jamf::Client::RECEIPTS_FOLDER + fileName.to_s.sub(/.zip$/, '')) : nil
|
362
|
+
end
|
363
|
+
|
364
|
+
# Change the os_requirements field in the JSS
|
365
|
+
# E.g. 10.5, 10.5.3, 10.6.x
|
366
|
+
#
|
367
|
+
# Extra feature: Minumum OS's can now be specified as a
|
368
|
+
# string using the notation ">=10.6.7".
|
369
|
+
#
|
370
|
+
# @see Jamf.expand_min_os
|
371
|
+
#
|
372
|
+
# @param new_val [String,Array<String>] comma-separated string, or array of os versions
|
373
|
+
#
|
374
|
+
# @return [void]
|
375
|
+
#############################
|
376
|
+
def osRequirements=(new_val)
|
377
|
+
# make sure we have an array
|
378
|
+
new_val = [new_val].flatten.compact.uniq.map(&:to_s)
|
379
|
+
new_val.map! do |vers|
|
380
|
+
vers.start_with?('>=') ? Jamf.expand_min_os(vers) : vers
|
381
|
+
end
|
382
|
+
|
383
|
+
orig_osRequirements = osRequirements
|
384
|
+
@osRequirements = new_val.join(', ')
|
385
|
+
note_unsaved_change :osRequirements, orig_osRequirements
|
386
|
+
end
|
387
|
+
|
388
|
+
# Recalculate the checksum of the package file from a given filepath, and update the
|
389
|
+
# object's checksum and hashValue attributes.
|
390
|
+
#
|
391
|
+
# NOTE: This updates the checksum used when installing via a Policy.
|
392
|
+
# The checksum(s) used when deploying via MDM is stored in the manifest.
|
393
|
+
#
|
394
|
+
# You will need to call #save on the object to save the new checksum to the server.
|
395
|
+
#
|
396
|
+
# New checksums are always SHA512
|
397
|
+
#
|
398
|
+
# @param filepath [String, Pathname] the path to a local copy of the package file
|
399
|
+
#
|
400
|
+
# @return [String] The new checksum of the package file
|
401
|
+
##############################
|
402
|
+
def recalculate_checksum(filepath)
|
403
|
+
# update the checksum
|
404
|
+
@checksum = self.class.calculate_checksum(filepath, DEFAULT_CHECKSUM_HASH_TYPE)
|
405
|
+
self.hashType = DEFAULT_CHECKSUM_HASH_TYPE
|
406
|
+
self.sha256 = nil
|
407
|
+
self.md5 = nil
|
408
|
+
self.hashValue = @checksum
|
409
|
+
end
|
410
|
+
|
411
|
+
# @param filepath [String, Pathname] the path to a local copy of the package file
|
412
|
+
# @return [Boolean] Does the checksum of the file match the checksum in the object?
|
413
|
+
# nil if there is no checksum in the object.
|
414
|
+
##############################
|
415
|
+
def checksum_valid?(filepath)
|
416
|
+
return unless checksum
|
417
|
+
|
418
|
+
self.class.calculate_checksum(filepath, hashType) == checksum
|
419
|
+
end
|
420
|
+
|
421
|
+
# @return [String] A default if none is set explicitly
|
422
|
+
##############################
|
423
|
+
def default_manifestFileName
|
424
|
+
"#{fileName.gsub(' ', '-')}#{MANIFEST_FILENAME_DEFAULT_SUFFIX}"
|
425
|
+
end
|
426
|
+
|
427
|
+
# Set the manifest from a local file or a String containing an XML plist.
|
428
|
+
# If from a file, the manifestFileName attribute is set to the filename
|
429
|
+
#
|
430
|
+
# To automatically generate a manifest plist for this package from a
|
431
|
+
# locally-readable .pkg file, use #generate_manifest
|
432
|
+
#
|
433
|
+
# All manifests require a valid URL for downloading the .pkg file when
|
434
|
+
# installing on a client.
|
435
|
+
#
|
436
|
+
# No validation of the manifest is done here.
|
437
|
+
#
|
438
|
+
# DEPLOYING VIA MDM:
|
439
|
+
#
|
440
|
+
# When using this method, if you want to be able to deploy the package using
|
441
|
+
# deploy_via_mdm, the manifest MUST include a metadata dictionary
|
442
|
+
# with at least the following keys:
|
443
|
+
# - 'kind' = 'software'
|
444
|
+
# - 'bundle-identifier' that preferably matches the bundle identifier of the pkg
|
445
|
+
# - 'bundle-version' = that preferably matches the version of the pkg
|
446
|
+
# - 'title' = the name of the pkg or what it installs
|
447
|
+
# - 'sizeInBytes' = the size of the .pkg in bytes
|
448
|
+
# as well as one of these non-standard keys:
|
449
|
+
# - 'sha256-whole' = the SHA256 digest of the whole file, regardless of chunking data in the 'assets' array
|
450
|
+
# OR
|
451
|
+
# - 'md5-whole' = the MD5 digest of the whole file, regardless of chunking data in the 'assets' array
|
452
|
+
#
|
453
|
+
# The non-standard keys are because the Jamf Pro API endpoint for deploying via MDM requires
|
454
|
+
# a whole-file checksum even if the file is chunked in the manifest.
|
455
|
+
#
|
456
|
+
# See the MANIFEST_PLIST_TEMPLATE constant for an example of the data structure (as a ruby hash, not a plist)
|
457
|
+
#
|
458
|
+
# @param new_manifest [String, Pathname] the manifest plist data or path to a local file
|
459
|
+
#
|
460
|
+
# @return [void]
|
461
|
+
##############################
|
462
|
+
def manifest=(new_manifest)
|
463
|
+
# if its a string but not an xml plist, assume its a path
|
464
|
+
new_manifest = Pathname.new(new_manifest) if new_manifest.is_a?(String) && !new_manifest.start_with?('<?xml')
|
465
|
+
orig_manifest = manifest
|
466
|
+
|
467
|
+
new_xml =
|
468
|
+
if new_manifest.is_a? Pathname
|
469
|
+
new_manifest.read
|
470
|
+
|
471
|
+
elsif new_manifest.is_a? String
|
472
|
+
new_manifest
|
473
|
+
|
474
|
+
else
|
475
|
+
raise ArgumentError, 'Argument must be a Pathname, or a String containing a path or an XML plist'
|
476
|
+
end
|
477
|
+
|
478
|
+
@manifest = new_xml
|
479
|
+
note_unsaved_change :manifest, orig_manifest
|
480
|
+
end
|
481
|
+
|
482
|
+
# return the manifest as a ruby hash converted from the plist
|
483
|
+
# IMPORTANT: all hash keys are strings, not symbols
|
484
|
+
#
|
485
|
+
# @return [Hash] the manifest as a ruby hash
|
486
|
+
##############################
|
487
|
+
def manifest_hash
|
488
|
+
return if manifest.to_s.empty?
|
489
|
+
|
490
|
+
CFPropertyList.native_types(CFPropertyList::List.new(data: manifest).value)
|
491
|
+
end
|
492
|
+
|
493
|
+
# Generate a manifest plist (xml) for this package from a local .pkg file,
|
494
|
+
# and update the #manifest and #manifestFileName attributes
|
495
|
+
#
|
496
|
+
# Afterwards, you will need to call #save on the object to save the new values to
|
497
|
+
# the server.
|
498
|
+
#
|
499
|
+
# See also #manifest= for setting the manifest from a file or string.
|
500
|
+
#
|
501
|
+
# The download URL used in the manifest will be the default for the class
|
502
|
+
# (if you have set one) usually with the fileName appended. The
|
503
|
+
# class default may come from the ruby-jss config, or be set directly on the class,
|
504
|
+
# see JPackage.default_manifest_base_url=
|
505
|
+
#
|
506
|
+
# Unless set explicitly afterward using #manifestFileName= the manifest filename
|
507
|
+
# will be the fileName of the Package object, with spaces converted to dashes,
|
508
|
+
# followed by MANIFEST_FILENAME_DEFAULT_SUFFIX.
|
509
|
+
# e.g. my-app.pkg-manifest.plist
|
510
|
+
#
|
511
|
+
# By default, this method is invoked when uploading the pkg file using #upload
|
512
|
+
# and the opts will be passed from that method to this one.
|
513
|
+
# When invoked from #upload, the new values will be saved to the Jamf Pro server automatically.
|
514
|
+
#
|
515
|
+
# The manifests generated by this method are suitable for use in MDM deployments.
|
516
|
+
#
|
517
|
+
# If you don't provide a bundle_identifier, it will be generated from the packageName,
|
518
|
+
# prefixed with 'com.pixar.ruby-jss.' and with spaces converted to dashes.
|
519
|
+
#
|
520
|
+
# If you don't provide a bundle_version, it will be '0'
|
521
|
+
#
|
522
|
+
# @param filepath [String, Pathname] the path to a local copy of the package file for which
|
523
|
+
# this manifest is being generated. This MUST match the one uploaded to the server, as it is
|
524
|
+
# used to calculate the checksums in the manifest.
|
525
|
+
#
|
526
|
+
# @param opts [Hash] a hash of keyword arguments
|
527
|
+
#
|
528
|
+
# @options opts url [String] the URL where the package will be downloaded from,
|
529
|
+
# defaults to the class default
|
530
|
+
#
|
531
|
+
# @option opts append_filename_to_url [Boolean] should the fileName be appended to the URL,
|
532
|
+
# defaults to true.
|
533
|
+
# If false, the url given must be the full URL to download the individual package file.
|
534
|
+
#
|
535
|
+
# @option opts chunk_size [Integer] the size of each chunk in the manifest, in bytes.
|
536
|
+
# If omitted, the whole file will be checksummed at once and downloads will not be chunked.
|
537
|
+
# A common chunk size is 10MB, or 1024 * 1024 * 10.
|
538
|
+
# NOTE: Not all distribution points support chunked downloads.
|
539
|
+
#
|
540
|
+
# @option opts bundle_identifier [String, Symbol] The bundle identifier of the package,
|
541
|
+
# Should match that in the .pkg itself.
|
542
|
+
# Defaults to 'com.pixar.ruby-jss.packageName' where packageName is the
|
543
|
+
# packageName with whitespace converted to dashes.
|
544
|
+
#
|
545
|
+
# @option opts bundle_version [String] the version of the package.
|
546
|
+
# Defaults to '0'
|
547
|
+
#
|
548
|
+
# @option opts subtitle [String] a subtitle for the package, optional
|
549
|
+
#
|
550
|
+
# @option opts full_size_image_url [String] optional, used during MDM deployment
|
551
|
+
#
|
552
|
+
# @option opts display_image_url [String] optional, used during MDM deployment
|
553
|
+
#
|
554
|
+
# @return [void]
|
555
|
+
##############################
|
556
|
+
def generate_manifest(filepath, **opts)
|
557
|
+
# make sure the file exists
|
558
|
+
file = Pathname.new(filepath)
|
559
|
+
validate_local_file(file)
|
560
|
+
|
561
|
+
filesize = file.size
|
562
|
+
|
563
|
+
# make the manifest
|
564
|
+
new_manifest = MANIFEST_PLIST_TEMPLATE.dup
|
565
|
+
|
566
|
+
url = build_manifest_url opts[:url], append_filename: opts[:append_filename_to_url]
|
567
|
+
|
568
|
+
new_manifest[:items][0][:assets][0]['url'] = url.to_s
|
569
|
+
|
570
|
+
# get the checksum(s)
|
571
|
+
calculate_manifest_checksums(file, new_manifest, chunk_size: opts[:chunk_size])
|
572
|
+
|
573
|
+
append_manifest_image('full-size-image', opts[:full_size_image_url], new_manifest) if opts[:full_size_image_url]
|
574
|
+
|
575
|
+
append_manifest_image('display-image', opts[:display_image_url], new_manifest) if opts[:display_image_url]
|
576
|
+
|
577
|
+
new_manifest[:items][0][:metadata]['title'] = packageName
|
578
|
+
new_manifest[:items][0][:metadata]['subtitle'] = opts[:subtitle] if opts[:subtitle]
|
579
|
+
new_manifest[:items][0][:metadata]['sizeInBytes'] = filesize
|
580
|
+
new_manifest[:items][0][:metadata]['bundle-identifier'] =
|
581
|
+
(opts[:bundle_identifier] || "#{MANIFEST_BUNDLE_ID_PREFIX}#{packageName.gsub(/\s+/, '-')}")
|
582
|
+
new_manifest[:items][0][:metadata]['bundle-version'] = opts[:bundle_version] if opts[:bundle_version]
|
583
|
+
|
584
|
+
plist = CFPropertyList::List.new
|
585
|
+
plist.value = CFPropertyList.guess(new_manifest)
|
586
|
+
self.manifest = plist.to_str(CFPropertyList::List::FORMAT_XML, formatted: true)
|
587
|
+
|
588
|
+
self.manifestFileName = default_manifestFileName
|
589
|
+
end
|
590
|
+
|
591
|
+
# validate a local file path, raising an error if it's not valid
|
592
|
+
#
|
593
|
+
# @param filepath [Pathname] the path to a local copy of the package file for which
|
594
|
+
# @return [void]
|
595
|
+
##############################
|
596
|
+
def validate_local_file(file)
|
597
|
+
raise ArgumentError, 'No locally-readable file provided' unless file.readable?
|
598
|
+
end
|
599
|
+
private :validate_local_file
|
600
|
+
|
601
|
+
# Figure out the url to use for a manifest, based on the class default or
|
602
|
+
# one provided in the options.
|
603
|
+
# Raises an error if no URL is provided directly or via the class default, or if
|
604
|
+
# the url is not valid.
|
605
|
+
#
|
606
|
+
# @param given_url [String] the URL to use, if provided
|
607
|
+
# @param append_filename [Boolean] should the filename be appended to the URL?
|
608
|
+
#
|
609
|
+
# @return [URI] the URI object for the URL
|
610
|
+
##############################
|
611
|
+
def build_manifest_url(given_url = nil, append_filename: true)
|
612
|
+
url = given_url || self.class.default_manifest_base_url
|
613
|
+
unless url
|
614
|
+
raise ArgumentError,
|
615
|
+
'No URL for manifest. Pass one with url: or set one with Jamf::JPackage.default_manifest_base_url=, or set package_manifest_base_url in the ruby-jss.conf file.'
|
616
|
+
end
|
617
|
+
|
618
|
+
# append the filename to the URL if needed
|
619
|
+
url = "#{url.to_s.chomp('/')}/#{CGI.escape fileName}" unless append_filename == false
|
620
|
+
|
621
|
+
# check validity and return
|
622
|
+
URI.parse url
|
623
|
+
end
|
624
|
+
private :build_manifest_url
|
625
|
+
|
626
|
+
# calculate the manifest checksum[s] for a given file, and store in the manifest data.
|
627
|
+
# We only do SHA256, but Apple supports MD5 as well.
|
628
|
+
#
|
629
|
+
# @param file [Pathname] the path to the file to checksum
|
630
|
+
# @param chunk_size [Integer] the size of each chunk in the manifest, in bytes.
|
631
|
+
# if omitted, the whole file will be checksummed at once and downloads will not be chunked.
|
632
|
+
# A common chunk size is 10MB, or 1024 * 1024 * 10
|
633
|
+
# @param new_manifest [Hash] the manifest data to update with the checksums
|
634
|
+
#
|
635
|
+
# @return [void]
|
636
|
+
##############################
|
637
|
+
def calculate_manifest_checksums(file, new_manifest, chunk_size: nil)
|
638
|
+
# are we chunking the download?
|
639
|
+
if chunk_size.is_a? Integer
|
640
|
+
new_manifest[:items][0][:assets][0]['sha256-size'] = chunk_size
|
641
|
+
file.open do |f|
|
642
|
+
while chunk = f.read(chunk_size) # only load chunk_size bytes at a time
|
643
|
+
new_manifest[:items][0][:assets][0]['sha256s'] << Digest::SHA256.hexdigest(chunk)
|
644
|
+
end
|
645
|
+
end
|
646
|
+
|
647
|
+
# not chunking, use the file filesize
|
648
|
+
else
|
649
|
+
new_manifest[:items][0][:assets][0]['sha256-size'] = file.size
|
650
|
+
new_manifest[:items][0][:assets][0]['sha256s'] = [Digest::SHA256.hexdigest(file.read)]
|
651
|
+
end
|
652
|
+
|
653
|
+
# Store the whole-file checksum in
|
654
|
+
# manifest[:items][0][:metadata]['sha256-whole']. taking it from
|
655
|
+
# manifest[:items][0][:assets][0]['sha256s'][0], if available, or generate it if needed
|
656
|
+
# It is used by the deploy_via_mdm method.
|
657
|
+
# This value is required for MDM deployments, even if the file is chunked in the manifest.
|
658
|
+
new_manifest[:items][0][:metadata]['sha256-whole'] =
|
659
|
+
if new_manifest[:items][0][:assets][0]['sha256s'].size == 1
|
660
|
+
new_manifest[:items][0][:assets][0]['sha256s'][0]
|
661
|
+
else
|
662
|
+
Digest::SHA256.hexdigest(file.read)
|
663
|
+
end
|
664
|
+
end
|
665
|
+
private :calculate_manifest_checksums
|
666
|
+
|
667
|
+
# Append an image URL to the manifest, validating it as a URI
|
668
|
+
#
|
669
|
+
# @param asset_kind [String] the kind of asset, either 'full-size-image' or 'display-image'
|
670
|
+
# @param url [String] the URL to append
|
671
|
+
# @param new_manifest [Hash] the manifest data to update with the image URL
|
672
|
+
#
|
673
|
+
# @return [void]
|
674
|
+
##############################
|
675
|
+
def append_manifest_image(asset_kind, url, new_manifest)
|
676
|
+
new_manifest[:items][0][:assets] << {
|
677
|
+
'kind' => asset_kind,
|
678
|
+
'url' => URI.parse(url).to_s
|
679
|
+
}
|
680
|
+
end
|
681
|
+
private :append_manifest_image
|
682
|
+
|
683
|
+
# Upload a package file to Jamf Pro.
|
684
|
+
#
|
685
|
+
# WARNING: This will automatically call #save, saving any pending changes to
|
686
|
+
# the Jamf Pro server!
|
687
|
+
#
|
688
|
+
# This uses the Jamf Pro API to upload the file via the package/upload endpoint.
|
689
|
+
# If you don't use an appropriate primary distribution point, this may not work.
|
690
|
+
# Also, that endpoint may not upload to any other distribution points.
|
691
|
+
#
|
692
|
+
# The fileName attribute of the JPackage object will be updated to the local filename.
|
693
|
+
# If that filename is in use by some other package, you'll get an error:
|
694
|
+
# Field: fileName, Error: DUPLICATE_FIELD duplicate name
|
695
|
+
#
|
696
|
+
# This will automatically call #save at least once, and possibly twice.
|
697
|
+
# First, in order to ensure the correct fileName in Jamf based on the file being uploaded,
|
698
|
+
# and second, in order to update the checksum and manifest in Jamf Pro, if needed.
|
699
|
+
# *** Any other outstanding changes will also be saved!
|
700
|
+
#
|
701
|
+
# After uploading, the response from the server is in the #upload_response attribute,
|
702
|
+
# with a timestamp added to the data from the API.
|
703
|
+
#
|
704
|
+
# @param filepath [String, Pathname] the path to the package file to upload
|
705
|
+
#
|
706
|
+
# @param opts[Hash] a hash of keyword arguments
|
707
|
+
#
|
708
|
+
# @option opts :update_checksum [Boolean] update the checksum of the package in Jamf Pro.
|
709
|
+
# Defaults to true. All new checksums are SHA_512.
|
710
|
+
# WARNING: If you set this to false, the checksum in the object will not be updated
|
711
|
+
# and installs may fail. Be sure to set it to the correct value yourself.
|
712
|
+
#
|
713
|
+
# @option opts :update_manifest [Boolean] update the manifest of the package in Jamf Pro
|
714
|
+
# Defaults to true.
|
715
|
+
# WARNING: If you set this to false, the manifest in the object will not be updated
|
716
|
+
# and PreStage & MDM deployments may fail. Be sure to set it to the correct value
|
717
|
+
# using #generate_manifest or #manifest= yourself.
|
718
|
+
#
|
719
|
+
# @options opts url [String] See #generate_manifest
|
720
|
+
#
|
721
|
+
# @option opts append_filename_to_url [Boolean] See #generate_manifest
|
722
|
+
#
|
723
|
+
# @option opts chunk_size [Integer] See #generate_manifest
|
724
|
+
#
|
725
|
+
# @option opts bundle_identifier [String] See #generate_manifest
|
726
|
+
#
|
727
|
+
# @option opts bundle_version [String] See #generate_manifest
|
728
|
+
#
|
729
|
+
# @option opts subtitle [String] See #generate_manifest
|
730
|
+
#
|
731
|
+
# @option opts full_size_image_url [String] See #generate_manifest
|
732
|
+
#
|
733
|
+
# @option opts display_image_url [String] See #generate_manifest
|
734
|
+
#
|
735
|
+
# @return [void]
|
736
|
+
##############################
|
737
|
+
def upload(filepath, **opts)
|
738
|
+
file = Pathname.new(filepath)
|
739
|
+
validate_local_file(file)
|
740
|
+
|
741
|
+
# update the filename if needed
|
742
|
+
# must happen before the upload so it matches the file being uploaded
|
743
|
+
self.fileName = file.basename.to_s
|
744
|
+
|
745
|
+
# We must save the checksum and manifest to the server before uploading
|
746
|
+
# the file, because otherwise jamf will likely overwrite the manifest
|
747
|
+
# after it uploads to the primary distribution point.
|
748
|
+
|
749
|
+
# recalulate the checksum unless told no to
|
750
|
+
# NOTE: It appears that the checksum will always be recaluclated by
|
751
|
+
# the Jamf Pro server, as MD5. If you really want our default SHA512,
|
752
|
+
# then do this again later, manually.
|
753
|
+
recalculate_checksum(file) unless opts[:update_checksum] == false
|
754
|
+
|
755
|
+
# generate a manifest using the new file
|
756
|
+
generate_manifest(file, **opts) unless opts[:update_manifest] == false
|
757
|
+
|
758
|
+
# save the new fileName, checksum and manifest
|
759
|
+
save
|
760
|
+
|
761
|
+
# upload the file
|
762
|
+
@upload_response = cnx.jp_upload("#{get_path}/#{UPLOAD_ENDPOINT}", file)
|
763
|
+
@upload_response[:time] = Time.now
|
764
|
+
@upload_response
|
765
|
+
end
|
766
|
+
|
767
|
+
# Deploy this package to computers or a group via MDM.
|
768
|
+
#
|
769
|
+
# REQUIREMENTS:
|
770
|
+
# - The package must have a manifest with specific data. See #manifest=
|
771
|
+
# and #generate_manifest for details.
|
772
|
+
# - The .pkg file must be a product archive (.pkg) built with Xcode or productbuild.
|
773
|
+
# (it must contain a 'Distribution' file, usually generated by those tools)
|
774
|
+
# Simple 'component' packages built with pkgbuild are not supported.
|
775
|
+
# - The .pkg file must be signed with a trusted signing certificate
|
776
|
+
#
|
777
|
+
# This will send an MDM InstallEnterpriseApplication command to install the package
|
778
|
+
# to one or more computers, and/or the members of a single computer group.
|
779
|
+
#
|
780
|
+
# @param computer_ids [Array<Integer>,Integer] The ids of the computers to deploy to
|
781
|
+
#
|
782
|
+
# @param group_id [Integer] The id of the computer group to deploy to
|
783
|
+
#
|
784
|
+
# @param managed [Boolean] Should the installed package be managed by Jamf Pro?
|
785
|
+
# Defaults to false. This seems to be for App Store apps only??
|
786
|
+
#
|
787
|
+
# @return [Hash] the response from the server. see #deploy_response
|
788
|
+
##############################
|
789
|
+
def deploy_via_mdm(computer_ids: nil, group_id: nil, managed: false)
|
790
|
+
raise ArgumentError, 'No computer_ids or group_id provided' unless computer_ids || group_id
|
791
|
+
raise Jamf::MissingDataError, 'No manifest set for this package' if manifest.to_s.empty?
|
792
|
+
raise Jamf::NoSuchItemError, 'This package has no id, it must be saved in Jamf Pro before uploading' unless exist?
|
793
|
+
|
794
|
+
# convert the full manifest to a ruby hash
|
795
|
+
parsed_manifest = manifest_hash
|
796
|
+
|
797
|
+
# manifest data for the MDMDeploy command, which is a hash.
|
798
|
+
# hopefully some day Jamf will just use the manifest for the pkg
|
799
|
+
mdm_manifest = {}
|
800
|
+
mdm_manifest['url'] = manifest_url_for_deployment(parsed_manifest)
|
801
|
+
mdm_manifest['hash'], mdm_manifest['hashType'] = manifest_checksum_for_deployment(parsed_manifest)
|
802
|
+
mdm_manifest['bundleId'] = manifest_bundle_identifier_for_deployment(parsed_manifest)
|
803
|
+
mdm_manifest['bundleVersion'] = manifest_bundle_version_for_deployment(parsed_manifest)
|
804
|
+
mdm_manifest['title'] = manifest_title_for_deployment(parsed_manifest)
|
805
|
+
mdm_manifest['sizeInBytes'] = manifest_size_for_deployment(parsed_manifest)
|
806
|
+
|
807
|
+
set_optional_mdm_manifest_values(parsed_manifest, mdm_manifest)
|
808
|
+
|
809
|
+
# make sure the computers are in an array
|
810
|
+
computer_ids = [computer_ids].flatten.compact.uniq
|
811
|
+
|
812
|
+
# make the payload
|
813
|
+
payload = {
|
814
|
+
manifest: mdm_manifest,
|
815
|
+
installAsManaged: managed,
|
816
|
+
devices: computer_ids
|
817
|
+
}
|
818
|
+
payload[:groupId] = group_id.to_s if group_id
|
819
|
+
|
820
|
+
# send the command
|
821
|
+
@deploy_response = cnx.post(DEPLOYMENT_ENDPOINT, payload)
|
822
|
+
end
|
823
|
+
|
824
|
+
# the URL is required for MDM deployments
|
825
|
+
# @param parsed_manifest [Hash] the parsed manifest data as a ruby hash
|
826
|
+
# @return [String] the URL in the manifest for MDM deployments
|
827
|
+
#####################################
|
828
|
+
def manifest_url_for_deployment(parsed_manifest)
|
829
|
+
url = parsed_manifest.dig 'items', 0, 'assets', 0, 'url'
|
830
|
+
raise Jamf::MissingDataError, 'No URL in the manifest' unless url
|
831
|
+
|
832
|
+
url
|
833
|
+
end
|
834
|
+
private :manifest_url_for_deployment
|
835
|
+
|
836
|
+
# whole-file checksums are required for MDM deployments
|
837
|
+
# @return [Array<String>] the checksum and checksum type in the manifest for MDM deployments
|
838
|
+
#####################################
|
839
|
+
def manifest_checksum_for_deployment(parsed_manifest)
|
840
|
+
if whole = parsed_manifest.dig('items', 0, 'metadata', 'sha256-whole')
|
841
|
+
[whole, CHECKSUM_HASH_TYPE_SHA256_MDM_DEPLOY]
|
842
|
+
elsif whole = parsed_manifest.dig('items', 0, 'metadata', 'md5-whole')
|
843
|
+
[whole, CHECKSUM_HASH_TYPE_MD5]
|
844
|
+
else
|
845
|
+
raise Jamf::MissingDataError, 'No whole-file checksum in the manifest. Must have either sha256-whole or md5-whole in the metadata'
|
846
|
+
end
|
847
|
+
end
|
848
|
+
private :manifest_checksum_for_deployment
|
849
|
+
|
850
|
+
# size in bytes is required for MDM deployments
|
851
|
+
# @return [Integer] the size in bytes in the manifest for MDM deployments
|
852
|
+
#####################################
|
853
|
+
def manifest_size_for_deployment(parsed_manifest)
|
854
|
+
size = parsed_manifest.dig 'items', 0, 'metadata', 'sizeInBytes'
|
855
|
+
raise Jamf::MissingDataError, 'No sizeInBytes in the manifest metadata' unless size
|
856
|
+
|
857
|
+
size
|
858
|
+
end
|
859
|
+
private :manifest_size_for_deployment
|
860
|
+
|
861
|
+
# bundle identifier is required for MDM deployments
|
862
|
+
# @return [String] the bundle identifier in the manifest for MDM deployments
|
863
|
+
#####################################
|
864
|
+
def manifest_bundle_identifier_for_deployment(parsed_manifest)
|
865
|
+
bid = parsed_manifest.dig 'items', 0, 'metadata', 'bundle-identifier'
|
866
|
+
raise Jamf::MissingDataError, 'No bundle-identifier in the manifest metadata' unless bid
|
867
|
+
|
868
|
+
bid
|
869
|
+
end
|
870
|
+
private :manifest_bundle_identifier_for_deployment
|
871
|
+
|
872
|
+
# bundle version is required for MDM deployments
|
873
|
+
# @return [String] the bundle version in the manifest for MDM deployments
|
874
|
+
#####################################
|
875
|
+
def manifest_bundle_version_for_deployment(parsed_manifest)
|
876
|
+
bv = parsed_manifest.dig 'items', 0, 'metadata', 'bundle-version'
|
877
|
+
raise Jamf::MissingDataError, 'No bundle-version in the manifest metadata' unless bv
|
878
|
+
|
879
|
+
bv
|
880
|
+
end
|
881
|
+
private :manifest_bundle_version_for_deployment
|
882
|
+
|
883
|
+
# title is required for MDM deployments
|
884
|
+
# @return [String] the title in the manifest for MDM deployments
|
885
|
+
#####################################
|
886
|
+
def manifest_title_for_deployment(parsed_manifest)
|
887
|
+
ttl = parsed_manifest.dig 'items', 0, 'metadata', 'title'
|
888
|
+
raise Jamf::MissingDataError, 'No title in the manifest metadata' unless ttl
|
889
|
+
|
890
|
+
ttl
|
891
|
+
end
|
892
|
+
private :manifest_title_for_deployment
|
893
|
+
|
894
|
+
# set the optional values for the MDM deployment manifest
|
895
|
+
# @return [void]
|
896
|
+
#####################################
|
897
|
+
def set_optional_mdm_manifest_values(parsed_manifest, mdm_manifest)
|
898
|
+
# subtitle is optional for MDM deployments
|
899
|
+
sttl = parsed_manifest.dig 'items', 0, 'metadata', 'subtitle'
|
900
|
+
mdm_manifest['subtitle'] = sttl if sttl
|
901
|
+
|
902
|
+
# Images are optional for MDM deployments
|
903
|
+
parsed_manifest['items'][0]['assets']&.each do |asset|
|
904
|
+
mdm_manifest['fullSizeImageURL'] = asset['url'] if asset['kind'] == 'full-size-image'
|
905
|
+
mdm_manifest['displayImageURL'] = asset['url'] if asset['kind'] == 'display-image'
|
906
|
+
end
|
907
|
+
end
|
908
|
+
private :set_optional_mdm_manifest_values
|
909
|
+
|
910
|
+
end # class
|
911
|
+
|
912
|
+
end # module
|