ruby-jss 1.2.3 → 1.2.4a1

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.
Files changed (103) hide show
  1. checksums.yaml +4 -4
  2. data/lib/jamf.rb +169 -0
  3. data/lib/jamf/api/abstract_classes/collection_resource.rb +422 -0
  4. data/lib/jamf/api/abstract_classes/generic_reference.rb +145 -0
  5. data/lib/jamf/api/abstract_classes/json_object.rb +1074 -0
  6. data/lib/jamf/api/abstract_classes/prestage.rb +219 -0
  7. data/lib/jamf/api/abstract_classes/prestage_skip_setup_items.rb +126 -0
  8. data/lib/jamf/api/abstract_classes/resource.rb +250 -0
  9. data/lib/jamf/api/abstract_classes/singleton_resource.rb +87 -0
  10. data/lib/jamf/api/attribute_classes/ip_address.rb +66 -0
  11. data/lib/jamf/api/attribute_classes/timestamp.rb +144 -0
  12. data/lib/jamf/api/connection.rb +734 -0
  13. data/lib/jamf/api/connection/api_error.rb +111 -0
  14. data/lib/jamf/api/connection/api_error_styleguide.rb +96 -0
  15. data/lib/jamf/api/connection/token.rb +220 -0
  16. data/lib/jamf/api/json_objects/account_prefs.rb +79 -0
  17. data/lib/jamf/api/json_objects/android_details.rb +139 -0
  18. data/lib/jamf/api/json_objects/appletv_details.rb +110 -0
  19. data/lib/jamf/api/json_objects/attachment.rb +68 -0
  20. data/lib/jamf/api/json_objects/cellular_network.rb +151 -0
  21. data/lib/jamf/api/json_objects/change_log_entry.rb +77 -0
  22. data/lib/jamf/api/json_objects/computer_prestage_skip_setup_items.rb +67 -0
  23. data/lib/jamf/api/json_objects/country.rb +51 -0
  24. data/lib/jamf/api/json_objects/extension_attribute_value.rb +128 -0
  25. data/lib/jamf/api/json_objects/installed_application.rb +59 -0
  26. data/lib/jamf/api/json_objects/installed_certificate.rb +53 -0
  27. data/lib/jamf/api/json_objects/installed_configuration_profile.rb +67 -0
  28. data/lib/jamf/api/json_objects/installed_ebook.rb +58 -0
  29. data/lib/jamf/api/json_objects/installed_provisioning_profile.rb +59 -0
  30. data/lib/jamf/api/json_objects/inventory_preload_extension_attribute.rb +52 -0
  31. data/lib/jamf/api/json_objects/ios_details.rb +244 -0
  32. data/lib/jamf/api/json_objects/location.rb +95 -0
  33. data/lib/jamf/api/json_objects/md_prestage_name.rb +57 -0
  34. data/lib/jamf/api/json_objects/md_prestage_names.rb +82 -0
  35. data/lib/jamf/api/json_objects/md_prestage_skip_setup_items.rb +165 -0
  36. data/lib/jamf/api/json_objects/mobile_device_details.rb +219 -0
  37. data/lib/jamf/api/json_objects/mobile_device_security.rb +101 -0
  38. data/lib/jamf/api/json_objects/prestage_assignment.rb +61 -0
  39. data/lib/jamf/api/json_objects/prestage_location.rb +104 -0
  40. data/lib/jamf/api/json_objects/prestage_purchasing_data.rb +132 -0
  41. data/lib/jamf/api/json_objects/prestage_scope.rb +54 -0
  42. data/lib/jamf/api/json_objects/prestage_sync_status.rb +63 -0
  43. data/lib/jamf/api/json_objects/purchasing_data.rb +125 -0
  44. data/lib/jamf/api/mixins/abstract.rb +58 -0
  45. data/lib/jamf/api/mixins/bulk_deletable.rb +39 -0
  46. data/lib/jamf/api/mixins/change_log.rb +136 -0
  47. data/lib/jamf/api/mixins/extendable.rb +75 -0
  48. data/lib/jamf/api/mixins/immutable.rb +39 -0
  49. data/lib/jamf/api/mixins/locatable.rb +124 -0
  50. data/lib/jamf/api/mixins/lockable.rb +48 -0
  51. data/lib/jamf/api/mixins/referable.rb +92 -0
  52. data/lib/jamf/api/mixins/searchable.rb +202 -0
  53. data/lib/jamf/api/mixins/uncreatable.rb +40 -0
  54. data/lib/jamf/api/mixins/undeletable.rb +40 -0
  55. data/lib/jamf/api/resources/collection_resources/account.rb +163 -0
  56. data/lib/jamf/api/resources/collection_resources/building.rb +114 -0
  57. data/lib/jamf/api/resources/collection_resources/category.rb +82 -0
  58. data/lib/jamf/api/resources/collection_resources/computer.rb +49 -0
  59. data/lib/jamf/api/resources/collection_resources/computer_prestage.rb +80 -0
  60. data/lib/jamf/api/resources/collection_resources/department.rb +79 -0
  61. data/lib/jamf/api/resources/collection_resources/extension_attribute.rb +45 -0
  62. data/lib/jamf/api/resources/collection_resources/inventory_preload_record.rb +274 -0
  63. data/lib/jamf/api/resources/collection_resources/md_prestage.rb +139 -0
  64. data/lib/jamf/api/resources/collection_resources/mobile_device.rb +315 -0
  65. data/lib/jamf/api/resources/collection_resources/script.rb +190 -0
  66. data/lib/jamf/api/resources/collection_resources/site.rb +77 -0
  67. data/lib/jamf/api/resources/singleton_resources/app_store_country_codes.rb +131 -0
  68. data/lib/jamf/api/resources/singleton_resources/authorization.rb +88 -0
  69. data/lib/jamf/api/resources/singleton_resources/client_checkin_settings.rb +139 -0
  70. data/lib/jamf/api/resources/singleton_resources/reenrollment_settings.rb +95 -0
  71. data/lib/jamf/client.rb +301 -0
  72. data/lib/jamf/client/jamf_binary.rb +132 -0
  73. data/lib/jamf/client/jamf_helper.rb +298 -0
  74. data/lib/jamf/client/management_action.rb +114 -0
  75. data/lib/jamf/compatibility.rb +88 -0
  76. data/lib/jamf/composer.rb +190 -0
  77. data/lib/jamf/configuration.rb +281 -0
  78. data/lib/jamf/exceptions.rb +107 -0
  79. data/lib/jamf/ruby_extensions.rb +36 -0
  80. data/lib/jamf/ruby_extensions/array.rb +35 -0
  81. data/lib/jamf/ruby_extensions/array/predicates.rb +46 -0
  82. data/lib/jamf/ruby_extensions/array/utils.rb +47 -0
  83. data/lib/jamf/ruby_extensions/filetest.rb +32 -0
  84. data/lib/jamf/ruby_extensions/filetest/predicates.rb +46 -0
  85. data/lib/jamf/ruby_extensions/hash.rb +33 -0
  86. data/lib/jamf/ruby_extensions/hash/backports.rb +92 -0
  87. data/lib/jamf/ruby_extensions/ipaddr.rb +37 -0
  88. data/lib/jamf/ruby_extensions/ipaddr/utils.rb +95 -0
  89. data/lib/jamf/ruby_extensions/object.rb +30 -0
  90. data/lib/jamf/ruby_extensions/object/predicates.rb +51 -0
  91. data/lib/jamf/ruby_extensions/pathname.rb +39 -0
  92. data/lib/jamf/ruby_extensions/pathname/predicates.rb +50 -0
  93. data/lib/jamf/ruby_extensions/pathname/utils.rb +75 -0
  94. data/lib/jamf/ruby_extensions/string.rb +35 -0
  95. data/lib/jamf/ruby_extensions/string/backports.rb +66 -0
  96. data/lib/jamf/ruby_extensions/string/conversions.rb +65 -0
  97. data/lib/jamf/ruby_extensions/string/predicates.rb +47 -0
  98. data/lib/jamf/utility.rb +423 -0
  99. data/lib/jamf/validate.rb +224 -0
  100. data/lib/jamf/version.rb +32 -0
  101. data/lib/jpapi.rb +26 -0
  102. data/lib/jss/version.rb +1 -1
  103. metadata +104 -4
