api_models 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []