Class: Jamf::MobileDeviceApplication

Inherits:
APIObject show all
Includes:
Categorizable, Creatable, Scopable, SelfServable, Sitable, Updatable, Uploadable, VPPable
Defined in:
lib/jamf/api/classic/api_objects/mobile_device_application.rb

Overview

A Mobile Device Application in the JSS

Constant Summary collapse

RSRC_BASE =

The base for REST resources of this class

'mobiledeviceapplications'.freeze
RSRC_LIST_KEY =

the hash key used for the JSON list output of all objects in the JSS

:mobile_device_applications
RSRC_OBJECT_KEY =

The hash key used for the JSON object output. It’s also used in various error messages

:mobile_device_application
SCOPE_TARGET_KEY =

See Jamf::Scopable

:mobile_devices
UPLOAD_TYPES =

see Jamf::Uploadable

{
  icon: :mobiledeviceapplicationsicon,
  app: :mobiledeviceapplicationsipa,
  attachment: :mobiledeviceapplications
}.freeze
OTHER_LOOKUP_KEYS =

see Jamf::APIObject

{
  bundle_id: { aliases: %i[bundleid], fetch_rsrc_key: :bundleid }
}.freeze
OBJECT_HISTORY_OBJECT_TYPE =

the object type for this object in the object history table. See APIObject#add_object_history_entry

23
SITE_SUBSET =

Where is the Site data in the API JSON?

:general
CATEGORY_SUBSET =

Where is the Category in the API JSON?

:general
CATEGORY_DATA_TYPE =

How is the category stored in the API data?

Hash
OS_TYPES =

possible values for os_type

{
  ios: 'iOS',
  tvos: 'tvOS'
}

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(**args) ⇒ MobileDeviceApplication

See Jamf::APIObject#initialize



197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 197

def initialize(**args)
  super
  general = @init_data[:general]
  @display_name = general[:display_name]
  @description = general[:description]
  @bundle_id = general[:bundle_id]
  @version = general[:version]
  @ipa = general[:ipa]
  @os_type = general[:os_type]
  @provisioning_profile = general[:provisioning_profile]
  @url = general[:url]
  @itunes_store_url = general[:itunes_store_url]
  @make_available_after_install = general[:make_available_after_install]
  @itunes_country_region = general[:itunes_country_region]
  @itunes_sync_time = general[:itunes_sync_time]
  @deploy_as_managed_app = general[:deploy_as_managed_app]
  @keep_app_updated_on_devices = general[:keep_app_updated_on_devices]
  @remove_app_when_mdm_profile_is_removed = general[:remove_app_when_mdm_profile_is_removed]
  @prevent_backup_of_app_data = general[:prevent_backup_of_app_data]
  @keep_description_and_icon_up_to_date = general[:keep_description_and_icon_up_to_date]
  @free = general[:free]
  @take_over_management = general[:take_over_management]
  @host_externally = general[:host_externally]
  @external_url = general[:external_url]
  @configuration_prefs = @init_data[:app_configuration][:preferences]
end

Instance Attribute Details

#assign_vpp_device_based_licensesBoolean Also known as: vpp_device_based? Originally defined in module VPPable

Returns:

  • (Boolean)

#bundle_idString

Returns e.g. com.company.appname.

Returns:

  • (String)

    e.g. com.company.appname



121
122
123
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 121

def bundle_id
  @bundle_id
end

#configuration_prefsString

Returns Pre-configuration data for installing the app. Currently there’s only one key in the :configuration hash, :preferences, which contains a plist <dict> element with config data.

Returns:

  • (String)

    Pre-configuration data for installing the app. Currently there’s only one key in the :configuration hash, :preferences, which contains a plist <dict> element with config data.



189
190
191
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 189

def configuration_prefs
  @configuration_prefs
end

#deploy_as_managed_appBoolean

Returns Should this app be mananged?.

Returns:

  • (Boolean)

    Should this app be mananged?



155
156
157
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 155

def deploy_as_managed_app
  @deploy_as_managed_app
end

#descriptionString

Returns:



118
119
120
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 118

def description
  @description
end

#display_nameString

Returns The user-facing name (i.e. in self service).

Returns:

  • (String)

    The user-facing name (i.e. in self service)



115
116
117
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 115

def display_name
  @display_name
end

