ruby-jss 1.6.4 → 2.0.0b1
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/.yardopts +1 -0
- data/CHANGES.md +40 -4
- data/README-2.0.0.md +337 -0
- data/README.md +48 -34
- data/bin/cgrouper +3 -3
- data/bin/jamfHelperBackgrounder +2 -2
- data/bin/netseg-update +3 -3
- data/data/ruby-jss.conf.example +1 -1
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/account.rb +29 -22
- data/lib/{jss/api_object/advanced_search → jamf/api/classic/api_objects}/advanced_computer_search.rb +6 -6
- data/lib/{jss/api_object/advanced_search → jamf/api/classic/api_objects}/advanced_mobile_device_search.rb +6 -6
- data/lib/{jss/api_object/advanced_search → jamf/api/classic/api_objects}/advanced_user_search.rb +6 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/building.rb +6 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/categorizable.rb +10 -10
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/category.rb +17 -15
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/computer.rb +222 -120
- data/lib/{jss/api_object/extension_attribute → jamf/api/classic/api_objects}/computer_extension_attribute.rb +19 -19
- data/lib/{jss/api_object/group → jamf/api/classic/api_objects}/computer_group.rb +9 -8
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/computer_invitation.rb +8 -8
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/creatable.rb +22 -24
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/criteriable/criteria.rb +24 -24
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/criteriable/criterion.rb +15 -15
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/criteriable.rb +25 -28
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/department.rb +7 -7
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/directory_binding.rb +40 -40
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/directory_binding_type/active_directory.rb +47 -47
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/directory_binding_type/admitmac.rb +56 -56
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/directory_binding_type/centrify.rb +15 -15
- data/lib/{jss/api_object → jamf/api/classic/api_objects/directory_binding_type}/directory_binding_type.rb +2 -25
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/directory_binding_type/open_directory.rb +19 -19
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/directory_binding_type/powerbroker_identity_services.rb +1 -1
- data/lib/jamf/api/classic/api_objects/directory_binding_type.rb +47 -0
- data/lib/{jss/api_object/disk_encryption_configurations.rb → jamf/api/classic/api_objects/disk_encryption_configuration.rb} +14 -14
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/distribution_point.rb +41 -35
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/dock_item.rb +12 -12
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/ebook.rb +3 -3
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/extendable.rb +23 -23
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/ibeacon.rb +15 -15
- data/lib/{jss/api_object/self_servable → jamf/api/classic/api_objects}/icon.rb +8 -8
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/ldap_server.rb +45 -34
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/locatable.rb +6 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/mac_application.rb +18 -18
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/audit_event.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/casper_imaging_log.rb +4 -5
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/casper_remote_log.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/computer_usage_log.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/ebook.rb +7 -7
- data/lib/{jss/api_object/management_history/hashlike.rb → jamf/api/classic/api_objects/management_history/hash_like.rb} +3 -3
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/mac_app_store_app.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/mdm_command.rb +9 -9
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/mobile_device_app.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/policy_log.rb +5 -5
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/screen_sharing_log.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history/user_location_change.rb +4 -4
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/management_history.rb +226 -189
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/matchable.rb +9 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/mdm.rb +288 -167
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/mobile_device.rb +63 -51
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/mobile_device_application.rb +77 -35
- data/lib/{jss/api_object/configuration_profile → jamf/api/classic/api_objects}/mobile_device_configuration_profile.rb +7 -10
- data/lib/{jss/api_object/extension_attribute → jamf/api/classic/api_objects}/mobile_device_extension_attribute.rb +19 -19
- data/lib/{jss/api_object/group → jamf/api/classic/api_objects}/mobile_device_group.rb +8 -8
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/netboot_server.rb +6 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/network_segment.rb +75 -61
- data/lib/{jss/api_object/configuration_profile → jamf/api/classic/api_objects}/osx_configuration_profile.rb +7 -7
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/package.rb +83 -74
- data/lib/{jss/api_object/patch_source → jamf/api/classic/api_objects}/patch_external_source.rb +9 -9
- data/lib/{jss/api_object/patch_source → jamf/api/classic/api_objects}/patch_internal_source.rb +5 -5
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/patch_policy.rb +70 -68
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/patch_title/version.rb +15 -15
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/patch_title.rb +76 -64
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/peripheral.rb +24 -24
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/peripheral_type.rb +20 -20
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/policy.rb +121 -129
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/printer.rb +52 -52
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/purchasable.rb +6 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/removable_macaddr.rb +7 -7
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/restricted_software.rb +21 -21
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/scopable/scope.rb +69 -64
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/scopable.rb +11 -13
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/script.rb +22 -22
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/self_servable.rb +49 -47
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/sitable.rb +8 -8
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/site.rb +6 -6
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/software_update_server.rb +5 -5
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/updatable.rb +13 -13
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/uploadable.rb +71 -29
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/user.rb +18 -18
- data/lib/{jss/api_object/extension_attribute → jamf/api/classic/api_objects}/user_extension_attribute.rb +12 -12
- data/lib/{jss/api_object/group → jamf/api/classic/api_objects}/user_group.rb +7 -7
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/vpp_account.rb +15 -15
- data/lib/{jss/api_object → jamf/api/classic/api_objects}/vppable.rb +5 -5
- data/lib/{jss/api_object/webhook.rb → jamf/api/classic/api_objects/web_hook.rb} +15 -15
- data/lib/{jss/api_object → jamf/api/classic/base_classes}/advanced_search.rb +36 -40
- data/lib/{jss → jamf/api/classic/base_classes}/api_object.rb +320 -280
- data/lib/{jss/api_object → jamf/api/classic/base_classes}/configuration_profile.rb +13 -16
- data/lib/{jss/api_object → jamf/api/classic/base_classes}/extension_attribute.rb +55 -59
- data/lib/{jss/api_object → jamf/api/classic/base_classes}/group.rb +97 -78
- data/lib/{jss/api_object → jamf/api/classic/base_classes}/patch_source.rb +107 -87
- data/lib/{jss → jamf/api/classic}/xml_workaround.rb +12 -12
- data/lib/jamf/api/connection/attributes.rb +224 -0
- data/lib/jamf/api/connection/cache.rb +148 -0
- data/lib/jamf/api/connection/classic_api.rb +288 -0
- data/lib/jamf/api/connection/connect.rb +538 -0
- data/lib/jamf/api/connection/constants.rb +112 -0
- data/lib/jamf/api/connection/default_connection.rb +103 -0
- data/lib/jamf/api/connection/jamf_pro_api.rb +174 -0
- data/lib/jamf/api/connection/jamf_pro_api_error.rb +109 -0
- data/lib/jamf/api/connection/token.rb +295 -99
- data/lib/jamf/api/connection.rb +189 -818
- data/lib/jamf/api/jamf_pro/api_objects/computer_prestage.rb +82 -0
- data/lib/jamf/api/jamf_pro/api_objects/device_enrollment.rb +358 -0
- data/lib/jamf/api/jamf_pro/api_objects/inventory_preload_record.rb +172 -0
- data/lib/jamf/api/jamf_pro/api_objects/jp_building.rb +116 -0
- data/lib/jamf/api/jamf_pro/api_objects/mobile_device_prestage.rb +87 -0
- data/lib/jamf/api/jamf_pro/base_classes/oapi_object.rb +614 -0
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/bulk_deletable.rb +2 -1
- data/lib/jamf/api/jamf_pro/mixins/change_log.rb +246 -0
- data/lib/jamf/api/jamf_pro/mixins/collection_resource.rb +762 -0
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/filterable.rb +21 -14
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/immutable.rb +6 -8
- data/lib/jamf/api/jamf_pro/mixins/jpapi_resource.rb +167 -0
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/lockable.rb +29 -3
- data/lib/jamf/api/jamf_pro/mixins/macos_managed_updates.rb +168 -0
- data/lib/jamf/api/jamf_pro/mixins/prestage.rb +356 -0
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/sortable.rb +7 -17
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/uncreatable.rb +2 -2
- data/lib/jamf/api/{mixins → jamf_pro/mixins}/undeletable.rb +2 -2
- data/lib/jamf/api/jamf_pro/oapi_schemas/access_groups_preview_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/access_groups_v2_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/account.rb +159 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_driven_user_enrollment_session_token_settings.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_group.rb +123 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v1.rb +105 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/account_preferences_v4.rb +117 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/active_patch_history.rb +160 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/active_patch_history_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/active_patch_summary.rb +131 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/admin_account.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search.rb +116 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search_criteria_choices.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_search_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_user_content_search.rb +116 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/advanced_user_content_search_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/android_details.rb +162 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_error.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/api_error_cause.rb +106 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_analytics_setting.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_dynamics_config.rb +133 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_path.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_form_input_field.rb +114 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_form_input_field_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/app_request_settings.rb +104 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/apple_tv_details.rb +132 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/application_attributes.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/application_configuration.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/assign_remove_profile_response_sync_state.rb +112 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/attributes.rb +100 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_account.rb +158 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_account_v1.rb +158 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_token.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/auth_token_v1.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/authorization.rb +116 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/authorization_v1.rb +116 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/available_updates.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_ad_migration_report_process_status.rb +115 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_ad_migration_report_request.rb +102 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration_request.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_configuration_update.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_mappings.rb +157 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration.rb +146 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration_request.rb +145 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/azure_server_configuration_update.rb +131 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/branding_image_url.rb +86 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/building.rb +137 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/building_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cache_settings.rb +149 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/categories_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/category.rb +103 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_details.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_identity_v2.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_key.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/certificate_record.rb +146 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/classic_ldap_mappings.rb +168 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/client_check_in_v2.rb +164 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/client_check_in_v3.rb +134 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common.rb +108 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common_request.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_id_p_common_response.rb +108 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_connection_pool_statistics.rb +170 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_connection_status.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_keystore.rb +102 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_keystore_file.rb +103 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_mappings_request.rb +101 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_mappings_response.rb +101 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_request.rb +151 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_response.rb +148 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/cloud_ldap_server_update.rb +148 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_application.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_attachment.rb +102 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_certificate.rb +151 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_configuration_profile.rb +118 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching.rb +372 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_alert.rb +120 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_cache_detail.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_data_migration_error.rb +98 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_data_migration_error_user_info.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent.rb +131 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_alert.rb +105 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_capabilities.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_details.rb +118 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_content_caching_parent_local_network.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_disk.rb +143 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_disk_encryption.rb +120 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_extension_attribute.rb +175 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_font.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_general.rb +230 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_general_update.rb +112 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_group.rb +96 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_hardware.rb +264 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_hardware_update.rb +106 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_ibeacon.rb +81 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory.rb +275 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_collection_preferences.rb +165 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_collection_settings.rb +108 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_recovery_lock_password_response.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_inventory_update_request.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_licensed_software.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_local_user_account.rb +189 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_location.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_mdm_capability.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_operating_system.rb +132 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_operating_system_update.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_overview.rb +179 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_package_receipts.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition.rb +145 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition_encryption.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_partition_file_vault2_state.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_plugin.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage.rb +106 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_search_results_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_prestage_v2.rb +129 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_printer.rb +99 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_purchase.rb +158 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_remote_management.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_section.rb +109 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_security.rb +179 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_service.rb +81 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_software_update.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_storage.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computer_user_and_location.rb +131 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/computers_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/configuration_profile.rb +102 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/configuration_search_results.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_candidate_request.rb +123 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_response.rb +122 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_status_response.rb +85 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/connection_configuration_update_request.rb +109 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/country.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/country_codes.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/create_path.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/csa_token.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/current_account.rb +159 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/current_authorization.rb +108 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/data_roaming_setting.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/database_password.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/day_of_week.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/delete_user_command.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/department.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/departments_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/deployment_task.rb +129 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/deployment_task_search_results.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_communication_settings.rb +128 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_compliance_information.rb +117 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_device.rb +162 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_device_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_disown_body.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_disown_response.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance.rb +163 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_instance_sync_status.rb +98 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_prestage.rb +215 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_prestage_v2.rb +234 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/device_enrollment_token.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/diagnostic_submission_setting.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook.rb +152 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_exclusions.rb +137 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_limitations.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_scope.rb +170 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ebook_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enable_lost_mode_command.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/engage.rb +84 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_access_group_preview.rb +141 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_access_group_v2.rb +132 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization.rb +106 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_branding_settings.rb +111 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_dependencies.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_dependency.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_ldap_group_access.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_ldap_auth.rb +121 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_list.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_sso_auth.rb +113 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_panel_text.rb +112 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_search_results_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_customization_v2.rb +116 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_method.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_process_text_object.rb +346 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/enrollment_settings_v2.rb +273 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/export_field.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/export_parameters.rb +121 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/extension_attribute.rb +115 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/extension_attribute_v2.rb +116 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/external_recipient.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment_delete.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/file_attachment_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/filter.rb +104 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/font_path.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_computer_prestage.rb +105 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_computer_prestage_v2.rb +104 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_ldap_auth.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_sso_auth.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_enrollment_customization_panel_text.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_mobile_device_prestage.rb +105 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/get_mobile_device_prestage_v2.rb +103 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_mappings.rb +138 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_membership.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search.rb +106 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search_request.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/group_test_search_response.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/history_search_results.rb +137 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/history_search_results_v1.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/href_response.rb +168 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/icon_response.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/id_and_name.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/id_and_name_v2.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ids.rb +99 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/initialize.rb +133 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/initialize_v1.rb +133 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/install_package.rb +103 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/integer_wrapper.rb +84 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/internal_recipient.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_information.rb +113 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_error.rb +123 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_error.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_error_cause.rb +105 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_csv_validation_success.rb +86 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute_column.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_extension_attribute_column_result.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_invalid_csv_response.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record.rb +248 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_search_results.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_search_results_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/inventory_preload_record_v2.rb +263 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_branding_configuration.rb +129 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_branding_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_details.rb +255 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ios_details_v2.rb +255 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_application_response.rb +95 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_nation_credentials.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_package_response.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_information.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_information_v2.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_server_url.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_pro_version.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/jamf_protect_plan.rb +125 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/language_code.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_request.rb +99 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_response.rb +101 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_configuration_update.rb +99 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_group.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_group_search_results.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/ldap_server.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/linked_connect_profile.rb +126 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/linked_connect_profile_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/locale.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/location.rb +125 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_information.rb +146 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_information_v2.rb +146 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/location_v2.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_branding_configuration.rb +118 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_branding_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_managed_software_update.rb +138 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mac_os_managed_software_update_response.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/markdown.rb +84 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_client_type.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command.rb +109 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_client.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_request.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_state.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mdm_command_type.rb +172 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_mappings.rb +84 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_test_search_request.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/membership_test_search_response.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/memcached_endpoints.rb +113 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device.rb +153 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_application.rb +100 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_attachment.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_attachment_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_certificate_v1.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_certificate_v2.rb +146 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details.rb +235 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details_get_v2.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_details_v2.rb +259 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_ebook.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_extension_attribute_results.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_group.rb +96 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage.rb +136 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_name.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_name_v2.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_names.rb +118 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_names_v2.rb +118 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_search_results_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_prestage_v2.rb +175 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_params.rb +144 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_search_results_v2.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/mobile_device_v2.rb +158 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/network.rb +171 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/network_v2.rb +179 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification.rb +96 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification_type.rb +141 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/notification_v1.rb +96 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history.rb +133 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history_note.rb +133 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/object_history_v1.rb +106 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/order_by.rb +95 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/package_manifest.rb +148 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/parent_app.rb +131 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_ids_on_dashboard.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_attempt.rb +102 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_attempt_action.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log.rb +124 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_log_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_on_dashboard.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_policy_summary.rb +146 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/patch_version.rb +96 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/personal_hotspot_setting.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/plan_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/plugin_path.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/policy_properties.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/policy_properties_v1.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/post_computer_prestage_v2.rb +85 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_dependencies.rb +85 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_dependency.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_file_attachment.rb +95 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_file_attachment_v2.rb +95 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_purchasing_information.rb +174 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_purchasing_information_v2.rb +174 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope.rb +84 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_assignment.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_assignment_v2.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_response.rb +109 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_response_v2.rb +109 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_update.rb +113 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_scope_v2.rb +84 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_sync_status.rb +98 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/prestage_sync_status_v2.rb +98 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/process_texts_search_results.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_registration_request.rb +98 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_settings_response.rb +141 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/protect_updatable_settings_request.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/provisioning_profile.rb +95 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/purchasing.rb +153 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/purchasing_v2.rb +153 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_computer_prestage.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_computer_prestage_v2.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_mobile_device_prestage.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/put_mobile_device_prestage_v2.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/recalculation_results.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/recipient.rb +94 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/recipients.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/redeploy_jamf_management_framework_response.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/reenrollment.rb +117 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/remote_administration_response.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/remote_administration_search_results.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/renew_mdm_profile_response.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/restart_device_command.rb +95 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/retry_patch_policy_params.rb +97 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/safelisted_app.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/script.rb +192 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/scripts_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/search_active_patch_history_params.rb +121 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/search_patch_policy_log_params.rb +121 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/security.rb +130 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/security_v2.rb +129 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_install_settings.rb +92 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_interaction_settings.rb +122 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_login_settings.rb +113 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/self_service_settings.rb +100 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/session.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_candidate_request.rb +108 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_details.rb +175 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_details_search_results.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/session_status.rb +98 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/set_recovery_lock_command.rb +82 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/settings_command.rb +167 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/shared_device_configuration.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/signature.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/site.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/smart_search_criterion.rb +118 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_title_configuration.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_title_patch_policy_summaries.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/software_update_settings.rb +88 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore.rb +128 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_cert_parse_response.rb +130 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_details.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_parse.rb +103 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_response.rb +120 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_response_with_details.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_keystore_with_details.rb +93 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_metadata_url.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/sso_settings.rb +240 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/startup_status.rb +185 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/static_user_group.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_certificate_upload.rb +99 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_create.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/supervision_identity_update.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_features.rb +105 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_settings_request.rb +108 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/teacher_settings_response.rb +122 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/time_frame.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/time_zone.rb +107 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/tv_os_details.rb +140 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/udids.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_apple_tv.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_ios.rb +81 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_ios_v2.rb +81 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_mobile_device.rb +122 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_mobile_device_v2.rb +137 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/update_tv_os.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_attributes.rb +117 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_mappings.rb +193 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search.rb +112 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search_request.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/user_test_search_response.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/v1_site.rb +91 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_ca_record.rb +147 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_pki_payload_record.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_pki_payload_record_search_results.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/venafi_service_status.rb +83 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/verbose_package_deployment_response.rb +90 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/voice_roaming_setting.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_content.rb +153 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location.rb +86 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_list_view.rb +171 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_patch.rb +111 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_location_post.rb +114 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_locations.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscription.rb +86 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscription_base.rb +127 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/volume_purchasing_subscriptions.rb +89 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/vpp_admin_account.rb +119 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/vpp_token_subscription.rb +123 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas/web_link.rb +87 -0
- data/lib/jamf/api/jamf_pro/oapi_schemas.rb +35 -0
- data/lib/jamf/api/jamf_pro/other_classes/change_log_entry.rb +37 -0
- data/lib/jamf/api/{attribute_classes → jamf_pro/other_classes}/ip_address.rb +2 -8
- data/lib/jamf/api/jamf_pro/other_classes/pager.rb +257 -0
- data/lib/jamf/api/{attribute_classes → jamf_pro/other_classes}/timestamp.rb +18 -14
- data/lib/jamf/{api/mixins/base_class.rb → base_class.rb} +8 -8
- data/lib/jamf/client/jamf_binary.rb +104 -99
- data/lib/jamf/client/jamf_helper.rb +274 -256
- data/lib/jamf/client/management_action.rb +84 -75
- data/lib/jamf/client.rb +15 -86
- data/lib/jamf/composer.rb +5 -5
- data/lib/jamf/configuration.rb +219 -196
- data/lib/jamf/{api/json_objects/prestage_sync_status.rb → constants.rb} +15 -32
- data/lib/{jss → jamf}/db_connection.rb +23 -31
- data/lib/{jpapi.rb → jamf/deprecations/deprecated_api_constant.rb} +5 -4
- data/lib/{jss/ruby_extensions/string.rb → jamf/deprecations/deprecated_config_constant.rb} +4 -12
- data/lib/jamf/exceptions.rb +14 -15
- data/lib/jamf/oapi_validate.rb +502 -0
- data/lib/jamf/ruby_extensions/array/predicates.rb +3 -1
- data/lib/jamf/ruby_extensions/array/utils.rb +2 -11
- data/lib/jamf/ruby_extensions/array.rb +1 -1
- data/lib/jamf/ruby_extensions/filetest/predicates.rb +2 -1
- data/lib/jamf/ruby_extensions/filetest.rb +1 -1
- data/lib/jamf/ruby_extensions/hash/{backports.rb → utils.rb} +53 -34
- data/lib/jamf/ruby_extensions/hash.rb +3 -3
- data/lib/jamf/ruby_extensions/ipaddr/utils.rb +7 -4
- data/lib/jamf/ruby_extensions/ipaddr.rb +2 -2
- data/lib/jamf/ruby_extensions/object/predicates.rb +3 -1
- data/lib/jamf/ruby_extensions/object.rb +1 -1
- data/lib/jamf/ruby_extensions/pathname/predicates.rb +3 -1
- data/lib/jamf/ruby_extensions/pathname/utils.rb +11 -5
- data/lib/jamf/ruby_extensions/pathname.rb +1 -1
- data/lib/jamf/ruby_extensions/string/conversions.rb +16 -1
- data/lib/jamf/ruby_extensions/string/predicates.rb +3 -1
- data/lib/jamf/ruby_extensions/string.rb +1 -3
- data/lib/{jss/ruby_extensions/time.rb → jamf/ruby_extensions/time/utils.rb} +40 -25
- data/lib/{jss/version.rb → jamf/ruby_extensions/time.rb} +7 -6
- data/lib/jamf/ruby_extensions.rb +9 -9
- data/lib/jamf/utility.rb +626 -410
- data/lib/jamf/validate.rb +86 -125
- data/lib/jamf/version.rb +3 -3
- data/lib/jamf.rb +76 -131
- data/lib/jss-api.rb +2 -2
- data/lib/jss.rb +3 -215
- data/lib/ruby-jss.rb +2 -2
- data/lib/zeitwerk_config.rb +163 -0
- data/test/README-TEST.md +65 -0
- data/test/bin/runtests +97 -130
- data/test/lib/jamf_test/APITest.rb +106 -0
- data/{lib/jss/ruby_extensions/filetest.rb → test/lib/jamf_test/advanced_search.rb} +16 -20
- data/test/lib/jamf_test/auth.rb +267 -0
- data/test/lib/jamf_test/collection_tests.rb +388 -0
- data/test/lib/jamf_test/prestage_tests.rb +135 -0
- data/test/lib/{testhelper.rb → jamf_test.rb} +15 -12
- data/{lib/jss/ruby_extensions.rb → test/tests/advanced_computer_search.rb} +11 -12
- data/test/tests/advanced_mobile_device_search.rb +36 -0
- data/test/tests/advanced_user_search.rb +36 -0
- data/test/tests/building.rb +41 -0
- data/test/tests/category.rb +41 -0
- data/test/tests/computer.rb +41 -0
- data/test/tests/computer_group.rb +132 -0
- data/test/tests/computer_prestage.rb +36 -0
- data/test/tests/department.rb +41 -0
- data/test/tests/device_enrollment.rb +101 -0
- data/test/tests/inventory_preload_record.rb +131 -0
- data/test/tests/jp_building.rb +41 -0
- data/test/tests/mobile_device.rb +41 -0
- data/test/tests/mobile_device_prestage.rb +37 -0
- data/test/tests/policy.rb +151 -0
- metadata +654 -213
- data/lib/jamf/api/base_classes/collection_resource.rb +0 -612
- data/lib/jamf/api/base_classes/json_object.rb +0 -1103
- data/lib/jamf/api/base_classes/prestage.rb +0 -503
- data/lib/jamf/api/base_classes/resource.rb +0 -259
- data/lib/jamf/api/base_classes/singleton_resource.rb +0 -88
- data/lib/jamf/api/connection/api_error.rb +0 -111
- data/lib/jamf/api/connection/api_error_styleguide.rb +0 -96
- data/lib/jamf/api/json_objects/change_log_entry.rb +0 -77
- data/lib/jamf/api/json_objects/country.rb +0 -51
- data/lib/jamf/api/json_objects/device_enrollment_device.rb +0 -165
- data/lib/jamf/api/json_objects/device_enrollment_device_sync_state.rb +0 -81
- data/lib/jamf/api/json_objects/device_enrollment_sync_status.rb +0 -71
- data/lib/jamf/api/json_objects/inventory_preload_extension_attribute.rb +0 -57
- data/lib/jamf/api/json_objects/locale.rb +0 -59
- data/lib/jamf/api/json_objects/md_prestage_name.rb +0 -57
- data/lib/jamf/api/json_objects/md_prestage_names.rb +0 -82
- data/lib/jamf/api/json_objects/md_prestage_skip_setup_items.rb +0 -214
- data/lib/jamf/api/json_objects/prestage_assignment.rb +0 -76
- data/lib/jamf/api/json_objects/prestage_location.rb +0 -104
- data/lib/jamf/api/json_objects/prestage_purchasing_data.rb +0 -132
- data/lib/jamf/api/json_objects/prestage_scope.rb +0 -57
- data/lib/jamf/api/json_objects/time_zone.rb +0 -105
- data/lib/jamf/api/mixins/change_log.rb +0 -288
- data/lib/jamf/api/mixins/extendable.rb +0 -75
- data/lib/jamf/api/mixins/pageable.rb +0 -208
- data/lib/jamf/api/mixins/searchable.rb +0 -202
- data/lib/jamf/api/resources/collection_resources/building.rb +0 -121
- data/lib/jamf/api/resources/collection_resources/category.rb +0 -83
- data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +0 -89
- data/lib/jamf/api/resources/collection_resources/department.rb +0 -78
- data/lib/jamf/api/resources/collection_resources/device_enrollment.rb +0 -384
- data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +0 -289
- data/lib/jamf/api/resources/collection_resources/mobile_device_prestage.rb +0 -143
- data/lib/jamf/api/resources/collection_resources/script.rb +0 -226
- data/lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb +0 -141
- data/lib/jamf/api/resources/singleton_resources/locales.rb +0 -155
- data/lib/jamf/api/resources/singleton_resources/time_zones.rb +0 -213
- data/lib/jamf/compatibility.rb +0 -88
- data/lib/jamf/ruby_extensions/dig.rb +0 -52
- data/lib/jamf/ruby_extensions/string/backports.rb +0 -66
- data/lib/jss/api_connection.rb +0 -1029
- data/lib/jss/api_object/app_store_country_codes.rb +0 -298
- data/lib/jss/api_object/computer/application_installs.rb +0 -118
- data/lib/jss/client/jamf_binary.rb +0 -132
- data/lib/jss/client/jamf_helper.rb +0 -298
- data/lib/jss/client/management_action.rb +0 -113
- data/lib/jss/client.rb +0 -301
- data/lib/jss/compatibility.rb +0 -88
- data/lib/jss/composer.rb +0 -190
- data/lib/jss/configuration.rb +0 -319
- data/lib/jss/exceptions.rb +0 -115
- data/lib/jss/ruby_extensions/array.rb +0 -52
- data/lib/jss/ruby_extensions/hash.rb +0 -140
- data/lib/jss/ruby_extensions/ipaddr.rb +0 -92
- data/lib/jss/ruby_extensions/object.rb +0 -19
- data/lib/jss/ruby_extensions/pathname.rb +0 -78
- data/lib/jss/ruby_extensions/string/backports.rb +0 -68
- data/lib/jss/ruby_extensions/string/conversions.rb +0 -69
- data/lib/jss/ruby_extensions/string/predicates.rb +0 -57
- data/lib/jss/server.rb +0 -146
- data/lib/jss/utility.rb +0 -672
- data/lib/jss/validate.rb +0 -248
- data/test/README.md +0 -147
- data/test/lib/testhelper/auth.rb +0 -275
- data/test/lib/testhelper/patch_mgmt.rb +0 -123
- data/test/specs/api_connection_spec.rb +0 -57
- data/test/specs/patch01_source_spec.rb +0 -54
- data/test/specs/patch02_internal_source_spec.rb +0 -88
- data/test/specs/patch03_external_source_spec.rb +0 -120
- data/test/specs/patch04_titles_spec.rb +0 -207
- data/test/specs/patch05_policies_spec.rb +0 -119
- data/test/specs/patch06_cleanup_spec.rb +0 -52
- data/test/specs/policy_spec.rb +0 -112
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
### Copyright
|
|
1
|
+
### Copyright 2022 Pixar
|
|
2
2
|
|
|
3
3
|
###
|
|
4
4
|
### Licensed under the Apache License, Version 2.0 (the "Apache License")
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
###
|
|
25
25
|
|
|
26
26
|
###
|
|
27
|
-
module
|
|
27
|
+
module Jamf
|
|
28
28
|
|
|
29
29
|
# Classes
|
|
30
30
|
#####################################
|
|
@@ -33,7 +33,7 @@ module JSS
|
|
|
33
33
|
# methods and constants that apply to all API resouces.
|
|
34
34
|
#
|
|
35
35
|
# See the README.md file for general info about using subclasses of
|
|
36
|
-
#
|
|
36
|
+
# Jamf::APIObject
|
|
37
37
|
#
|
|
38
38
|
# == Subclassing
|
|
39
39
|
#
|
|
@@ -56,15 +56,15 @@ module JSS
|
|
|
56
56
|
# === Object Creation
|
|
57
57
|
#
|
|
58
58
|
# If a subclass should be able to be created in the JSS be sure to include
|
|
59
|
-
# {
|
|
59
|
+
# {Jamf::Creatable}
|
|
60
60
|
#
|
|
61
61
|
# The constructor should verify any extra required data in the args
|
|
62
62
|
#
|
|
63
|
-
# See {
|
|
63
|
+
# See {Jamf::Creatable} for more details.
|
|
64
64
|
#
|
|
65
65
|
# === Object Modification
|
|
66
66
|
#
|
|
67
|
-
# If a subclass should be modifiable in the JSS, include {
|
|
67
|
+
# If a subclass should be modifiable in the JSS, include {Jamf::Updatable},
|
|
68
68
|
# q.v. for details.
|
|
69
69
|
#
|
|
70
70
|
# === Object Deletion
|
|
@@ -156,7 +156,7 @@ module JSS
|
|
|
156
156
|
#
|
|
157
157
|
# For example, here's a summary-hash for a single MobileDevice from the
|
|
158
158
|
# list-resource '...JSSResource/mobiledevices', which you might get in the
|
|
159
|
-
# Array returned by
|
|
159
|
+
# Array returned by Jamf::MobileDevice.all:
|
|
160
160
|
#
|
|
161
161
|
# {
|
|
162
162
|
# :id=>3964,
|
|
@@ -255,7 +255,7 @@ module JSS
|
|
|
255
255
|
# no way to guarantee which object you get back.
|
|
256
256
|
#
|
|
257
257
|
# In those subclasses, set NON_UNIQUE_NAMES to any value, and a
|
|
258
|
-
#
|
|
258
|
+
# Jamf::AmbiguousError exception will be raised when trying to fetch by name
|
|
259
259
|
# and the name isn't unique.
|
|
260
260
|
#
|
|
261
261
|
# Because of the extra processing, the check for this state will only happen
|
|
@@ -265,21 +265,81 @@ module JSS
|
|
|
265
265
|
#
|
|
266
266
|
# When that's the case, fetching explicitly by name, or when fetching with a
|
|
267
267
|
# plain search term that matches a non-unique name, will raise a
|
|
268
|
-
#
|
|
268
|
+
# Jamf::AmbiguousError exception,when the name isn't unique. If that happens,
|
|
269
269
|
# you'll have to use some other identifier to fetch the desired object.
|
|
270
270
|
#
|
|
271
271
|
# Note: Fetching, finding valid id, and name collisions are case-insensitive.
|
|
272
272
|
#
|
|
273
273
|
class APIObject
|
|
274
274
|
|
|
275
|
+
include Comparable
|
|
276
|
+
|
|
277
|
+
# COMPARABLE
|
|
278
|
+
# APIobjects are == if all of their lookup key values are the same
|
|
279
|
+
#
|
|
280
|
+
def <=>(other)
|
|
281
|
+
idents_combined <=> other.idents_combined
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
def idents_combined
|
|
285
|
+
my_keys = self.class.lookup_keys.values.uniq
|
|
286
|
+
my_keys.map { |k| send(k).to_s }.sort.join
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
# Meta Programming
|
|
290
|
+
####################################################
|
|
291
|
+
|
|
292
|
+
# Loop through the defined lookup keys and make
|
|
293
|
+
# .all_<key>s methods for each one, with alises as needed.
|
|
294
|
+
#
|
|
295
|
+
# This is called automatically when subclasses are loaded by zeitwerk
|
|
296
|
+
#
|
|
297
|
+
def self.define_identifier_list_methods
|
|
298
|
+
Jamf.load_msg "defining list-methods for APIObject subclass #{self}"
|
|
299
|
+
|
|
300
|
+
lookup_keys.each do |als, key|
|
|
301
|
+
meth_name = key.to_s.end_with?('s') ? "all_#{key}es" : "all_#{key}s"
|
|
302
|
+
if als == key
|
|
303
|
+
# the all_ method - skip if defined in the class
|
|
304
|
+
next if singleton_methods.include? meth_name.to_sym
|
|
305
|
+
|
|
306
|
+
define_singleton_method meth_name do |refresh = false, cached_list: nil, api: nil, cnx: Jamf.cnx|
|
|
307
|
+
cnx = api if api
|
|
308
|
+
list = cached_list || all(refresh, cnx: cnx)
|
|
309
|
+
list.map { |i| i[key] }
|
|
310
|
+
end
|
|
311
|
+
Jamf.load_msg "Defined method #{self}##{meth_name}"
|
|
312
|
+
|
|
313
|
+
else
|
|
314
|
+
# an alias - skip if defined in the class
|
|
315
|
+
als_name = als.to_s.end_with?('s') ? "all_#{als}es" : "all_#{als}s"
|
|
316
|
+
|
|
317
|
+
next if singleton_methods.include? als_name.to_sym
|
|
318
|
+
|
|
319
|
+
define_singleton_method als_name do |refresh = false, api: nil, cnx: Jamf.cnx|
|
|
320
|
+
cnx = api if api
|
|
321
|
+
send meth_name, refresh, cnx: cnx
|
|
322
|
+
end
|
|
323
|
+
Jamf.load_msg "Defined alias '#{als_name}' of #{self}##{meth_name}"
|
|
324
|
+
|
|
325
|
+
end # if
|
|
326
|
+
end # lookup_keys.each
|
|
327
|
+
|
|
328
|
+
true
|
|
329
|
+
end # self.define_identifier_list_methods
|
|
330
|
+
|
|
275
331
|
# Constants
|
|
276
332
|
####################################
|
|
277
333
|
|
|
334
|
+
# which API do APIObjects come from?
|
|
335
|
+
# The JPAPI equivalent is in Jamf::JPAPIResource
|
|
336
|
+
API_SOURCE = :classic
|
|
337
|
+
|
|
278
338
|
# '.new' can only be called from these methods:
|
|
279
|
-
OK_INSTANTIATORS = ['make', 'fetch', 'block in fetch'].freeze
|
|
339
|
+
OK_INSTANTIATORS = ['make', 'create', 'fetch', 'block in fetch'].freeze
|
|
280
340
|
|
|
281
341
|
# See the discussion of 'Lookup Keys' in the comments/docs
|
|
282
|
-
# for {
|
|
342
|
+
# for {Jamf::APIObject}
|
|
283
343
|
#
|
|
284
344
|
DEFAULT_LOOKUP_KEYS = {
|
|
285
345
|
id: { fetch_rsrc_key: :id },
|
|
@@ -397,11 +457,11 @@ module JSS
|
|
|
397
457
|
|
|
398
458
|
# Return an Array of Hashes for all objects of this subclass in the JSS.
|
|
399
459
|
#
|
|
400
|
-
# This method is only valid in subclasses of
|
|
460
|
+
# This method is only valid in subclasses of Jamf::APIObject, and is
|
|
401
461
|
# the parsed JSON output of an API query for the resource defined in the
|
|
402
462
|
# subclass's RSRC_BASE
|
|
403
463
|
#
|
|
404
|
-
# e.g. for
|
|
464
|
+
# e.g. for Jamf::Computer, with the RSRC_BASE of :computers,
|
|
405
465
|
# This method retuens the output of the 'JSSResource/computers' resource,
|
|
406
466
|
# which is a list of all computers in the JSS.
|
|
407
467
|
#
|
|
@@ -420,12 +480,12 @@ module JSS
|
|
|
420
480
|
# in the class comments/docs above)
|
|
421
481
|
#
|
|
422
482
|
# Subclasses should provide appropriate .all_xxx class methods for accessing
|
|
423
|
-
# any other other values as Arrays, e.g.
|
|
483
|
+
# any other other values as Arrays, e.g. Jamf::Computer.all_managed
|
|
424
484
|
#
|
|
425
485
|
# -- Caching
|
|
426
486
|
#
|
|
427
487
|
# The results of the first call to .all for each subclass is cached in the
|
|
428
|
-
# .
|
|
488
|
+
# .c_object_list_cache of the given {Jamf::Connection} and that cache is
|
|
429
489
|
# used for all future calls, so as to not requery the server every time.
|
|
430
490
|
#
|
|
431
491
|
# To force requerying to get updated data, provided a truthy argument.
|
|
@@ -438,60 +498,96 @@ module JSS
|
|
|
438
498
|
# -- Alternate API connections
|
|
439
499
|
#
|
|
440
500
|
# To query an APIConnection other than the currently active one,
|
|
441
|
-
# provide one via the
|
|
501
|
+
# provide one via the cnx: named parameter.
|
|
442
502
|
#
|
|
443
503
|
# @param refresh[Boolean] should the data be re-queried from the API?
|
|
444
504
|
#
|
|
445
|
-
# @param
|
|
446
|
-
# Defaults to the corrently active API. See {
|
|
505
|
+
# @param cnx [Jamf::Connection] an API connection to use for the query.
|
|
506
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
447
507
|
#
|
|
448
508
|
# @return [Array<Hash{:name=>String, :id=> Integer}>]
|
|
449
509
|
#
|
|
450
|
-
def self.all(refresh = false, api:
|
|
510
|
+
def self.all(refresh = false, api: nil, cnx: Jamf.cnx)
|
|
511
|
+
cnx = api if api
|
|
512
|
+
|
|
451
513
|
validate_not_metaclass(self)
|
|
452
514
|
|
|
453
|
-
cache =
|
|
515
|
+
cache = cnx.c_object_list_cache
|
|
454
516
|
cache_key = self::RSRC_LIST_KEY
|
|
455
|
-
|
|
517
|
+
cnx.flushcache(cache_key) if refresh
|
|
456
518
|
return cache[cache_key] if cache[cache_key]
|
|
457
519
|
|
|
458
|
-
cache[cache_key] =
|
|
520
|
+
cache[cache_key] = cnx.c_get(self::RSRC_BASE)[cache_key]
|
|
459
521
|
end
|
|
460
522
|
|
|
461
523
|
# @return [Hash {String => Integer}] name => number of occurances
|
|
462
524
|
#
|
|
463
|
-
def self.duplicate_names(refresh = false, api:
|
|
525
|
+
def self.duplicate_names(refresh = false, api: nil, cnx: Jamf.cnx)
|
|
526
|
+
cnx = api if api
|
|
527
|
+
|
|
464
528
|
return {} unless defined? self::NON_UNIQUE_NAMES
|
|
465
529
|
|
|
466
530
|
dups = {}
|
|
467
|
-
all(refresh,
|
|
531
|
+
all(refresh, cnx: cnx).each do |obj|
|
|
468
532
|
if dups[obj[:name]]
|
|
469
533
|
dups[obj[:name]] += 1
|
|
470
534
|
else
|
|
471
535
|
dups[obj[:name]] = 1
|
|
472
536
|
end # if
|
|
473
|
-
end # all(refresh,
|
|
474
|
-
dups.delete_if { |
|
|
537
|
+
end # all(refresh, cnx: cnx).each
|
|
538
|
+
dups.delete_if { |_k, v| v == 1 }
|
|
475
539
|
dups
|
|
476
540
|
end
|
|
477
541
|
|
|
542
|
+
# A Hash of all members of this collection where the keys are some
|
|
543
|
+
# identifier and values are any other attribute.
|
|
544
|
+
#
|
|
545
|
+
# @param ident [Symbol] An identifier of this Class, used as the key
|
|
546
|
+
# for the mapping Hash. Aliases are acceptable, e.g. :sn for :serialNumber
|
|
547
|
+
#
|
|
548
|
+
# @param to [Symbol] The attribute to which the ident will be mapped.
|
|
549
|
+
# Aliases are acceptable, e.g. :name for :displayName
|
|
550
|
+
#
|
|
551
|
+
# @param refresh [Boolean] Re-read the 'all' data from the API? otherwise
|
|
552
|
+
# use the cached data if available.
|
|
553
|
+
#
|
|
554
|
+
# @param cnx (see .all)
|
|
555
|
+
#
|
|
556
|
+
# @return [Hash {Symbol: Object}] A Hash of identifier mapped to attribute
|
|
557
|
+
#
|
|
558
|
+
######################################
|
|
559
|
+
def self.map_all(ident, to:, cnx: Jamf.cnx, refresh: false, cached_list: nil)
|
|
560
|
+
ident = lookup_keys[ident]
|
|
561
|
+
raise Jamf::InvalidDataError, "No identifier :#{ident} for class #{self}" unless ident
|
|
562
|
+
|
|
563
|
+
list = cached_list || all(refresh, cnx: cnx)
|
|
564
|
+
mapped = list.map do |i|
|
|
565
|
+
[
|
|
566
|
+
i[ident],
|
|
567
|
+
i[to]
|
|
568
|
+
]
|
|
569
|
+
end # do i
|
|
570
|
+
|
|
571
|
+
mapped.to_h
|
|
572
|
+
end
|
|
573
|
+
|
|
478
574
|
# Return a hash of all objects of this subclass
|
|
479
575
|
# in the JSS where the key is the id, and the value
|
|
480
|
-
# is some other key in the data items returned by the
|
|
576
|
+
# is some other key in the data items returned by the Jamf::APIObject.all.
|
|
481
577
|
#
|
|
482
578
|
# If the other key doesn't exist in the API summary data from .all
|
|
483
|
-
# (eg :udid for
|
|
579
|
+
# (eg :udid for Jamf::Department) the values will be nil.
|
|
484
580
|
#
|
|
485
581
|
# Use this method to map ID numbers to other identifiers returned
|
|
486
582
|
# by the API list resources. Invert its result to map the other
|
|
487
583
|
# identfier to ids.
|
|
488
584
|
#
|
|
489
585
|
# @example
|
|
490
|
-
#
|
|
586
|
+
# Jamf::Computer.map_all_ids_to(:serial_number)
|
|
491
587
|
#
|
|
492
588
|
# # Returns, eg {2 => "C02YD3U8JHD3", 5 => "VMMz7xgg8lYZ"}
|
|
493
589
|
#
|
|
494
|
-
#
|
|
590
|
+
# Jamf::Computer.map_all_ids_to(:serial_number).invert
|
|
495
591
|
#
|
|
496
592
|
# # Returns, eg {"C02YD3U8JHD3" => 2, "VMMz7xgg8lYZ" => 5}
|
|
497
593
|
#
|
|
@@ -511,29 +607,33 @@ module JSS
|
|
|
511
607
|
#
|
|
512
608
|
# @param refresh[Boolean] should the data re-queried from the API?
|
|
513
609
|
#
|
|
514
|
-
# @param
|
|
515
|
-
# Defaults to the corrently active API. See {
|
|
610
|
+
# @param cnx [Jamf::Connection] an API connection to use for the query.
|
|
611
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
516
612
|
#
|
|
517
613
|
# @return [Hash{Integer => Oject}] the associated ids and data
|
|
518
614
|
#
|
|
519
|
-
def self.map_all_ids_to(other_key, refresh = false, api:
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
cache[cache_key]
|
|
615
|
+
def self.map_all_ids_to(other_key, refresh = false, cached_list: nil, api: nil, cnx: Jamf.cnx)
|
|
616
|
+
cnx = api if api
|
|
617
|
+
|
|
618
|
+
map_all :id, to: other_key, refresh: refresh, cnx: cnx, cached_list: cached_list
|
|
619
|
+
|
|
620
|
+
# # we will accept any key, it'll just return nil if not in the
|
|
621
|
+
# # .all hashes. However if we're given an alias of a lookup key
|
|
622
|
+
# # we need to convert it to its real name.
|
|
623
|
+
# other_key = lookup_keys[other_key] if lookup_keys[other_key]
|
|
624
|
+
#
|
|
625
|
+
# cache_key = "#{self::RSRC_LIST_KEY}_map_#{other_key}".to_sym
|
|
626
|
+
# cache = cnx.c_object_list_cache
|
|
627
|
+
# cache[cache_key] = nil if refresh
|
|
628
|
+
# return cache[cache_key] if cache[cache_key]
|
|
629
|
+
#
|
|
630
|
+
# map = {}
|
|
631
|
+
# all(refresh, cnx: cnx).each { |i| map[i[:id]] = i[other_key] }
|
|
632
|
+
# cache[cache_key] = map
|
|
533
633
|
end
|
|
534
634
|
|
|
535
|
-
# Return an Array of
|
|
536
|
-
# e.g when called on
|
|
635
|
+
# Return an Array of Jamf::APIObject subclass instances
|
|
636
|
+
# e.g when called on Jamf::Package, return a hash of Jamf::Package instancesa
|
|
537
637
|
# for every package in the JSS.
|
|
538
638
|
#
|
|
539
639
|
# WARNING: This may be slow as it has to look up each object individually!
|
|
@@ -541,24 +641,26 @@ module JSS
|
|
|
541
641
|
#
|
|
542
642
|
# @param refresh[Boolean] should the data re-queried from the API?
|
|
543
643
|
#
|
|
544
|
-
# @param
|
|
545
|
-
# Defaults to the corrently active API. See {
|
|
644
|
+
# @param cnx [Jamf::Connection] an API connection to use for the query.
|
|
645
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
546
646
|
#
|
|
547
647
|
# @return [Array<APIObject>] the objects requested
|
|
548
648
|
#
|
|
549
|
-
def self.all_objects(refresh = false, api:
|
|
649
|
+
def self.all_objects(refresh = false, api: nil, cnx: Jamf.cnx)
|
|
650
|
+
cnx = api if api
|
|
651
|
+
|
|
550
652
|
objects_cache_key ||= "#{self::RSRC_LIST_KEY}_objects".to_sym
|
|
551
|
-
api_cache =
|
|
653
|
+
api_cache = cnx.c_object_list_cache
|
|
552
654
|
api_cache[objects_cache_key] = nil if refresh
|
|
553
655
|
|
|
554
656
|
return api_cache[objects_cache_key] if api_cache[objects_cache_key]
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
657
|
+
|
|
658
|
+
all_result = all(refresh, cnx: cnx)
|
|
659
|
+
api_cache[objects_cache_key] = all_result.map do |o|
|
|
660
|
+
fetch id: o[:id], cnx: cnx, refresh: false
|
|
558
661
|
end
|
|
559
662
|
end
|
|
560
663
|
|
|
561
|
-
|
|
562
664
|
# Return the id of the object of this subclass with the given identifier.
|
|
563
665
|
#
|
|
564
666
|
# Return nil if no object has an identifier that matches.
|
|
@@ -576,24 +678,25 @@ module JSS
|
|
|
576
678
|
#
|
|
577
679
|
# @param refresh [Boolean] Should the data be re-read from the server
|
|
578
680
|
#
|
|
579
|
-
# @param
|
|
580
|
-
# Defaults to the corrently active API. See {
|
|
681
|
+
# @param cnx [Jamf::Connection] an API connection to use for the query.
|
|
682
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
581
683
|
#
|
|
582
684
|
# @return [Integer, nil] the id of the matching object, or nil if it doesn't exist
|
|
583
685
|
#
|
|
584
|
-
def self.valid_id(identifier, refresh = false, api:
|
|
686
|
+
def self.valid_id(identifier, refresh = false, api: nil, cnx: Jamf.cnx)
|
|
687
|
+
cnx = api if api
|
|
585
688
|
|
|
586
689
|
# refresh if needed
|
|
587
|
-
all(refresh,
|
|
690
|
+
all(refresh, cnx: cnx) if refresh
|
|
588
691
|
|
|
589
692
|
# it its a valid id, return it
|
|
590
|
-
return identifier if all_ids(
|
|
693
|
+
return identifier if all_ids(cnx: cnx).include? identifier
|
|
591
694
|
|
|
592
695
|
keys_to_check = lookup_keys(no_aliases: true)
|
|
593
696
|
keys_to_check.delete :id # we've already checked :id
|
|
594
697
|
|
|
595
698
|
keys_to_check.each do |key|
|
|
596
|
-
mapped_ids = map_all_ids_to key,
|
|
699
|
+
mapped_ids = map_all_ids_to key, cnx: cnx
|
|
597
700
|
matches = mapped_ids.select { |_id, ident| ident.casecmp? identifier }
|
|
598
701
|
# If exactly one match, return the id
|
|
599
702
|
return matches.keys.first if matches.size == 1
|
|
@@ -609,11 +712,11 @@ module JSS
|
|
|
609
712
|
#
|
|
610
713
|
# @example
|
|
611
714
|
# # get the id for the computer with serialnum 'xyxyxyxy'
|
|
612
|
-
#
|
|
715
|
+
# Jamf::Computer.id_for_identifier :serial_number, 'xyxyxyxy'
|
|
613
716
|
#
|
|
614
717
|
# # => the Integer id, or nil if no such serial number
|
|
615
718
|
#
|
|
616
|
-
# Raises a
|
|
719
|
+
# Raises a Jamf::Ambiguous error if there's more than one matching value
|
|
617
720
|
# for any key, which might be true of names for Computers and Devices
|
|
618
721
|
#
|
|
619
722
|
# This is similar to .valid_id, except only one key is searched
|
|
@@ -627,25 +730,27 @@ module JSS
|
|
|
627
730
|
# @param refresh [Boolean] Should the cached summary data be re-read from
|
|
628
731
|
# the server first?
|
|
629
732
|
#
|
|
630
|
-
# @param
|
|
631
|
-
# Defaults to the corrently active API. See {
|
|
733
|
+
# @param cnx [Jamf::Connection] an API connection to use for the query.
|
|
734
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
632
735
|
#
|
|
633
736
|
# @return [Integer, nil] the id of the matching object, or nil if it
|
|
634
737
|
# doesn't exist
|
|
635
738
|
#
|
|
636
|
-
def self.id_for_identifier(key, val, refresh = false, api:
|
|
739
|
+
def self.id_for_identifier(key, val, refresh = false, api: nil, cnx: Jamf.cnx)
|
|
740
|
+
cnx = api if api
|
|
741
|
+
|
|
637
742
|
# refresh if needed
|
|
638
|
-
all(refresh,
|
|
743
|
+
all(refresh, cnx: cnx) if refresh
|
|
639
744
|
|
|
640
745
|
# get the real key if an alias was used
|
|
641
746
|
key = real_lookup_key key
|
|
642
747
|
|
|
643
748
|
# do id's expicitly, they are integers
|
|
644
|
-
return all_ids.include?(val) ? val : nil if key == :id
|
|
749
|
+
return all_ids(cnx: cnx).include?(val) ? val : nil if key == :id
|
|
645
750
|
|
|
646
|
-
mapped_ids = map_all_ids_to key,
|
|
751
|
+
mapped_ids = map_all_ids_to key, cnx: cnx
|
|
647
752
|
matches = mapped_ids.select { |_id, map_val| val.casecmp? map_val }
|
|
648
|
-
raise
|
|
753
|
+
raise Jamf::AmbiguousError, "Key #{key}: value '#{val}' is not unique for #{self}" if matches.size > 1
|
|
649
754
|
|
|
650
755
|
return nil if matches.size.zero?
|
|
651
756
|
|
|
@@ -660,13 +765,15 @@ module JSS
|
|
|
660
765
|
#
|
|
661
766
|
# @param refresh [Boolean] Should the data be re-read from the server
|
|
662
767
|
#
|
|
663
|
-
# @param
|
|
664
|
-
# Defaults to the corrently active API. See {
|
|
768
|
+
# @param cnx [Jamf::Connection] an API connection to use for the query.
|
|
769
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
665
770
|
#
|
|
666
771
|
# @return [Boolean] does an object with the given identifier exist?
|
|
667
772
|
#
|
|
668
|
-
def self.exist?(identifier, refresh = false, api:
|
|
669
|
-
|
|
773
|
+
def self.exist?(identifier, refresh = false, api: nil, cnx: Jamf.cnx)
|
|
774
|
+
cnx = api if api
|
|
775
|
+
|
|
776
|
+
!valid_id(identifier, refresh, cnx: cnx).nil?
|
|
670
777
|
end
|
|
671
778
|
|
|
672
779
|
# Convert an Array of Hashes of API object data to a
|
|
@@ -679,9 +786,9 @@ module JSS
|
|
|
679
786
|
# with one <class> element per Hash member.
|
|
680
787
|
#
|
|
681
788
|
# @example
|
|
682
|
-
# # for class
|
|
789
|
+
# # for class Jamf::Computer
|
|
683
790
|
# some_comps = [{:id=>2, :name=>"kimchi"},{:id=>5, :name=>"mantis"}]
|
|
684
|
-
# xml_names =
|
|
791
|
+
# xml_names = Jamf::Computer.xml_list some_comps
|
|
685
792
|
# puts xml_names # output manually formatted for clarity, xml.to_s has no newlines between elements
|
|
686
793
|
#
|
|
687
794
|
# <computers>
|
|
@@ -693,7 +800,7 @@ module JSS
|
|
|
693
800
|
# </computer>
|
|
694
801
|
# </computers>
|
|
695
802
|
#
|
|
696
|
-
# xml_ids =
|
|
803
|
+
# xml_ids = Jamf::Computer.xml_list some_comps, :id
|
|
697
804
|
# puts xml_names # output manually formatted for clarity, xml.to_s has no newlines between elements
|
|
698
805
|
#
|
|
699
806
|
# <computers>
|
|
@@ -756,10 +863,10 @@ module JSS
|
|
|
756
863
|
#
|
|
757
864
|
# @example
|
|
758
865
|
# # computer where 'xyxyxyxy' is in any of the lookup key fields
|
|
759
|
-
#
|
|
866
|
+
# Jamf::Computer.fetch 'xyxyxyxy'
|
|
760
867
|
#
|
|
761
868
|
# # computer where 'xyxyxyxy' is the serial number
|
|
762
|
-
#
|
|
869
|
+
# Jamf::Computer.fetch serial_number: 'xyxyxyxy'
|
|
763
870
|
#
|
|
764
871
|
# Fetching is faster when specifying a lookup key, and that key has a
|
|
765
872
|
# fetch_rsrc_key defined in its OTHER_LOOKUP_KEYS constant, as in the second
|
|
@@ -785,8 +892,8 @@ module JSS
|
|
|
785
892
|
# If no searchterm is provided, one of the args must be a valid
|
|
786
893
|
# lookup key and value to find in that key, e.g. `serial_number: '1234567'`
|
|
787
894
|
#
|
|
788
|
-
# @option args
|
|
789
|
-
# Defaults to the corrently active API. See {
|
|
895
|
+
# @option args cnx[Jamf::Connection] an API connection to use for the query.
|
|
896
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
790
897
|
#
|
|
791
898
|
# @option args refresh[Boolean] should the summary list of all objects be
|
|
792
899
|
# reloaded from the API before being used to look for this object.
|
|
@@ -797,35 +904,34 @@ module JSS
|
|
|
797
904
|
validate_not_metaclass(self)
|
|
798
905
|
|
|
799
906
|
# which connection?
|
|
800
|
-
|
|
801
|
-
|
|
907
|
+
cnx = args.delete :cnx
|
|
908
|
+
cnx ||= args.delete :api
|
|
909
|
+
cnx ||= Jamf.cnx
|
|
802
910
|
|
|
803
911
|
# refresh the .all list if needed
|
|
804
912
|
if args.delete(:refresh) || searchterm == :random
|
|
805
|
-
all(:refresh,
|
|
913
|
+
all(:refresh, cnx: cnx)
|
|
806
914
|
just_refreshed = true
|
|
807
915
|
else
|
|
808
916
|
just_refreshed = false
|
|
809
917
|
end
|
|
810
918
|
|
|
811
919
|
# a random object?
|
|
812
|
-
if searchterm == :random
|
|
813
|
-
rnd_thing = all.sample
|
|
814
|
-
raise
|
|
920
|
+
if searchterm == :random || args[:random]
|
|
921
|
+
rnd_thing = all(cnx: cnx).sample
|
|
922
|
+
raise Jamf::NoSuchItemError, "No #{self::RSRC_LIST_KEY} found" unless rnd_thing
|
|
815
923
|
|
|
816
|
-
return new id: rnd_thing[:id],
|
|
924
|
+
return new id: rnd_thing[:id], cnx: cnx
|
|
817
925
|
end
|
|
818
926
|
|
|
819
927
|
# get the lookup key and value, if given
|
|
820
928
|
fetch_key, fetch_val = args.to_a.first
|
|
821
929
|
fetch_rsrc_key = fetch_rsrc_key(fetch_key)
|
|
822
930
|
|
|
823
|
-
err_detail = "where #{fetch_key} = #{fetch_val}"
|
|
824
|
-
|
|
825
931
|
# names should raise an error if more than one exists,
|
|
826
932
|
# so we always have to do id_for_identifier, which will do so.
|
|
827
933
|
if fetch_rsrc_key == :name
|
|
828
|
-
id = id_for_identifier fetch_key, fetch_val, !just_refreshed,
|
|
934
|
+
id = id_for_identifier fetch_key, fetch_val, !just_refreshed, cnx: cnx
|
|
829
935
|
fetch_rsrc = id ? "#{self::RSRC_BASE}/name/#{CGI.escape fetch_val.to_s}" : nil
|
|
830
936
|
|
|
831
937
|
# if the fetch rsrc key exists, it can be used directly in an endpoint path
|
|
@@ -836,20 +942,19 @@ module JSS
|
|
|
836
942
|
# it has an OTHER_LOOKUP_KEY but that key doesn't have a fetch_rsrc
|
|
837
943
|
# so we look in the .map_all_ids_to_* hash for it.
|
|
838
944
|
elsif fetch_key
|
|
839
|
-
id = id_for_identifier fetch_key, fetch_val, !just_refreshed,
|
|
945
|
+
id = id_for_identifier fetch_key, fetch_val, !just_refreshed, cnx: cnx
|
|
840
946
|
fetch_rsrc = id ? "#{self::RSRC_BASE}/id/#{id}" : nil
|
|
841
947
|
|
|
842
948
|
# no fetch key was given in the args, so try a search term
|
|
843
949
|
elsif searchterm
|
|
844
|
-
id = valid_id searchterm,
|
|
950
|
+
id = valid_id searchterm, cnx: cnx
|
|
845
951
|
fetch_rsrc = id ? "#{self::RSRC_BASE}/id/#{id}" : nil
|
|
846
|
-
err_detail = "matching #{searchterm}"
|
|
847
952
|
|
|
848
953
|
else
|
|
849
954
|
raise ArgumentError, 'Missing searchterm or fetch key'
|
|
850
955
|
end
|
|
851
956
|
|
|
852
|
-
new fetch_rsrc: fetch_rsrc,
|
|
957
|
+
new fetch_rsrc: fetch_rsrc, cnx: cnx
|
|
853
958
|
end # fetch
|
|
854
959
|
|
|
855
960
|
# Fetch the mostly- or fully-raw JSON or XML data for an object of this
|
|
@@ -869,7 +974,7 @@ module JSS
|
|
|
869
974
|
# all the ruby goodness of a full instance, but just want a few values for
|
|
870
975
|
# an object that aren't available in the `all` data
|
|
871
976
|
#
|
|
872
|
-
# This is really just a wrapper around {APIConnection.
|
|
977
|
+
# This is really just a wrapper around {APIConnection.c_get} that
|
|
873
978
|
# automatically fills in the RSRC::BASE value for you.
|
|
874
979
|
#
|
|
875
980
|
# @param id [Integer] the id of the object to fetch
|
|
@@ -879,18 +984,20 @@ module JSS
|
|
|
879
984
|
# @param as_string[Boolean] return the raw JSON or XML string as it comes
|
|
880
985
|
# from the API, do not parse into a Hash or REXML::Document
|
|
881
986
|
#
|
|
882
|
-
# @param
|
|
883
|
-
# object. Defaults to the deault API connection in
|
|
987
|
+
# @param cnx [Jamf::Connection] the connection thru which to fetch this
|
|
988
|
+
# object. Defaults to the deault API connection in Jamf.cnx
|
|
884
989
|
#
|
|
885
990
|
# @return [Hash, REXML::Document, String] the raw data for the object
|
|
886
991
|
#
|
|
887
|
-
def self.get_raw(id, format: :json, as_string: false, api:
|
|
992
|
+
def self.get_raw(id, format: :json, as_string: false, api: nil, cnx: Jamf.cnx)
|
|
993
|
+
cnx = api if api
|
|
994
|
+
|
|
888
995
|
validate_not_metaclass(self)
|
|
889
996
|
rsrc = "#{self::RSRC_BASE}/id/#{id}"
|
|
890
|
-
data =
|
|
997
|
+
data = cnx.c_get rsrc, format, raw_json: as_string
|
|
891
998
|
return data if format == :json || as_string
|
|
892
999
|
|
|
893
|
-
REXML::Document.new(data)
|
|
1000
|
+
REXML::Document.new(**data)
|
|
894
1001
|
end
|
|
895
1002
|
|
|
896
1003
|
# PUT some raw XML to the API for a given id in this subclass.
|
|
@@ -903,22 +1010,24 @@ module JSS
|
|
|
903
1010
|
# In some cases, where you're making simple changes to simple XML,
|
|
904
1011
|
# this can be faster than fetching a full instance and the re-saving it.
|
|
905
1012
|
#
|
|
906
|
-
# This is really just a wrapper around {APIConnection.
|
|
1013
|
+
# This is really just a wrapper around {APIConnection.c_put} that
|
|
907
1014
|
# automatically fills in the RSRC::BASE value for you.
|
|
908
1015
|
#
|
|
909
1016
|
# @param id [Integer] the id of the object to PUT
|
|
910
1017
|
#
|
|
911
1018
|
# @param xml [String, #to_s] The XML to send
|
|
912
1019
|
#
|
|
913
|
-
# @param
|
|
914
|
-
# object. Defaults to the deault API connection in
|
|
1020
|
+
# @param cnx [Jamf::Connection] the connection thru which to fetch this
|
|
1021
|
+
# object. Defaults to the deault API connection in Jamf.cnx
|
|
915
1022
|
#
|
|
916
1023
|
# @return [REXML::Document] the XML response from the API
|
|
917
1024
|
#
|
|
918
|
-
def self.put_raw(id, xml, api:
|
|
1025
|
+
def self.put_raw(id, xml, api: nil, cnx: Jamf.cnx)
|
|
1026
|
+
cnx = api if api
|
|
1027
|
+
|
|
919
1028
|
validate_not_metaclass(self)
|
|
920
1029
|
rsrc = "#{self::RSRC_BASE}/id/#{id}"
|
|
921
|
-
REXML::Document.new(
|
|
1030
|
+
REXML::Document.new(cnx.c_put(rsrc, xml.to_s))
|
|
922
1031
|
end
|
|
923
1032
|
|
|
924
1033
|
# POST some raw XML to the API for a given id in this subclass.
|
|
@@ -931,20 +1040,22 @@ module JSS
|
|
|
931
1040
|
# This probably isn't as much of a speed gain as get_raw or put_raw, as
|
|
932
1041
|
# opposed to instantiating a ruby object, but might still be useful.
|
|
933
1042
|
#
|
|
934
|
-
# This is really just a wrapper around {APIConnection.
|
|
1043
|
+
# This is really just a wrapper around {APIConnection.c_post} that
|
|
935
1044
|
# automatically fills in the RSRC::BASE value for you.
|
|
936
1045
|
#
|
|
937
1046
|
# @param xml [String, #to_s] The XML to send
|
|
938
1047
|
#
|
|
939
|
-
# @param
|
|
940
|
-
# object. Defaults to the deault API connection in
|
|
1048
|
+
# @param cnx [Jamf::Connection] the connection thru which to fetch this
|
|
1049
|
+
# object. Defaults to the deault API connection in Jamf.cnx
|
|
941
1050
|
#
|
|
942
1051
|
# @return [REXML::Document] the XML response from the API
|
|
943
1052
|
#
|
|
944
|
-
def self.post_raw(
|
|
1053
|
+
def self.post_raw(xml, api: nil, cnx: Jamf.cnx)
|
|
1054
|
+
cnx = api if api
|
|
1055
|
+
|
|
945
1056
|
validate_not_metaclass(self)
|
|
946
1057
|
rsrc = "#{self::RSRC_BASE}/id/-1"
|
|
947
|
-
REXML::Document.new(
|
|
1058
|
+
REXML::Document.new(cnx.c_post(rsrc, xml.to_s))
|
|
948
1059
|
end
|
|
949
1060
|
|
|
950
1061
|
# Make a ruby instance of a not-yet-existing APIObject.
|
|
@@ -959,24 +1070,30 @@ module JSS
|
|
|
959
1070
|
#
|
|
960
1071
|
# @param name[String] The name of this object, generally must be uniqie
|
|
961
1072
|
#
|
|
962
|
-
# @param
|
|
963
|
-
# object. Defaults to the deault API connection in
|
|
1073
|
+
# @param cnx [Jamf::Connection] the connection thru which to make this
|
|
1074
|
+
# object. Defaults to the deault API connection in Jamf.cnx
|
|
964
1075
|
#
|
|
965
1076
|
# @param args[Hash] The data for creating an object, such as name:
|
|
966
1077
|
# See {APIObject#initialize}
|
|
967
1078
|
#
|
|
968
1079
|
# @return [APIObject] The un-created ruby-instance of a JSS object
|
|
969
1080
|
#
|
|
970
|
-
def self.
|
|
1081
|
+
def self.create(**args)
|
|
971
1082
|
validate_not_metaclass(self)
|
|
972
1083
|
unless constants.include?(:CREATABLE)
|
|
973
|
-
raise
|
|
1084
|
+
raise Jamf::UnsupportedError, "Creating #{self.class::RSRC_LIST_KEY} isn't yet supported. Please use other Casper workflows."
|
|
974
1085
|
end
|
|
975
1086
|
raise ArgumentError, "Use '#{self.class}.fetch id: xx' to retrieve existing JSS objects" if args[:id]
|
|
976
1087
|
|
|
977
|
-
args[:api] ||=
|
|
1088
|
+
args[:api] ||= Jamf.cnx
|
|
978
1089
|
args[:id] = :new
|
|
979
|
-
new
|
|
1090
|
+
new(**args)
|
|
1091
|
+
end
|
|
1092
|
+
|
|
1093
|
+
# backward compatability
|
|
1094
|
+
# @deprecated use .create instead
|
|
1095
|
+
def self.make(**args)
|
|
1096
|
+
create(**args)
|
|
980
1097
|
end
|
|
981
1098
|
|
|
982
1099
|
# Disallow direct use of ruby's .new class method for creating instances.
|
|
@@ -985,9 +1102,7 @@ module JSS
|
|
|
985
1102
|
validate_not_metaclass(self)
|
|
986
1103
|
|
|
987
1104
|
calling_method = caller_locations(1..1).first.label
|
|
988
|
-
unless OK_INSTANTIATORS.include? calling_method
|
|
989
|
-
raise JSS::UnsupportedError, 'Use .fetch or .make to instantiate APIObject classes'
|
|
990
|
-
end
|
|
1105
|
+
raise Jamf::UnsupportedError, 'Use .fetch or .create to instantiate APIObject classes' unless OK_INSTANTIATORS.include? calling_method
|
|
991
1106
|
|
|
992
1107
|
super
|
|
993
1108
|
end
|
|
@@ -1000,16 +1115,18 @@ module JSS
|
|
|
1000
1115
|
# @param victims[Integer,Array<Integer>] An object id or an array of them
|
|
1001
1116
|
# to be deleted
|
|
1002
1117
|
#
|
|
1003
|
-
# @param
|
|
1004
|
-
# Defaults to the corrently active API. See {
|
|
1118
|
+
# @param cnx [Jamf::Connection] the API connection to use.
|
|
1119
|
+
# Defaults to the corrently active API. See {Jamf::Connection}
|
|
1005
1120
|
#
|
|
1006
1121
|
# @return [Array<Integer>] The id's that didn't exist when we tried to
|
|
1007
1122
|
# delete them.
|
|
1008
1123
|
#
|
|
1009
|
-
def self.delete(victims, refresh = true, api:
|
|
1124
|
+
def self.delete(victims, refresh = true, api: nil, cnx: Jamf.cnx)
|
|
1125
|
+
cnx = api if api
|
|
1126
|
+
|
|
1010
1127
|
validate_not_metaclass(self)
|
|
1011
1128
|
|
|
1012
|
-
raise
|
|
1129
|
+
raise Jamf::InvalidDataError, 'Parameter must be an Integer ID or an Array of them' unless victims.is_a?(Integer) || victims.is_a?(Array)
|
|
1013
1130
|
|
|
1014
1131
|
case victims
|
|
1015
1132
|
when Integer
|
|
@@ -1019,10 +1136,10 @@ module JSS
|
|
|
1019
1136
|
end
|
|
1020
1137
|
|
|
1021
1138
|
skipped = []
|
|
1022
|
-
current_ids = all_ids refresh,
|
|
1139
|
+
current_ids = all_ids refresh, cnx: cnx
|
|
1023
1140
|
victims.each do |vid|
|
|
1024
1141
|
if current_ids.include? vid
|
|
1025
|
-
|
|
1142
|
+
cnx.c_delete "#{self::RSRC_BASE}/id/#{vid}"
|
|
1026
1143
|
else
|
|
1027
1144
|
skipped << vid
|
|
1028
1145
|
end # if current_ids include vid
|
|
@@ -1030,23 +1147,25 @@ module JSS
|
|
|
1030
1147
|
|
|
1031
1148
|
# clear any cached all-lists or id-maps for this class
|
|
1032
1149
|
# so they'll re-cache as needed
|
|
1033
|
-
|
|
1034
|
-
# all :refresh,
|
|
1150
|
+
cnx.flushcache self::RSRC_LIST_KEY
|
|
1151
|
+
# all :refresh, cnx: cnx
|
|
1035
1152
|
|
|
1036
1153
|
skipped
|
|
1037
1154
|
end # self.delete
|
|
1038
1155
|
|
|
1039
1156
|
# Can't use APIObject directly.
|
|
1040
1157
|
def self.validate_not_metaclass(klass)
|
|
1041
|
-
raise
|
|
1158
|
+
raise Jamf::UnsupportedError, 'Jamf::APIObject is a metaclass. Do not use it directly' if klass == Jamf::APIObject
|
|
1042
1159
|
end
|
|
1043
1160
|
|
|
1044
1161
|
# Attributes
|
|
1045
1162
|
#####################################
|
|
1046
1163
|
|
|
1047
|
-
# @return [
|
|
1164
|
+
# @return [Jamf::Connection] the API connection thru which we deal with
|
|
1048
1165
|
# this object.
|
|
1049
|
-
attr_reader :
|
|
1166
|
+
attr_reader :cnx
|
|
1167
|
+
# @deprecated 'api' to refer to connection objects will be removed eventually
|
|
1168
|
+
alias api cnx
|
|
1050
1169
|
|
|
1051
1170
|
# @return the parsed JSON data retrieved from the API when this object was
|
|
1052
1171
|
# fetched
|
|
@@ -1074,9 +1193,9 @@ module JSS
|
|
|
1074
1193
|
|
|
1075
1194
|
# The args hash must include :id, :name, or :data.
|
|
1076
1195
|
# * :id or :name will be looked up via the API
|
|
1077
|
-
# * * if the subclass includes
|
|
1196
|
+
# * * if the subclass includes Jamf::Creatable, :id can be :new, to create a new object in the JSS.
|
|
1078
1197
|
# and :name is required
|
|
1079
|
-
# * :data must be the JSON output of a separate {
|
|
1198
|
+
# * :data must be the JSON output of a separate {Jamf::Connection} query (a Hash of valid object data)
|
|
1080
1199
|
#
|
|
1081
1200
|
# Some subclasses can accept other options, by pasing their keys in a final Array
|
|
1082
1201
|
#
|
|
@@ -1091,8 +1210,9 @@ module JSS
|
|
|
1091
1210
|
#
|
|
1092
1211
|
#
|
|
1093
1212
|
def initialize(**args)
|
|
1094
|
-
@
|
|
1095
|
-
@
|
|
1213
|
+
@cnx = args[:cnx]
|
|
1214
|
+
@cnx ||= args[:api]
|
|
1215
|
+
@cnx ||= Jamf.cnx
|
|
1096
1216
|
|
|
1097
1217
|
# we're making a new one in the JSS
|
|
1098
1218
|
if args[:id] == :new
|
|
@@ -1112,6 +1232,18 @@ module JSS
|
|
|
1112
1232
|
# Public Instance Methods
|
|
1113
1233
|
#####################################
|
|
1114
1234
|
|
|
1235
|
+
# Ruby 3's default behavior when raising exceptions will include the output
|
|
1236
|
+
# of #inspect, recursively for all data in an object.
|
|
1237
|
+
# For many OAPIObjects, esp JPAPI Resources, this includes the embedded
|
|
1238
|
+
# Connection object and all the caches is might hold, which might be
|
|
1239
|
+
# thousands of lines.
|
|
1240
|
+
# we override that here to prevent that. I've heard rumor this will be
|
|
1241
|
+
# fixed in ruby 3.2
|
|
1242
|
+
# def inspect
|
|
1243
|
+
# #<Jamf::Policy:0x0000000110138df8
|
|
1244
|
+
# "<#{self.class}:#{object_id}>"
|
|
1245
|
+
# end
|
|
1246
|
+
|
|
1115
1247
|
# Either Create or Update this object in the JSS
|
|
1116
1248
|
#
|
|
1117
1249
|
# If this item is creatable or updatable, then
|
|
@@ -1121,83 +1253,93 @@ module JSS
|
|
|
1121
1253
|
#
|
|
1122
1254
|
def save
|
|
1123
1255
|
if @in_jss
|
|
1124
|
-
raise JSS::UnsupportedError, 'Updating this object in the JSS is currently not supported by ruby-jss' unless updatable?
|
|
1125
|
-
|
|
1126
1256
|
update
|
|
1127
1257
|
else
|
|
1128
|
-
raise JSS::UnsupportedError, 'Creating this object in the JSS is currently not supported by ruby-jss' unless creatable?
|
|
1129
|
-
|
|
1130
1258
|
create
|
|
1131
1259
|
end
|
|
1132
1260
|
end
|
|
1133
1261
|
|
|
1262
|
+
# @deprecated, use #save
|
|
1263
|
+
def create
|
|
1264
|
+
raise Jamf::UnsupportedError, 'Creating this object in the JSS is currently not supported by ruby-jss' unless creatable?
|
|
1265
|
+
|
|
1266
|
+
create_in_jamf
|
|
1267
|
+
end
|
|
1268
|
+
|
|
1269
|
+
# @deprecated, use #save
|
|
1270
|
+
def update
|
|
1271
|
+
raise Jamf::UnsupportedError, 'Updating this object in the JSS is currently not supported by ruby-jss' unless updatable?
|
|
1272
|
+
|
|
1273
|
+
update_in_jamf
|
|
1274
|
+
end
|
|
1275
|
+
|
|
1134
1276
|
# Mix-in Modules.
|
|
1135
1277
|
# Each module made for mixing in to APIObject subclasses
|
|
1136
1278
|
# sets an appropriate constant to true.
|
|
1137
1279
|
# These methods provide a simple way to programattically determine
|
|
1138
1280
|
# if an object has one of the mixed-in modules available.
|
|
1139
1281
|
|
|
1140
|
-
# @return [Boolean] See {
|
|
1282
|
+
# @return [Boolean] See {Jamf::Creatable}
|
|
1141
1283
|
def creatable?
|
|
1142
1284
|
defined? self.class::CREATABLE
|
|
1143
1285
|
end
|
|
1144
1286
|
|
|
1145
|
-
# @return [Boolean] See {
|
|
1287
|
+
# @return [Boolean] See {Jamf::Updatable}
|
|
1146
1288
|
def updatable?
|
|
1147
1289
|
defined? self.class::UPDATABLE
|
|
1148
1290
|
end
|
|
1149
1291
|
|
|
1150
|
-
# @return [Boolean] See {
|
|
1292
|
+
# @return [Boolean] See {Jamf::Categorizable}
|
|
1151
1293
|
def categorizable?
|
|
1152
1294
|
defined? self.class::CATEGORIZABLE
|
|
1153
1295
|
end
|
|
1154
1296
|
|
|
1155
|
-
# @return [Boolean] See {
|
|
1297
|
+
# @return [Boolean] See {Jamf::VPPable}
|
|
1156
1298
|
def vppable?
|
|
1157
1299
|
defined? self.class::VPPABLE
|
|
1158
1300
|
end
|
|
1159
1301
|
|
|
1160
|
-
# @return [Boolean] See {
|
|
1302
|
+
# @return [Boolean] See {Jamf::SelfServable}
|
|
1161
1303
|
def self_servable?
|
|
1162
1304
|
defined? self.class::SELF_SERVABLE
|
|
1163
1305
|
end
|
|
1164
1306
|
|
|
1165
|
-
# @return [Boolean] See {
|
|
1307
|
+
# @return [Boolean] See {Jamf::Criteriable}
|
|
1166
1308
|
def criterable?
|
|
1167
1309
|
defined? self.class::CRITERIABLE
|
|
1168
1310
|
end
|
|
1169
1311
|
|
|
1170
|
-
# @return [Boolean] See {
|
|
1312
|
+
# @return [Boolean] See {Jamf::Sitable}
|
|
1171
1313
|
def sitable?
|
|
1172
1314
|
defined? self.class::SITABLE
|
|
1173
1315
|
end
|
|
1174
1316
|
|
|
1175
|
-
# @return [Boolean] See {
|
|
1317
|
+
# @return [Boolean] See {Jamf::extendable}
|
|
1176
1318
|
def extendable?
|
|
1177
1319
|
defined? self.class::EXTENDABLE
|
|
1178
1320
|
end
|
|
1179
1321
|
|
|
1180
|
-
# @return [Boolean] See {
|
|
1322
|
+
# @return [Boolean] See {Jamf::Matchable}
|
|
1181
1323
|
def matchable?
|
|
1182
1324
|
defined? self.class::MATCHABLE
|
|
1183
1325
|
end
|
|
1184
1326
|
|
|
1185
|
-
# @return [Boolean] See {
|
|
1327
|
+
# @return [Boolean] See {Jamf::Locatable}
|
|
1186
1328
|
def locatable?
|
|
1187
1329
|
defined? self.class::LOCATABLE
|
|
1188
1330
|
end
|
|
1189
1331
|
|
|
1190
|
-
# @return [Boolean] See {
|
|
1332
|
+
# @return [Boolean] See {Jamf::Purchasable}
|
|
1191
1333
|
def purchasable?
|
|
1192
1334
|
defined? self.class::PURCHASABLE
|
|
1193
1335
|
end
|
|
1194
1336
|
|
|
1195
|
-
# @return [Boolean] See {
|
|
1337
|
+
# @return [Boolean] See {Jamf::Scopable}
|
|
1196
1338
|
def scopable?
|
|
1197
1339
|
defined? self.class::SCOPABLE
|
|
1198
1340
|
end
|
|
1199
1341
|
|
|
1200
|
-
# @return [Boolean] See {
|
|
1342
|
+
# @return [Boolean] See {Jamf::Uploadable}
|
|
1201
1343
|
def uploadable?
|
|
1202
1344
|
defined? self.class::UPLOADABLE
|
|
1203
1345
|
end
|
|
@@ -1216,7 +1358,7 @@ module JSS
|
|
|
1216
1358
|
def delete
|
|
1217
1359
|
return unless @in_jss
|
|
1218
1360
|
|
|
1219
|
-
@
|
|
1361
|
+
@cnx.c_delete @rest_rsrc
|
|
1220
1362
|
|
|
1221
1363
|
@rest_rsrc = "#{self.class::RSRC_BASE}/name/#{CGI.escape @name.to_s}"
|
|
1222
1364
|
@id = nil
|
|
@@ -1225,8 +1367,8 @@ module JSS
|
|
|
1225
1367
|
|
|
1226
1368
|
# clear any cached all-lists or id-maps for this class
|
|
1227
1369
|
# so they'll re-cache as needed
|
|
1228
|
-
@
|
|
1229
|
-
# self.class.all :refresh,
|
|
1370
|
+
@cnx.flushcache self.class::RSRC_LIST_KEY
|
|
1371
|
+
# self.class.all :refresh, cnx: @cnx
|
|
1230
1372
|
|
|
1231
1373
|
:deleted
|
|
1232
1374
|
end # delete
|
|
@@ -1236,7 +1378,7 @@ module JSS
|
|
|
1236
1378
|
# @return [String]
|
|
1237
1379
|
#
|
|
1238
1380
|
def to_s
|
|
1239
|
-
"#{self.class}
|
|
1381
|
+
"#{self.class}@#{cnx.host}, id: #{@id}"
|
|
1240
1382
|
end
|
|
1241
1383
|
|
|
1242
1384
|
# Remove the init_data and api object from
|
|
@@ -1247,7 +1389,7 @@ module JSS
|
|
|
1247
1389
|
#
|
|
1248
1390
|
def pretty_print_instance_variables
|
|
1249
1391
|
vars = instance_variables.sort
|
|
1250
|
-
vars.delete :@
|
|
1392
|
+
vars.delete :@cnx
|
|
1251
1393
|
vars.delete :@init_data
|
|
1252
1394
|
vars.delete :@main_subset
|
|
1253
1395
|
vars
|
|
@@ -1259,7 +1401,7 @@ module JSS
|
|
|
1259
1401
|
# object type in the OBJECT_HISTORY_TABLE in the database
|
|
1260
1402
|
# (e.g. for computers, the object type is 1)
|
|
1261
1403
|
#
|
|
1262
|
-
# NOTE: Object history is not available via the API,
|
|
1404
|
+
# NOTE: Object history is not available via the Classic API,
|
|
1263
1405
|
# so access is only available through direct MySQL
|
|
1264
1406
|
# connections
|
|
1265
1407
|
#
|
|
@@ -1281,9 +1423,9 @@ module JSS
|
|
|
1281
1423
|
def add_object_history_entry(user: nil, notes: nil, details: nil)
|
|
1282
1424
|
validate_object_history_available
|
|
1283
1425
|
|
|
1284
|
-
raise
|
|
1426
|
+
raise Jamf::MissingDataError, 'A user: must be provided to make the entry' unless user
|
|
1285
1427
|
|
|
1286
|
-
raise
|
|
1428
|
+
raise Jamf::MissingDataError, 'notes: must be provided to make the entry' unless notes
|
|
1287
1429
|
|
|
1288
1430
|
user = "'#{Mysql.quote user.to_s}'"
|
|
1289
1431
|
notes = "'#{Mysql.quote notes.to_s}'"
|
|
@@ -1302,7 +1444,7 @@ module JSS
|
|
|
1302
1444
|
VALUES
|
|
1303
1445
|
(#{value_list})"
|
|
1304
1446
|
|
|
1305
|
-
|
|
1447
|
+
Jamf::DB_CNX.db.query q
|
|
1306
1448
|
end
|
|
1307
1449
|
|
|
1308
1450
|
# the object history for this object, an array of hashes
|
|
@@ -1324,7 +1466,7 @@ module JSS
|
|
|
1324
1466
|
AND object_id = #{@id}
|
|
1325
1467
|
ORDER BY object_history_id ASC"
|
|
1326
1468
|
|
|
1327
|
-
result =
|
|
1469
|
+
result = Jamf::DB_CNX.db.query q
|
|
1328
1470
|
history = []
|
|
1329
1471
|
result.each do |entry|
|
|
1330
1472
|
history << {
|
|
@@ -1362,14 +1504,16 @@ module JSS
|
|
|
1362
1504
|
# @return [void]
|
|
1363
1505
|
#
|
|
1364
1506
|
def validate_object_history_available
|
|
1365
|
-
raise
|
|
1507
|
+
raise Jamf::NoSuchItemError, 'Object not yet created' unless @id && @in_jss
|
|
1366
1508
|
|
|
1367
|
-
raise
|
|
1509
|
+
raise Jamf::InvalidConnectionError, 'Not connected to MySQL' unless Jamf::DB_CNX.connected?
|
|
1368
1510
|
|
|
1369
|
-
|
|
1511
|
+
unless defined? self.class::OBJECT_HISTORY_OBJECT_TYPE
|
|
1512
|
+
raise Jamf::UnsupportedError,
|
|
1513
|
+
"Object History access is not supported for #{self.class} objects at this time"
|
|
1514
|
+
end
|
|
1370
1515
|
end
|
|
1371
1516
|
|
|
1372
|
-
|
|
1373
1517
|
# If we're making a new object in the JSS, make sure we were given
|
|
1374
1518
|
# valid data to do so, raise exceptions otherwise.
|
|
1375
1519
|
#
|
|
@@ -1382,16 +1526,15 @@ module JSS
|
|
|
1382
1526
|
# @return [void]
|
|
1383
1527
|
#
|
|
1384
1528
|
def validate_init_for_creation(args)
|
|
1385
|
-
raise
|
|
1529
|
+
raise Jamf::UnsupportedError, "Creating #{self.class::RSRC_LIST_KEY} isn't yet supported. Please use other Casper workflows." unless creatable?
|
|
1386
1530
|
|
|
1387
|
-
raise
|
|
1531
|
+
raise Jamf::MissingDataError, "You must provide a :name to create a #{self.class::RSRC_OBJECT_KEY}." unless args[:name]
|
|
1388
1532
|
|
|
1389
1533
|
return if defined? self.class::NON_UNIQUE_NAMES
|
|
1390
1534
|
|
|
1391
|
-
matches = self.class.all_names(:refresh,
|
|
1392
|
-
|
|
1393
|
-
raise JSS::AlreadyExistsError, "A #{self.class::RSRC_OBJECT_KEY} already exists with the name '#{args[:name]}'" unless matches.empty?
|
|
1535
|
+
matches = self.class.all_names(:refresh, cnx: @cnx).select { |n| n.casecmp? args[:name] }
|
|
1394
1536
|
|
|
1537
|
+
raise Jamf::AlreadyExistsError, "A #{self.class::RSRC_OBJECT_KEY} already exists with the name '#{args[:name]}'" unless matches.empty?
|
|
1395
1538
|
end
|
|
1396
1539
|
|
|
1397
1540
|
# Given initialization args, perform an API lookup for an object.
|
|
@@ -1412,10 +1555,10 @@ module JSS
|
|
|
1412
1555
|
raw_json =
|
|
1413
1556
|
if defined? self.class::USE_XML_WORKAROUND
|
|
1414
1557
|
# if we're here, the API JSON is borked, so use the XML
|
|
1415
|
-
|
|
1558
|
+
Jamf::XMLWorkaround.data_via_xml rsrc, self.class::USE_XML_WORKAROUND, @cnx
|
|
1416
1559
|
else
|
|
1417
1560
|
# otherwise
|
|
1418
|
-
@
|
|
1561
|
+
@cnx.c_get(rsrc)
|
|
1419
1562
|
end
|
|
1420
1563
|
|
|
1421
1564
|
raw_json[args[:rsrc_object_key]]
|
|
@@ -1468,6 +1611,7 @@ module JSS
|
|
|
1468
1611
|
def find_main_subset
|
|
1469
1612
|
return @init_data if @init_data[:id] && @init_data[:name]
|
|
1470
1613
|
return @init_data[:general] if @init_data[:general] && @init_data[:general][:id] && @init_data[:general][:name]
|
|
1614
|
+
|
|
1471
1615
|
@init_data.each do |_key, value|
|
|
1472
1616
|
next unless value.is_a? Hash
|
|
1473
1617
|
return value if value.keys.include?(:id) && value.keys.include?(:name)
|
|
@@ -1569,116 +1713,12 @@ module JSS
|
|
|
1569
1713
|
# Most classes will redefine this method.
|
|
1570
1714
|
#
|
|
1571
1715
|
def rest_xml
|
|
1572
|
-
doc = REXML::Document.new
|
|
1716
|
+
doc = REXML::Document.new Jamf::Connection::XML_HEADER
|
|
1573
1717
|
tmpl = doc.add_element self.class::RSRC_OBJECT_KEY.to_s
|
|
1574
1718
|
tmpl.add_element('name').text = @name
|
|
1575
1719
|
doc.to_s
|
|
1576
1720
|
end
|
|
1577
1721
|
|
|
1578
|
-
# Meta Programming
|
|
1579
|
-
####################################################
|
|
1580
|
-
|
|
1581
|
-
# Loop through the defined lookup keys and make
|
|
1582
|
-
# .all_<key>s methods for each one, with
|
|
1583
|
-
# alises as needed.
|
|
1584
|
-
#
|
|
1585
|
-
# This is called automatically in api_object.rb
|
|
1586
|
-
# after all subclasses are loaded.
|
|
1587
|
-
#
|
|
1588
|
-
def self.define_identifier_list_methods
|
|
1589
|
-
return unless @subclasses
|
|
1590
|
-
|
|
1591
|
-
@subclasses.each do |subclass|
|
|
1592
|
-
subclass.lookup_keys.each do |als, key|
|
|
1593
|
-
meth_name = "all_#{key}s"
|
|
1594
|
-
|
|
1595
|
-
if als == key
|
|
1596
|
-
# the all_ method - skip if defined in the class
|
|
1597
|
-
next if subclass.instance_methods.include? meth_name
|
|
1598
|
-
|
|
1599
|
-
subclass.define_singleton_method meth_name do |refresh = false, api: JSS.api|
|
|
1600
|
-
all(refresh, api: api).map { |i| i[key] }
|
|
1601
|
-
end
|
|
1602
|
-
|
|
1603
|
-
else
|
|
1604
|
-
# an alias - skip if defined in the class
|
|
1605
|
-
als_name = "all_#{als}s"
|
|
1606
|
-
next if subclass.instance_methods.include? als_name
|
|
1607
|
-
|
|
1608
|
-
subclass.define_singleton_method als_name do |refresh = false, api: JSS.api|
|
|
1609
|
-
send meth_name, refresh, api: api
|
|
1610
|
-
end
|
|
1611
|
-
end # if
|
|
1612
|
-
end # lookup_keys.each
|
|
1613
|
-
end # @subclasses.each
|
|
1614
|
-
end # self.define_identifier_list_methods
|
|
1615
|
-
|
|
1616
1722
|
end # class APIObject
|
|
1617
1723
|
|
|
1618
|
-
end # module
|
|
1619
|
-
|
|
1620
|
-
### Mix-in Sub Modules
|
|
1621
|
-
require 'jss/api_object/creatable'
|
|
1622
|
-
require 'jss/api_object/uploadable'
|
|
1623
|
-
require 'jss/api_object/locatable'
|
|
1624
|
-
require 'jss/api_object/matchable'
|
|
1625
|
-
require 'jss/api_object/purchasable'
|
|
1626
|
-
require 'jss/api_object/updatable'
|
|
1627
|
-
require 'jss/api_object/extendable'
|
|
1628
|
-
require 'jss/api_object/self_servable'
|
|
1629
|
-
require 'jss/api_object/categorizable'
|
|
1630
|
-
require 'jss/api_object/vppable'
|
|
1631
|
-
require 'jss/api_object/sitable'
|
|
1632
|
-
require 'jss/api_object/mdm'
|
|
1633
|
-
require 'jss/api_object/management_history'
|
|
1634
|
-
|
|
1635
|
-
### Mix-in Sub Modules with Classes
|
|
1636
|
-
require 'jss/api_object/criteriable'
|
|
1637
|
-
require 'jss/api_object/scopable'
|
|
1638
|
-
|
|
1639
|
-
### APIObject SubClasses with SubClasses
|
|
1640
|
-
require 'jss/api_object/advanced_search'
|
|
1641
|
-
require 'jss/api_object/configuration_profile'
|
|
1642
|
-
require 'jss/api_object/extension_attribute'
|
|
1643
|
-
require 'jss/api_object/group'
|
|
1644
|
-
require 'jss/api_object/patch_source'
|
|
1645
|
-
|
|
1646
|
-
### APIObject SubClasses without SubClasses
|
|
1647
|
-
require 'jss/api_object/account'
|
|
1648
|
-
require 'jss/api_object/building'
|
|
1649
|
-
require 'jss/api_object/category'
|
|
1650
|
-
require 'jss/api_object/computer'
|
|
1651
|
-
require 'jss/api_object/computer_invitation'
|
|
1652
|
-
require 'jss/api_object/department'
|
|
1653
|
-
require 'jss/api_object/disk_encryption_configurations'
|
|
1654
|
-
require "jss/api_object/directory_binding_type"
|
|
1655
|
-
require 'jss/api_object/directory_binding'
|
|
1656
|
-
require 'jss/api_object/distribution_point'
|
|
1657
|
-
require 'jss/api_object/ebook'
|
|
1658
|
-
require 'jss/api_object/ibeacon'
|
|
1659
|
-
require 'jss/api_object/dock_item'
|
|
1660
|
-
require 'jss/api_object/ldap_server'
|
|
1661
|
-
require 'jss/api_object/mac_application'
|
|
1662
|
-
require 'jss/api_object/mobile_device'
|
|
1663
|
-
require 'jss/api_object/mobile_device_application'
|
|
1664
|
-
require 'jss/api_object/netboot_server'
|
|
1665
|
-
require 'jss/api_object/network_segment'
|
|
1666
|
-
require 'jss/api_object/package'
|
|
1667
|
-
require 'jss/api_object/patch_title'
|
|
1668
|
-
require 'jss/api_object/patch_policy'
|
|
1669
|
-
require 'jss/api_object/peripheral_type'
|
|
1670
|
-
require 'jss/api_object/peripheral'
|
|
1671
|
-
require 'jss/api_object/policy'
|
|
1672
|
-
require 'jss/api_object/removable_macaddr'
|
|
1673
|
-
require 'jss/api_object/restricted_software'
|
|
1674
|
-
require 'jss/api_object/script'
|
|
1675
|
-
require 'jss/api_object/site'
|
|
1676
|
-
require 'jss/api_object/software_update_server'
|
|
1677
|
-
require 'jss/api_object/user'
|
|
1678
|
-
require 'jss/api_object/webhook'
|
|
1679
|
-
require 'jss/api_object/printer'
|
|
1680
|
-
|
|
1681
|
-
### Other
|
|
1682
|
-
require 'jss/api_object/app_store_country_codes'
|
|
1683
|
-
|
|
1684
|
-
JSS::APIObject.define_identifier_list_methods
|
|
1724
|
+
end # module Jamf
|