@@ -0,0 +1,57 @@
1
+ # Copyright 2019 Pixar
2
+
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
+ # with the following modification; you may not use this file except in
6
+ # compliance with the Apache License and the following modification to it:
7
+ # Section 6. Trademarks. is deleted and replaced with:
8
+ #
9
+ # 6. Trademarks. This License does not grant permission to use the trade
10
+ # names, trademarks, service marks, or product names of the Licensor
11
+ # and its affiliates, except as required to comply with Section 4(c) of
12
+ # the License and to reproduce the content of the NOTICE file.
13
+ #
14
+ # You may obtain a copy of the Apache License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the Apache License with the above modification is
20
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
+ # KIND, either express or implied. See the Apache License for the specific
22
+ # language governing permissions and limitations under the Apache License.
23
+ #
24
+ #
25
+
26
+ # The module
27
+ module Jamf
28
+
29
+ # A 'location' for a computer prestage in Jamf Pro
30
+ class MobileDevicePrestageName < Jamf::JSONObject
31
+
32
+ OBJECT_MODEL = {
33
+
34
+ # @!attribute id
35
+ # @return [Integer]
36
+ id: {
37
+ class: :integer
38
+ },
39
+
40
+ # @!attribute deviceName
41
+ # @return [String]
42
+ deviceName: {
43
+ class: :string
44
+ },
45
+
46
+ # @!attribute isUsed [r]
47
+ # @return [Boolean]
48
+ isUsed: {
49
+ class: :boolean
50
+ }
51
+ }.freeze
52
+
53
+ parse_object_model
54
+
55
+ end # class location
56
+
57
+ end # module
@@ -0,0 +1,82 @@
1
+ # Copyright 2019 Pixar
2
+
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
+ # with the following modification; you may not use this file except in
6
+ # compliance with the Apache License and the following modification to it:
7
+ # Section 6. Trademarks. is deleted and replaced with:
8
+ #
9
+ # 6. Trademarks. This License does not grant permission to use the trade
10
+ # names, trademarks, service marks, or product names of the Licensor
11
+ # and its affiliates, except as required to comply with Section 4(c) of
12
+ # the License and to reproduce the content of the NOTICE file.
13
+ #
14
+ # You may obtain a copy of the Apache License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the Apache License with the above modification is
20
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
+ # KIND, either express or implied. See the Apache License for the specific
22
+ # language governing permissions and limitations under the Apache License.
23
+ #
24
+ #
25
+
26
+ # The module
27
+ module Jamf
28
+
29
+ # A 'location' for a computer prestage in Jamf Pro
30
+ class MobileDevicePrestageNames < Jamf::JSONObject
31
+
32
+ OBJECT_MODEL = {
33
+
34
+ # @!attribute assignNamesUsing
35
+ # @return [String]
36
+ assignNamesUsing: {
37
+ class: :string
38
+ },
39
+
40
+ # @!attribute prestageDeviceNames
41
+ # @return [Jamf::MobileDevicePrestageName]
42
+ prestageDeviceNames: {
43
+ class: Jamf::MobileDevicePrestageName,
44
+ multi: true
45
+ },
46
+
47
+ # @!attribute deviceNamePrefix
48
+ # @return [String]
49
+ deviceNamePrefix: {
50
+ class: :string
51
+ },
52
+
53
+ # @!attribute deviceNameSuffix
54
+ # @return [String]
55
+ deviceNameSuffix: {
56
+ class: :string
57
+ },
58
+
59
+ # @!attribute singleDeviceName
60
+ # @return [String]
61
+ singleDeviceName: {
62
+ class: :string
63
+ },
64
+
65
+ # @!attribute isManageNames
66
+ # @return [Boolean]
67
+ isManageNames: {
68
+ class: :boolean
69
+ },
70
+
71
+ # @!attribute isDeviceNamingConfigured
72
+ # @return [Boolean]
73
+ isDeviceNamingConfigured: {
74
+ class: :boolean
75
+ }
76
+ }.freeze
77
+
78
+ parse_object_model
79
+
80
+ end # class location
81
+
82
+ end # module
@@ -0,0 +1,165 @@
1
+ # Copyright 2019 Pixar
2
+
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
+ # with the following modification; you may not use this file except in
6
+ # compliance with the Apache License and the following modification to it:
7
+ # Section 6. Trademarks. is deleted and replaced with:
8
+ #
9
+ # 6. Trademarks. This License does not grant permission to use the trade
10
+ # names, trademarks, service marks, or product names of the Licensor
11
+ # and its affiliates, except as required to comply with Section 4(c) of
12
+ # the License and to reproduce the content of the NOTICE file.
13
+ #
14
+ # You may obtain a copy of the Apache License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the Apache License with the above modification is
20
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
+ # KIND, either express or implied. See the Apache License for the specific
22
+ # language governing permissions and limitations under the Apache License.
23
+ #
24
+ #
25
+
26
+ # The module
27
+ module Jamf
28
+
29
+ # A 'location' for a computer prestage in Jamf Pro
30
+ class MobileDevicePrestageSkipSetupItems < Jamf::PrestageSkipSetupItems
31
+
32
+ OBJECT_MODEL = superclass::OBJECT_MODEL.merge(
33
+
34
+ # @!attribute Android
35
+ # @return [Boolean]
36
+ Android: {
37
+ class: :boolean,
38
+ aliases: %i[android]
39
+ },
40
+
41
+ # @!attribute CloudStorage
42
+ # @return [Boolean]
43
+ CloudStorage: {
44
+ class: :boolean,
45
+ aliases: %i[cloudstorage cloud_storage]
46
+ },
47
+
48
+ # @!attribute ExpressLanguage
49
+ # @return [Boolean]
50
+ ExpressLanguage: {
51
+ class: :boolean,
52
+ aliases: %i[expressLanguage expresslanguage express_language]
53
+ },
54
+
55
+ # @!attribute HomeButtonSensitivity
56
+ # @return [Boolean]
57
+ HomeButtonSensitivity: {
58
+ class: :boolean,
59
+ aliases: %i[homeButtonSensitivity homebuttonsensitivity home_button_sensitivity]
60
+ },
61
+
62
+ # @!attribute iMessageAndFaceTime
63
+ # @return [Boolean]
64
+ iMessageAndFaceTime: {
65
+ class: :boolean,
66
+ aliases: %i[imessageandfacetime imessage_and_facetime]
67
+ },
68
+
69
+ # @!attribute OnBoarding
70
+ # @return [Boolean]
71
+ OnBoarding: {
72
+ class: :boolean,
73
+ aliases: %i[onBoarding onboarding on_boarding]
74
+ },
75
+
76
+ # @!attribute Passcode
77
+ # @return [Boolean]
78
+ Passcode: {
79
+ class: :boolean,
80
+ aliases: %i[passcode]
81
+ },
82
+
83
+ # @!attribute PreferredLanguage
84
+ # @return [Boolean]
85
+ PreferredLanguage: {
86
+ class: :boolean,
87
+ aliases: %i[preferredLanguage preferredlanguage preferred_language]
88
+ },
89
+
90
+ # @!attribute SIMSetup
91
+ # @return [Boolean]
92
+ SIMSetup: {
93
+ class: :boolean,
94
+ aliases: %i[simsetup simSetup sim_setup]
95
+ },
96
+
97
+ # @!attribute ScreenSaver
98
+ # @return [Boolean]
99
+ ScreenSaver: {
100
+ class: :boolean,
101
+ aliases: %i[screenSaver screensaver screen_saver]
102
+ },
103
+
104
+ # @!attribute SoftwareUpdate
105
+ # @return [Boolean]
106
+ SoftwareUpdate: {
107
+ class: :boolean,
108
+ aliases: %i[oftwareUpdate softwareupdate software_update]
109
+ },
110
+
111
+ # @!attribute TVHomeScreenSync
112
+ # @return [Boolean]
113
+ TVHomeScreenSync: {
114
+ class: :boolean,
115
+ aliases: %i[tvHomeScreenSync tvhomescreensync tv_home_screen_sync]
116
+ },
117
+
118
+ # @!attribute TVProviderSignIn
119
+ # @return [Boolean]
120
+ TVProviderSignIn: {
121
+ class: :boolean,
122
+ aliases: %i[tvprovidersignin tvProviderSignIn tv_provider_sign_in]
123
+ },
124
+
125
+ # @!attribute TVRoom
126
+ # @return [Boolean]
127
+ TVRoom: {
128
+ class: :boolean,
129
+ aliases: %i[tvRoom tvroom tv_room]
130
+ },
131
+
132
+ # @!attribute TapToSetup
133
+ # @return [Boolean]
134
+ TapToSetup: {
135
+ class: :boolean,
136
+ aliases: %i[tapToSetup taptosetup tap_to_setup]
137
+ },
138
+
139
+ # @!attribute WatchMigration
140
+ # @return [Boolean]
141
+ WatchMigration: {
142
+ class: :boolean,
143
+ aliases: %i[watchMigration watchmigration watch_migration]
144
+ },
145
+
146
+ # @!attribute Welcome
147
+ # @return [Boolean]
148
+ Welcome: {
149
+ class: :boolean,
150
+ aliases: %i[welcome]
151
+ },
152
+
153
+ # @!attribute Zoom
154
+ # @return [Boolean]
155
+ Zoom: {
156
+ class: :boolean,
157
+ aliases: %i[zoom]
158
+ }
159
+ ).freeze
160
+
161
+ parse_object_model
162
+
163
+ end # class location
164
+
165
+ end # module
@@ -0,0 +1,219 @@
1
+ # Copyright 2019 Pixar
2
+
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "Apache License")
5
+ # with the following modification; you may not use this file except in
6
+ # compliance with the Apache License and the following modification to it:
7
+ # Section 6. Trademarks. is deleted and replaced with:
8
+ #
9
+ # 6. Trademarks. This License does not grant permission to use the trade
10
+ # names, trademarks, service marks, or product names of the Licensor
11
+ # and its affiliates, except as required to comply with Section 4(c) of
12
+ # the License and to reproduce the content of the NOTICE file.
13
+ #
14
+ # You may obtain a copy of the Apache License at
15
+ #
16
+ # http://www.apache.org/licenses/LICENSE-2.0
17
+ #
18
+ # Unless required by applicable law or agreed to in writing, software
19
+ # distributed under the Apache License with the above modification is
20
+ # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
21
+ # KIND, either express or implied. See the Apache License for the specific
22
+ # language governing permissions and limitations under the Apache License.
23
+ #
24
+ #
25
+
26
+ # The module
27
+ module Jamf
28
+
29
+ # Classes
30
+ #####################################
31
+
32
+ # details of a mob dev
33
+ class MobileDeviceDetails < Jamf::JSONObject
34
+
35
+ # Mixins
36
+ #####################################
37
+
38
+ # Class Constants
39
+ #####################################
40
+
41
+ OBJECT_MODEL = {
42
+
43
+ # @!attribute [r] id
44
+ # @return [Integer]
45
+ id: {
46
+ class: :integer,
47
+ identifier: :primary,
48
+ readonly: true
49
+ },
50
+
51
+ # @!attribute [r] name
52
+ # This is readonly becuase the name attribute of
53
+ # the enclosing MobileDevice is used.
54
+ # @return [String]
55
+ name: {
56
+ class: :string,
57
+ readonly: true
58
+ },
59
+
60
+ # @!attribute assetTag
61
+ # @param [String]
62
+ # @return [String]
63
+ assetTag: {
64
+ class: :string
65
+ # TODO: make this an identifier?
66
+ },
67
+
68
+ # @!attribute [r] lastInventoryUpdateTimestamp
69
+ # @return [String]
70
+ lastInventoryUpdateTimestamp: {
71
+ class: Jamf::Timestamp,
72
+ aliases: [:lastInventoryUpdate],
73
+ readonly: true
74
+ },
75
+
76
+ # @!attribute [r] osVersion
77
+ # @return [String]
78
+ osVersion: {
79
+ class: :string,
80
+ readonly: true
81
+ },
82
+
83
+ # @!attribute [r] osBuild
84
+ # @return [String]
85
+ osBuild: {
86
+ class: :string,
87
+ readonly: true
88
+ },
89
+
90
+ # @!attribute [r] serialNumber
91
+ # @param [String]
92
+ # @return [String]
93
+ serialNumber: {
94
+ class: :string,
95
+ identifier: true,
96
+ readonly: true
97
+ },
98
+
99
+ # @!attribute [r] udid
100
+ # @param [String]
101
+ # @return [String]
102
+ udid: {
103
+ class: :string,
104
+ identifier: true,
105
+ readonly: true
106
+ },
107
+
108
+ # @!attribute [r] ipAddress
109
+ # @return [Jamf::IPAddress]
110
+ ipAddress: {
111
+ class: Jamf::IPAddress,
112
+ readonly: true
113
+ },
114
+
115
+ # @!attribute [r] wifiMacAddress
116
+ # @param [String]
117
+ # @return [String]
118
+ wifiMacAddress: {
119
+ class: :string,
120
+ identifier: true,
121
+ readonly: true
122
+ },
123
+
124
+ # @!attribute [r] bluetoothMacAddress
125
+ # @return [String]
126
+ bluetoothMacAddress: {
127
+ class: :string,
128
+ readonly: true
129
+ },
130
+
131
+ # @!attribute [r] isManaged
132
+ # see Jamf::MobileDevice#unmanage
133
+ # @return [Boolean]
134
+ isManaged: {
135
+ class: :boolean,
136
+ readonly: true
137
+ },
138
+
139
+ # @!attribute [r] initialEntryTimestamp
140
+ # @return [Jamf::Timestamp]
141
+ initialEntryTimestamp: {
142
+ class: Jamf::Timestamp,
143
+ readonly: true,
144
+ aliases: %i[initialEntry firstEnrolled]
145
+ },
146
+
147
+ # @!attribute [r] lastEnrollmentTimestamp
148
+ # @return [Boolean]
149
+ lastEnrollmentTimestamp: {
150
+ class: Jamf::Timestamp,
151
+ readonly: true,
152
+ aliases: %i[lastEnrollment lastEnrolled]
153
+ },
154
+
155
+ # @!attribute deviceOwnershipLevel
156
+ # @return [String]
157
+ deviceOwnershipLevel: {
158
+ class: :string,
159
+ readonly: true
160
+ },
161
+
162
+ # @!attribute site
163
+ # @param @see Jamf::Site::Reference#initialize
164
+ # @return [Jamf::Site::Reference]
165
+ site: {
166
+ class: Jamf::Site::Reference
167
+ },
168
+
169
+ # @!attribute [r] extensionAttributes
170
+ # see Jamf::Extendable
171
+ # @return [Array<Jamf::ExtensionAttribute::Value>]
172
+ extensionAttributes: {
173
+ class: Jamf::ExtensionAttributeValue,
174
+ multi: true,
175
+ readonly: true
176
+ },
177
+
178
+ # @!attribute [r] location
179
+ # see Jamf::Locatable
180
+ # @return [Jamf::Location]
181
+ location: {
182
+ class: Jamf::Location
183
+ },
184
+
185
+ # @!attribute [r] ios
186
+ # @return [Jamf::MobileDevice::IosDetails]
187
+ ios: {
188
+ class: Jamf::IosDetails,
189
+ readonly: true
190
+ },
191
+
192
+ # @!attribute [r] appleTv
193
+ # @return [Jamf::MobileDevice::AppleTvDetails]
194
+ appleTv: {
195
+ class: Jamf::AppleTVDetails,
196
+ readonly: true
197
+ },
198
+
199
+ # @!attribute [r] android
200
+ # @return [Jamf::MobileDevice::AndroidDetails]
201
+ android: {
202
+ class: Jamf::AndroidDetails,
203
+ readonly: true
204
+ }
205
+
206
+ }.freeze
207
+ parse_object_model
208
+
209
+ # Class Methods
210
+ ###################################################
211
+
212
+ def self.fetch(id, cnx)
213
+ data = cnx.get "#{Jamf::MobileDevice::RSRC_PATH}/#{id}/detail"
214
+ new data, cnx: cnx
215
+ end
216
+
217
+ end # class Mobile Device Details
218
+
219
+ end # module