#external_urlString

Returns If :host_externally is true, the URL for the app.

Returns:

  • (String)

    If :host_externally is true, the URL for the app



184
185
186
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 184

def external_url
  @external_url
end

#freeBoolean Also known as: free?

Returns is this a free app?.

Returns:

  • (Boolean)

    is this a free app?



173
174
175
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 173

def free
  @free
end

#host_externallyBoolean

Returns Does the app itself come from outside the JSS?.

Returns:

  • (Boolean)

    Does the app itself come from outside the JSS?



181
182
183
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 181

def host_externally
  @host_externally
end

#iconJamf::Icon? Also known as: self_service_icon Originally defined in module SelfServable

Returns The icon used in self-service.

Returns:

  • (Jamf::Icon, nil)

    The icon used in self-service

#in_self_serviceBoolean (readonly) Also known as: in_self_service? Originally defined in module SelfServable

Returns Is this thing available in Self Service?.

Returns:

  • (Boolean)

    Is this thing available in Self Service?

#internal_appBoolean (readonly)

Returns:

  • (Boolean)


127
128
129
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 127

def internal_app
  @internal_app
end

#ipaHash (readonly)

Returns The .ipa file info.

Returns:

  • (Hash)

    The .ipa file info



130
131
132
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 130

def ipa
  @ipa
end

#itunes_country_regionString (readonly)

Returns The app’s country/region code in the iTunes store.

Returns:

  • (String)

    The app’s country/region code in the iTunes store



149
150
151
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 149

def itunes_country_region
  @itunes_country_region
end

#itunes_store_urlString (readonly)

Returns The URL of this item in the iTunes store, if applicable.

Returns:

  • (String)

    The URL of this item in the iTunes store, if applicable



142
143
144
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 142

def itunes_store_url
  @itunes_store_url
end

#itunes_sync_timeInteger (readonly)

Returns The last time the app and data was synced from iTunes (I think).

Returns:

  • (Integer)

    The last time the app and data was synced from iTunes (I think)



152
153
154
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 152

def itunes_sync_time
  @itunes_sync_time
end

#keep_app_updated_on_devicesBoolean Also known as: auto_update?

Returns Should this app auto-update on devices?.

Returns:

  • (Boolean)

    Should this app auto-update on devices?



165
166
167
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 165

def keep_app_updated_on_devices
  @keep_app_updated_on_devices
end

#keep_description_and_icon_up_to_dateBoolean

Returns should the JSS update the icon and description from the app source?.

Returns:

  • (Boolean)

    should the JSS update the icon and description from the app source?



170
171
172
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 170

def keep_description_and_icon_up_to_date
  @keep_description_and_icon_up_to_date
end

#make_available_after_installBoolean Also known as: self_service_make_available_after_install

Returns Will this still appear in SelfSvc after installation (I think).

Returns:

  • (Boolean)

    Will this still appear in SelfSvc after installation (I think)



145
146
147
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 145

def make_available_after_install
  @make_available_after_install
end

#need_to_updateBoolean (readonly) Originally defined in module Updatable

Returns do we have unsaved changes?.

Returns:

  • (Boolean)

    do we have unsaved changes?

#os_typeString

Returns Is this an iOS or tvOS app?.

Returns:

  • (String)

    Is this an iOS or tvOS app?



139
140
141
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 139

def os_type
  @os_type
end

#prevent_backup_of_app_dataBoolean

Returns Should this app be able to backup its data when the device does its backups (to icloud or itunes)?.

Returns:

  • (Boolean)

    Should this app be able to backup its data when the device does its backups (to icloud or itunes)?



162
163
164
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 162

def prevent_backup_of_app_data
  @prevent_backup_of_app_data
end

#provisioning_profileHash (readonly)

Returns The provisioning profile info for this app.

Returns:

  • (Hash)

    The provisioning profile info for this app



133
134
135
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 133

def provisioning_profile
  @provisioning_profile
end

#remaining_vpp_licensesInteger (readonly) Also known as: vpp_licenses_remaining Originally defined in module VPPable

Returns:

  • (Integer)

#remove_app_when_mdm_profile_is_removedBoolean

Returns Should the app be removed when the device is unmanaged?.

Returns:

  • (Boolean)

    Should the app be removed when the device is unmanaged?



158
159
160
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 158

