api_models 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +21 -0
  3. data/README.md +2 -0
  4. data/lib/api_models/version.rb +5 -0
  5. data/lib/api_models.rb +68 -0
  6. data/lib/models/account.rb +39 -0
  7. data/lib/models/agent.rb +439 -0
  8. data/lib/models/app.rb +18 -0
  9. data/lib/models/app47_cache.rb +69 -0
  10. data/lib/models/app_active_build.rb +32 -0
  11. data/lib/models/app_policy.rb +24 -0
  12. data/lib/models/app_shield_policy.rb +35 -0
  13. data/lib/models/authorized_user_policy.rb +44 -0
  14. data/lib/models/b2b_app.rb +8 -0
  15. data/lib/models/cat/customer.rb +9 -0
  16. data/lib/models/cat/customer_device.rb +10 -0
  17. data/lib/models/cl/customer.rb +9 -0
  18. data/lib/models/cl/customer_device.rb +10 -0
  19. data/lib/models/commerce_app_store.rb +8 -0
  20. data/lib/models/concerns/app47_app_analyzable.rb +46 -0
  21. data/lib/models/concerns/app47_app_buildable.rb +46 -0
  22. data/lib/models/concerns/app47_app_configurable.rb +34 -0
  23. data/lib/models/concerns/app47_app_policies.rb +59 -0
  24. data/lib/models/concerns/app47_cdn_url.rb +50 -0
  25. data/lib/models/concerns/app47_email_sendable.rb +29 -0
  26. data/lib/models/concerns/app47_logger.rb +109 -0
  27. data/lib/models/concerns/checkin_able.rb +28 -0
  28. data/lib/models/concerns/searchable.rb +54 -0
  29. data/lib/models/configuration_constraint.rb +22 -0
  30. data/lib/models/configuration_group.rb +50 -0
  31. data/lib/models/configuration_rule.rb +58 -0
  32. data/lib/models/device.rb +124 -0
  33. data/lib/models/external_app.rb +15 -0
  34. data/lib/models/gehc/customer.rb +17 -0
  35. data/lib/models/gehc/customer_device.rb +23 -0
  36. data/lib/models/group.rb +40 -0
  37. data/lib/models/internal_app.rb +11 -0
  38. data/lib/models/metric_data_job.rb +16 -0
  39. data/lib/models/option.rb +37 -0
  40. data/lib/models/pin_code_policy.rb +50 -0
  41. data/lib/models/platform.rb +26 -0
  42. data/lib/models/platform_model.rb +14 -0
  43. data/lib/models/product_app.rb +22 -0
  44. data/lib/models/product_support_app.rb +19 -0
  45. data/lib/models/queue_manager.rb +67 -0
  46. data/lib/models/redis_configuration.rb +137 -0
  47. data/lib/models/sso_ad_group.rb +7 -0
  48. data/lib/models/sso_ad_server.rb +13 -0
  49. data/lib/models/sso_ad_user.rb +13 -0
  50. data/lib/models/sso_azure_server.rb +18 -0
  51. data/lib/models/sso_directory_group.rb +13 -0
  52. data/lib/models/sso_directory_server.rb +21 -0
  53. data/lib/models/sso_google_server.rb +13 -0
  54. data/lib/models/sso_ldap_group.rb +8 -0
  55. data/lib/models/sso_ldap_rest_server.rb +34 -0
  56. data/lib/models/sso_ldap_server.rb +19 -0
  57. data/lib/models/sso_ldap_user.rb +7 -0
  58. data/lib/models/sso_oauth_server.rb +16 -0
  59. data/lib/models/sso_saml_v2_server.rb +25 -0
  60. data/lib/models/sso_server.rb +38 -0
  61. data/lib/models/sso_user.rb +13 -0
  62. data/lib/models/system_configuration.rb +92 -0
  63. data/lib/models/time_bomb_policy.rb +138 -0
  64. data/lib/models/user.rb +53 -0
  65. data/lib/models/user_app_permission.rb +16 -0
  66. data/lib/models/user_device.rb +83 -0
  67. data/lib/models/version_management_policy.rb +113 -0
  68. data/lib/models/web_app.rb +12 -0
  69. metadata +408 -0
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Holds the relationship between an app and a user, if the are in here, they have permission
5
+ #
6
+ class UserAppPermission
7
+ include Mongoid::Document
8
+ include Mongoid::Timestamps
9
+
10
+ # Fast access to determine if this is added by belonging to a group.
11
+ field :group_app, default: false, type: Boolean
12
+
13
+ belongs_to :group, inverse_of: :user_app_permissions, optional: true
14
+ belongs_to :app, inverse_of: :user_app_permissions
15
+ belongs_to :user, inverse_of: :app_permissions
16
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Device associated with a user's install of the app store. Held within the user object itself as
5
+ # an embedded document
6
+ #
7
+ class UserDevice
8
+ include Mongoid::Document
9
+ include Mongoid::Timestamps
10
+ include Searchable
11
+ #
12
+ # Constants
13
+ #
14
+ ENROLLING = 'enrolling' unless defined? ENROLLING
15
+ REGISTERING = 'registering' unless defined? REGISTERING
16
+ AUTHORIZING = 'authorizing' unless defined? AUTHORIZING
17
+ UNREGISTERED = 'unregistered' unless defined? UNREGISTERED
18
+ PENDING = 'pending' unless defined? PENDING
19
+ REJECTED = 'rejected' unless defined? REJECTED
20
+ APPROVED = 'approved' unless defined? APPROVED
21
+ REMOVED = 'removed' unless defined? REMOVED
22
+ DEREGISTERED = 'deregistered' unless defined? DEREGISTERED
23
+ KEEP_STATES = [UNREGISTERED, PENDING, REJECTED, APPROVED].freeze unless defined? KEEP_STATES
24
+ #
25
+ # Fields
26
+ #
27
+ field :unique_identifier, type: String
28
+ field :app47_identifier, type: String
29
+ field :description, type: String
30
+ field :state, type: String, default: UserDevice::ENROLLING
31
+ field :platform
32
+ field :model
33
+ field :manufacture
34
+ field :cpu_type
35
+ field :token
36
+ field :appstore_last_sign_in, type: Time
37
+ field :appstore_sign_in_count, type: Integer, default: 0
38
+ field :user_agent, type: String, default: 'Unknown'
39
+ field :os_version, type: Float
40
+ field :container_version, type: String, default: '1.0'
41
+ field :price, type: Float, default: 0.0
42
+ field :agent_id, type: String
43
+ #
44
+ # Relationships
45
+ #
46
+ belongs_to :user, inverse_of: :devices
47
+ #
48
+ # Validations
49
+ #
50
+ validates_presence_of :unique_identifier, message: 'Requires unique identifier of device.'
51
+
52
+ #
53
+ # Define which fields to include in search text
54
+ #
55
+ def search_fields
56
+ %w[state platform model manufacture os_version description]
57
+ end
58
+
59
+ #
60
+ # Is the device approved?
61
+ #
62
+ def approved?
63
+ UserDevice::APPROVED.eql? state
64
+ end
65
+
66
+ #
67
+ # Find a user device by safely trying a number of approaches
68
+ # 1. By ID
69
+ # 2. By unique identifier
70
+ # 3. By app47 identifier
71
+ # 4. By token
72
+ #
73
+ def self.find_device_by(device_id)
74
+ raise 'Invalid ID' if device_id.blank?
75
+
76
+ UserDevice.where(_id: device_id).first ||
77
+ UserDevice.where(unique_identifier: device_id).first ||
78
+ UserDevice.where(app47_identifier: device_id).first ||
79
+ UserDevice.where(token: device_id).first
80
+ rescue StandardError
81
+ nil
82
+ end
83
+ end
@@ -0,0 +1,113 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Holds a version management policy for an app
5
+ #
6
+ class VersionManagementPolicy < AppPolicy
7
+ #
8
+ # Constants
9
+ #
10
+ NONE = 'none' unless defined? NONE
11
+ MINIMUM = 'min' unless defined? MINIMUM
12
+ STRICT = 'strict' unless defined? STRICT
13
+ CUSTOM = 'custom'
14
+ OPTIONS = [NONE, MINIMUM, CUSTOM, STRICT].freeze unless defined? OPTIONS
15
+ #
16
+ # Fields
17
+ #
18
+ field :allowed_ignores, type: Integer, default: 3
19
+ field :android_test, type: String, default: NONE
20
+ field :android_production, type: String, default: NONE
21
+ field :ios_test, type: String, default: NONE
22
+ field :ios_production, type: String, default: NONE
23
+ # For custom version setting
24
+ field :android_test_version, type: String
25
+ field :android_production_version, type: String
26
+ field :ios_test_version, type: String
27
+ field :ios_production_version, type: String
28
+ #
29
+ # return the version management policy
30
+ #
31
+ def enforce_policy(agent)
32
+ policy = super.merge(enforce_active_version: false)
33
+ if policy_enabled?(agent)
34
+ build = app_active_build(agent)
35
+ unless valid_version?(agent, build)
36
+ policy[:enforce_active_version] = true
37
+ policy[:version_management] = { active_version: { platform: build.platform,
38
+ environment: build.environment,
39
+ file_url: build.cdn_file_url,
40
+ version: build.version },
41
+ message: message,
42
+ allowed_ignores: allowed_ignores }
43
+ end
44
+ end
45
+ policy
46
+ rescue StandardError => error
47
+ App47Logger.log_warn('VersionManagementPolicy#enforce_policy', error)
48
+ # Return the default set of policies
49
+ { enforce_active_version: false }
50
+ end
51
+
52
+ private
53
+
54
+ #
55
+ # return the policy for the platform and environment
56
+ #
57
+ def policy(agent)
58
+ send "#{agent.device.platform.downcase}_#{agent.app_environment.downcase}"
59
+ rescue StandardError
60
+ NONE
61
+ end
62
+
63
+ #
64
+ # Is the policy enabled for this platform and environment?
65
+ #
66
+ def policy_enabled?(agent)
67
+ my_policy = policy(agent)
68
+ [MINIMUM, CUSTOM, STRICT].include?(my_policy)
69
+ end
70
+
71
+ #
72
+ # Find the app's active build
73
+ #
74
+ def app_active_build(agent)
75
+ app.app_active_builds.where(platform: agent.device.platform, environment: agent.app_environment.downcase).first
76
+ rescue StandardError
77
+ # return nil if there is an error
78
+ nil
79
+ end
80
+
81
+ #
82
+ # test if the agent's version complies with the build and policy
83
+ # starting agent version ios 4.4 and android 3.2, we should use the version code, otherwise we should
84
+ # use the version
85
+ #
86
+ def valid_version?(agent, active_build)
87
+ if agent.use_version_code?
88
+ app_version = agent.app_version_code || agent.app_version
89
+ build_version = active_build.version_code
90
+ else
91
+ app_version = agent.app_version
92
+ build_version = active_build.version
93
+ end
94
+ case policy(agent)
95
+ when STRICT
96
+ app_version.eql?(build_version)
97
+ when MINIMUM
98
+ app_version.to_f >= build_version.to_f
99
+ when CUSTOM
100
+ custom_version = send([agent.device.platform, agent.app_environment, 'version'].join('_').downcase)
101
+ if agent.use_version_code?
102
+ agent.app_version_code.to_f >= custom_version.to_f
103
+ else
104
+ agent.app_version.to_f >= custom_version.to_f
105
+ end
106
+ else
107
+ true
108
+ end
109
+ rescue StandardError => error
110
+ App47Logger.log_error "Unable to determine valid version: #{self.inspect}", error
111
+ false
112
+ end
113
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ #
4
+ # Hold the definition of a WebApp
5
+ #
6
+ class WebApp < App
7
+ include App47AppAnalyzable
8
+ # Fields
9
+ field :uri, type: String
10
+ field :capture_usage, type: Boolean, default: true
11
+ field :version, type: String, default: '1.0'
12
+ end
metadata ADDED
@@ -0,0 +1,408 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: api_models
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Chris Schroeder
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-09-02 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activesupport
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: delayed_job_mongoid
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: mongoid
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: redis
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: brakeman
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: codacy-coverage
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - '='
88
+ - !ruby/object:Gem::Version
89
+ version: 2.2.1
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - '='
95
+ - !ruby/object:Gem::Version
96
+ version: 2.2.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: database_cleaner-mongoid
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '2'
104
+ - - "<"
105
+ - !ruby/object:Gem::Version
106
+ version: '3'
107
+ type: :development
108
+ prerelease: false
109
+ version_requirements: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - ">="
112
+ - !ruby/object:Gem::Version
113
+ version: '2'
114
+ - - "<"
115
+ - !ruby/object:Gem::Version
116
+ version: '3'
117
+ - !ruby/object:Gem::Dependency
118
+ name: factory_bot
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: factory_bot_rails
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - ">="
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ - !ruby/object:Gem::Dependency
146
+ name: listen
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '3'
152
+ - - "<"
153
+ - !ruby/object:Gem::Version
154
+ version: '4'
155
+ type: :development
156
+ prerelease: false
157
+ version_requirements: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '3'
162
+ - - "<"
163
+ - !ruby/object:Gem::Version
164
+ version: '4'
165
+ - !ruby/object:Gem::Dependency
166
+ name: minitest
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - ">="
170
+ - !ruby/object:Gem::Version
171
+ version: '0'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - ">="
177
+ - !ruby/object:Gem::Version
178
+ version: '0'
179
+ - !ruby/object:Gem::Dependency
180
+ name: minitest-rails
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - "~>"
184
+ - !ruby/object:Gem::Version
185
+ version: '3'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - "~>"
191
+ - !ruby/object:Gem::Version
192
+ version: '3'
193
+ - !ruby/object:Gem::Dependency
194
+ name: minitest-reporters
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - ">="
198
+ - !ruby/object:Gem::Version
199
+ version: '0'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: '0'
207
+ - !ruby/object:Gem::Dependency
208
+ name: mocha
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ - !ruby/object:Gem::Dependency
222
+ name: require_all
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - ">="
226
+ - !ruby/object:Gem::Version
227
+ version: '0'
228
+ type: :development
229
+ prerelease: false
230
+ version_requirements: !ruby/object:Gem::Requirement
231
+ requirements:
232
+ - - ">="
233
+ - !ruby/object:Gem::Version
234
+ version: '0'
235
+ - !ruby/object:Gem::Dependency
236
+ name: shoulda
237
+ requirement: !ruby/object:Gem::Requirement
238
+ requirements:
239
+ - - ">="
240
+ - !ruby/object:Gem::Version
241
+ version: '0'
242
+ type: :development
243
+ prerelease: false
244
+ version_requirements: !ruby/object:Gem::Requirement
245
+ requirements:
246
+ - - ">="
247
+ - !ruby/object:Gem::Version
248
+ version: '0'
249
+ - !ruby/object:Gem::Dependency
250
+ name: shoulda-matchers
251
+ requirement: !ruby/object:Gem::Requirement
252
+ requirements:
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: '0'
256
+ type: :development
257
+ prerelease: false
258
+ version_requirements: !ruby/object:Gem::Requirement
259
+ requirements:
260
+ - - ">="
261
+ - !ruby/object:Gem::Version
262
+ version: '0'
263
+ - !ruby/object:Gem::Dependency
264
+ name: simplecov
265
+ requirement: !ruby/object:Gem::Requirement
266
+ requirements:
267
+ - - ">="
268
+ - !ruby/object:Gem::Version
269
+ version: '0'
270
+ type: :development
271
+ prerelease: false
272
+ version_requirements: !ruby/object:Gem::Requirement
273
+ requirements:
274
+ - - ">="
275
+ - !ruby/object:Gem::Version
276
+ version: '0'
277
+ - !ruby/object:Gem::Dependency
278
+ name: test-unit
279
+ requirement: !ruby/object:Gem::Requirement
280
+ requirements:
281
+ - - ">="
282
+ - !ruby/object:Gem::Version
283
+ version: '0'
284
+ type: :development
285
+ prerelease: false
286
+ version_requirements: !ruby/object:Gem::Requirement
287
+ requirements:
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: '0'
291
+ - !ruby/object:Gem::Dependency
292
+ name: webmock
293
+ requirement: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - ">="
296
+ - !ruby/object:Gem::Version
297
+ version: '3.11'
298
+ - - "<"
299
+ - !ruby/object:Gem::Version
300
+ version: '4'
301
+ type: :development
302
+ prerelease: false
303
+ version_requirements: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - ">="
306
+ - !ruby/object:Gem::Version
307
+ version: '3.11'
308
+ - - "<"
309
+ - !ruby/object:Gem::Version
310
+ version: '4'
311
+ description: Core components used in the API Microservice.
312
+ email:
313
+ - chris@app47.com
314
+ executables: []
315
+ extensions: []
316
+ extra_rdoc_files: []
317
+ files:
318
+ - LICENSE
319
+ - README.md
320
+ - lib/api_models.rb
321
+ - lib/api_models/version.rb
322
+ - lib/models/account.rb
323
+ - lib/models/agent.rb
324
+ - lib/models/app.rb
325
+ - lib/models/app47_cache.rb
326
+ - lib/models/app_active_build.rb
327
+ - lib/models/app_policy.rb
328
+ - lib/models/app_shield_policy.rb
329
+ - lib/models/authorized_user_policy.rb
330
+ - lib/models/b2b_app.rb
331
+ - lib/models/cat/customer.rb
332
+ - lib/models/cat/customer_device.rb
333
+ - lib/models/cl/customer.rb
334
+ - lib/models/cl/customer_device.rb
335
+ - lib/models/commerce_app_store.rb
336
+ - lib/models/concerns/app47_app_analyzable.rb
337
+ - lib/models/concerns/app47_app_buildable.rb
338
+ - lib/models/concerns/app47_app_configurable.rb
339
+ - lib/models/concerns/app47_app_policies.rb
340
+ - lib/models/concerns/app47_cdn_url.rb
341
+ - lib/models/concerns/app47_email_sendable.rb
342
+ - lib/models/concerns/app47_logger.rb
343
+ - lib/models/concerns/checkin_able.rb
344
+ - lib/models/concerns/searchable.rb
345
+ - lib/models/configuration_constraint.rb
346
+ - lib/models/configuration_group.rb
347
+ - lib/models/configuration_rule.rb
348
+ - lib/models/device.rb
349
+ - lib/models/external_app.rb
350
+ - lib/models/gehc/customer.rb
351
+ - lib/models/gehc/customer_device.rb
352
+ - lib/models/group.rb
353
+ - lib/models/internal_app.rb
354
+ - lib/models/metric_data_job.rb
355
+ - lib/models/option.rb
356
+ - lib/models/pin_code_policy.rb
357
+ - lib/models/platform.rb
358
+ - lib/models/platform_model.rb
359
+ - lib/models/product_app.rb
360
+ - lib/models/product_support_app.rb
361
+ - lib/models/queue_manager.rb
362
+ - lib/models/redis_configuration.rb
363
+ - lib/models/sso_ad_group.rb
364
+ - lib/models/sso_ad_server.rb
365
+ - lib/models/sso_ad_user.rb
366
+ - lib/models/sso_azure_server.rb
367
+ - lib/models/sso_directory_group.rb
368
+ - lib/models/sso_directory_server.rb
369
+ - lib/models/sso_google_server.rb
370
+ - lib/models/sso_ldap_group.rb
371
+ - lib/models/sso_ldap_rest_server.rb
372
+ - lib/models/sso_ldap_server.rb
373
+ - lib/models/sso_ldap_user.rb
374
+ - lib/models/sso_oauth_server.rb
375
+ - lib/models/sso_saml_v2_server.rb
376
+ - lib/models/sso_server.rb
377
+ - lib/models/sso_user.rb
378
+ - lib/models/system_configuration.rb
379
+ - lib/models/time_bomb_policy.rb
380
+ - lib/models/user.rb
381
+ - lib/models/user_app_permission.rb
382
+ - lib/models/user_device.rb
383
+ - lib/models/version_management_policy.rb
384
+ - lib/models/web_app.rb
385
+ homepage: https://app47.com
386
+ licenses:
387
+ - MIT
388
+ metadata: {}
389
+ post_install_message:
390
+ rdoc_options: []
391
+ require_paths:
392
+ - lib
393
+ required_ruby_version: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - "~>"
396
+ - !ruby/object:Gem::Version
397
+ version: '3.2'
398
+ required_rubygems_version: !ruby/object:Gem::Requirement
399
+ requirements:
400
+ - - ">="
401
+ - !ruby/object:Gem::Version
402
+ version: '0'
403
+ requirements: []
404
+ rubygems_version: 3.4.10
405
+ signing_key:
406
+ specification_version: 4
407
+ summary: App47 API Model Library.
408
+ test_files: []