def remove_app_when_mdm_profile_is_removed
  @remove_app_when_mdm_profile_is_removed
end

#scopeObject Originally defined in module Scopable

Attribtues

#self_service_categoriesArray<Hash> (readonly) Originally defined in module SelfServable

Each Hash has these keys about the category

  • :id => [Integer] the JSS id of the category

  • :name => [String] the name of the category

Most objects also include one or both of these keys:

  • :display_in => [Boolean] should the item be displayed in this category in SSvc? (not MobDevConfProfiles)

  • :feature_in => [Boolean] should the item be featured in this category in SSVC? (macOS targets only)

Returns:

  • (Array<Hash>)

    The categories in which this item should appear in SSvc

#self_service_descriptionString Originally defined in module SelfServable

Returns The verbage that appears in SelfSvc for this item.

Returns:

  • (String)

    The verbage that appears in SelfSvc for this item

#self_service_display_nameString Also known as: self_service_dislay_name Originally defined in module SelfServable

Returns The name to display in macOS Self Service.

Returns:

  • (String)

    The name to display in macOS Self Service.

#self_service_feature_on_main_pageBoolean Originally defined in module SelfServable

Only applicable to macOS targets

Returns:

  • (Boolean)

    Should this item feature on the main page of SSvc?

#self_service_force_users_to_view_descriptionBoolean Originally defined in module SelfServable

Returns Should an extra window appear before the user can install the item? (OSX SSvc only).

Returns:

  • (Boolean)

    Should an extra window appear before the user can install the item? (OSX SSvc only)

#self_service_install_button_textString Originally defined in module SelfServable

defaults to ‘Install’

Returns:

  • (String)

    The text label on the install button in SSvc (OSX SSvc only)

#self_service_notification_messageString Originally defined in module SelfServable

Returns The message text of the notification.

Returns:

  • (String)

    The message text of the notification

#self_service_notification_subjectString Originally defined in module SelfServable

object name.

Returns:

  • (String)

    The subject text of the notification. Defaults to the

#self_service_notification_typeSymbol Originally defined in module SelfServable

Returns How should notifications be sent either :ssvc_only or :ssvc_and_nctr.

Returns:

  • (Symbol)

    How should notifications be sent either :ssvc_only or :ssvc_and_nctr

#self_service_notifications_enabledBoolean Also known as: self_service_notifications_enabled? Originally defined in module SelfServable

Returns Should jamf send notifications to self service?.

Returns:

  • (Boolean)

    Should jamf send notifications to self service?

#self_service_reinstall_button_textString Originally defined in module SelfServable

defaults to ‘Reinstall’

Returns:

  • (String)

    The text label on the reinstall button in SSvc (OSX SSvc only)

#self_service_reminder_frequencyInteger Originally defined in module SelfServable

Returns How often (in days) should reminders be given.

Returns:

  • (Integer)

    How often (in days) should reminders be given

#self_service_reminders_enabledBoolean Also known as: self_service_reminders_enabled? Originally defined in module SelfServable

Returns Should self service give reminders by displaying the notification repeatedly?.

Returns:

  • (Boolean)

    Should self service give reminders by displaying the notification repeatedly?

#self_service_removal_passwordString (readonly) Originally defined in module SelfServable

Returns The password needed for removal, in plain text.

Returns:

  • (String)

    The password needed for removal, in plain text.

#self_service_user_removableSymbol Originally defined in module SelfServable

Returns one of the keys in PROFILE_REMOVAL_BY_USER.

Returns:

  • (Symbol)

    one of the keys in PROFILE_REMOVAL_BY_USER

#take_over_managementBoolean

Returns If the user installs this app on their own, should Jamf take over managing it?.

Returns:

  • (Boolean)

    If the user installs this app on their own, should Jamf take over managing it?



178
179
180
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 178

def take_over_management
  @take_over_management
end

#total_vpp_licensesInteger (readonly) Also known as: vpp_licenses_total Originally defined in module VPPable

Returns:

  • (Integer)

#urlString

Returns The URL for downloading this app.

Returns:

  • (String)

    The URL for downloading this app



136
137
138
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 136

def url
  @url
end

#used_vpp_licensesInteger (readonly) Also known as: vpp_licenses_used Originally defined in module VPPable

Returns:

  • (Integer)

#versionString

Returns:



124
125
126
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 124

def version
  @version
end

#vpp_admin_account_idInteger (readonly) Also known as: vpp_account_id Originally defined in module VPPable

Returns:

  • (Integer)

#vpp_codesHash (readonly) Originally defined in module VPPable

Returns:

Instance Method Details

#add_self_service_category(new_cat, display_in: true, feature_in: false) ⇒ void Also known as: set_self_service_category, change_self_service_category Originally defined in module SelfServable

This method returns an undefined value.

Add or change one of the categories for this item in self service

Parameters:

  • new_cat (String, Integer)

    the name or id of a category where this object should appear in SelfSvc

  • display_in (Boolean) (defaults to: true)

    should this item appear in the SelfSvc page for the category? Only meaningful in applicable classes

  • feature_in (Boolean) (defaults to: false)

    should this item be featured in the SelfSvc page for the category? Only meaningful in applicable classes. NOTE: this will always be false if display_in is false.

Raises:

#add_to_self_servicevoid Originally defined in module SelfServable

This method returns an undefined value.

Add this object to self service if not already there.

#category=(new_cat) ⇒ void Originally defined in module Categorizable

This method returns an undefined value.

Change the category of this object. Any of the NON_CATEGORIES values will unset the category

Parameters:

  • new_cat (Integer, String)

    The new category

Raises:

#category_assigned?Boolean Also known as: categorized? Originally defined in module Categorizable

Does this object have a category assigned?

Returns:

  • (Boolean)

    Does this object have a category assigned?

#category_idInteger Originally defined in module Categorizable

The id of the category for this object.

Returns:

  • (Integer)

    The id of the category for this object.

#category_nameString Also known as: category Originally defined in module Categorizable

The name of the category for this object. For backward compatibility, this is aliased to just ‘category’

Returns:

  • (String)

    The name of the category for this object.

#category_objectJamf::Category Originally defined in module Categorizable

The Jamf::Category instance for this object’s category

Returns:

  • (Jamf::Category)

    The Jamf::Category instance for this object’s category

#clone(new_name, api: nil, cnx: nil) ⇒ APIObject Originally defined in module Creatable

make a clone of this API object, with a new name. The class must be creatable

Parameters:

  • name (String)

    the name for the new object

  • cnx (Jamf::Connection) (defaults to: nil)

    the API in which to create the object Defaults to the API used to instantiate this object

Returns:

  • (APIObject)

    An unsaved clone of this APIObject with the given name

Raises:

#createObject Originally defined in module SelfServable

HACK: ity hack hack… remove when jamf fixes these bugs

#evaluate_new_category(new_cat) ⇒ Array<String, Integer> Originally defined in module Categorizable

Given a category name or id, return the name and id TODO: use APIObject.exist? and/or APIObject.valid_id

Parameters:

  • new_cat (String, Integer)

    The name or id of a possible category

Returns:

  • (Array<String, Integer>)

    The matching name and id, which may be nil.

#name=(newname) ⇒ void Originally defined in module Updatable

This method returns an undefined value.

Change the name of this item Remember to #update to push changes to the server.

Parameters:

  • newname (String)

    the new name

Raises:

#parse_scopevoid Originally defined in module Scopable

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

This method returns an undefined value.

Call this during initialization of objects that have a scope and the scope instance will be created from @init_data

#pretty_print_instance_variablesArray

Remove the various cached data from the instance_variables used to create pretty-print (pp) output.

Returns:

  • (Array)

    the desired instance_variables



522
523
524
525
526
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 522

def pretty_print_instance_variables
  vars = super
  vars.delete :@ipa
  vars
end

#remove_from_self_servicevoid Originally defined in module SelfServable

This method returns an undefined value.

Remove this object from self service if it’s there.

#remove_self_service_category(cat) ⇒ void Originally defined in module SelfServable

This method returns an undefined value.

Remove a category from those for this item in SSvc

Parameters:

  • cat (String, Integer)

    the name or id of the category to remove

#save_ipa(path, overwrite = false) ⇒ void

This method returns an undefined value.

Save the application to a file.

If the path given is an existing directory, the ipa’s current filename will be used, if known.

Parameters:

  • path (Pathname, String)

    The path to which the file should be saved.

  • overwrite (Boolean) (defaults to: false)

    Overwrite the file if it exists? Defaults to false

Raises:



489
490
491
492
493
494
495
496
497
498
499
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 489

def save_ipa(path, overwrite = false)
  return nil unless @ipa[:data]

  path = Pathname.new path
  path += @ipa[:name] if path.directory? && @ipa[:name]

  raise Jamf::AlreadyExistsError, "The file #{path} already exists" if path.exist? && !overwrite

  path.delete if path.exist?
  path.jss_save Base64.decode64(@ipa[:data])
end

#self_service_execute_urlString Originally defined in module SelfServable

Returns The url to view this thing in Self Service.

Returns:

  • (String)

    The url to view this thing in Self Service

#self_service_payloadSymbol Originally defined in module SelfServable

What does this object deploy to the device via self service?

Returns:

  • (Symbol)

    :profile, :app, or :policy

#self_service_targetsArray<Symbol> Originally defined in module SelfServable

What devices types can get this thing in Self Service

Returns:

  • (Array<Symbol>)

    An array of :macos, :ios, or both.

#self_service_view_urlString Originally defined in module SelfServable

Returns The url to view this thing in Self Service.

Returns:

  • (String)

    The url to view this thing in Self Service

#should_updatevoid Originally defined in module Scopable

This method returns an undefined value.

When the scope changes, it calls this to tell us that an update is needed.

#site=(new_site) ⇒ void Originally defined in module Sitable

This method returns an undefined value.

Change the site of this object. Any of the NON_SITES values will unset the site

Parameters:

  • new_site (Integer, String)

    The new site

Raises:

#site_assigned?Boolean Originally defined in module Sitable

Does this object have a site assigned?

Returns:

  • (Boolean)

    Does this object have a site assigned?

#site_idInteger Originally defined in module Sitable

The id of the site for this object.

Returns:

  • (Integer)

    The id of the site for this object.

#site_nameString Also known as: site Originally defined in module Sitable

The name of the site for this object. For backward compatibility, this is aliased to just ‘site’

Returns:

  • (String)

    The name of the site for this object.

#site_objectJamf::Site Originally defined in module Sitable

The Jamf::Site instance for this object’s site

Returns:

  • (Jamf::Site)

    The Jamf::Site instance for this object’s site

#unset_categoryvoid Originally defined in module Categorizable

This method returns an undefined value.

Set the category to nothing

#unset_sitevoid Originally defined in module Sitable

This method returns an undefined value.

Set the site to nothing

#updateObject Originally defined in module SelfServable

HACK: ity hack hack… remove when jamf fixes these bugs

#upload(type, local_file, force_ipa_upload: false) ⇒ Boolean Originally defined in module Uploadable

instance method wrapper for class method

Upload a file to the JSS to be stored with this instance of the class mixing in the Uploadable module

Parameters:

  • type (Symbol)

    the type of upload happening. Must be one of the keys defined in the class’s UPLOAD_TYPES Hash.

  • local_file (String, Pathname)

    String or Pathname pointing to the locally-readable file to be uploaded.

  • force_ipa_upload (Boolean) (defaults to: false)

    Should the server upload the .ipa file to JCDS or AWS if such are confgured for use?

Returns:

  • (Boolean)

    was the upload successful?

Raises:

#upload_ipa(path, force_ipa_upload: false) ⇒ void

This method returns an undefined value.

Upload a new app .ipa file

Parameters:

  • path (String, Pathname)

    The path to the .ipa file to upload

  • force_ipa_upload (Boolean) (defaults to: false)

    Should the server upload the .ipa file to JCDS or AWS if such are confgured for use?



510
511
512
513
514
# File 'lib/jamf/api/classic/api_objects/mobile_device_application.rb', line 510

def upload_ipa(path, force_ipa_upload: false)
  new_ipa = Pathname.new path
  upload(:app, new_ipa, force_ipa_upload: force_ipa_upload)
  refresh_ipa
end

#user_removable?Boolean? Originally defined in module SelfServable

Can this thing be removed by the user?

Returns:

  • (Boolean, nil)

    nil means ‘not applicable’

#vpp_admin_account_nameString Also known as: vpp_account_name Originally defined in module VPPable

Returns The name of the vpp admin acct for this object.

Returns:

  • (String)

    The name of the vpp admin acct for this object