trophy_api_client 1.7.0 → 1.8.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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gemconfig.rb +1 -1
  3. data/lib/trophy_api_client/admin/points/boosts/client.rb +258 -39
  4. data/lib/trophy_api_client/admin/points/client.rb +21 -0
  5. data/lib/trophy_api_client/admin/points/levels/client.rb +402 -0
  6. data/lib/trophy_api_client/admin/points/systems/client.rb +374 -0
  7. data/lib/trophy_api_client/admin/points/triggers/client.rb +402 -0
  8. data/lib/trophy_api_client/types/{created_points_boost.rb → admin_points_boost.rb} +39 -23
  9. data/lib/trophy_api_client/types/{created_points_boost_rounding.rb → admin_points_boost_rounding.rb} +1 -1
  10. data/lib/trophy_api_client/types/{created_points_boost_status.rb → admin_points_boost_status.rb} +1 -1
  11. data/lib/trophy_api_client/types/admin_points_boost_user_attributes_item.rb +65 -0
  12. data/lib/trophy_api_client/types/admin_points_level.rb +109 -0
  13. data/lib/trophy_api_client/types/admin_points_level_badge.rb +55 -0
  14. data/lib/trophy_api_client/types/admin_points_system.rb +118 -0
  15. data/lib/trophy_api_client/types/admin_points_system_badge.rb +55 -0
  16. data/lib/trophy_api_client/types/admin_points_system_status.rb +9 -0
  17. data/lib/trophy_api_client/types/admin_points_trigger.rb +175 -0
  18. data/lib/trophy_api_client/types/admin_points_trigger_event_attributes_item.rb +66 -0
  19. data/lib/trophy_api_client/types/admin_points_trigger_status.rb +9 -0
  20. data/lib/trophy_api_client/types/admin_points_trigger_time_unit.rb +9 -0
  21. data/lib/trophy_api_client/types/admin_points_trigger_type.rb +12 -0
  22. data/lib/trophy_api_client/types/admin_points_trigger_user_attributes_item.rb +65 -0
  23. data/lib/trophy_api_client/types/create_points_boost_request_item.rb +125 -0
  24. data/lib/trophy_api_client/types/create_points_boost_request_item_rounding.rb +10 -0
  25. data/lib/trophy_api_client/types/create_points_boost_request_item_user_attributes_item.rb +67 -0
  26. data/lib/trophy_api_client/types/create_points_boosts_request.rb +7 -0
  27. data/lib/trophy_api_client/types/create_points_boosts_response.rb +4 -4
  28. data/lib/trophy_api_client/types/create_points_level_request_item.rb +103 -0
  29. data/lib/trophy_api_client/types/create_points_level_request_item_badge.rb +56 -0
  30. data/lib/trophy_api_client/types/create_points_levels_request.rb +7 -0
  31. data/lib/trophy_api_client/types/create_points_levels_response.rb +74 -0
  32. data/lib/trophy_api_client/types/create_points_system_request_item.rb +140 -0
  33. data/lib/trophy_api_client/types/create_points_system_request_item_badge.rb +55 -0
  34. data/lib/trophy_api_client/types/create_points_systems_request.rb +7 -0
  35. data/lib/trophy_api_client/types/create_points_systems_response.rb +74 -0
  36. data/lib/trophy_api_client/types/create_points_trigger_request_item.rb +167 -0
  37. data/lib/trophy_api_client/types/create_points_trigger_request_item_event_attributes_item.rb +67 -0
  38. data/lib/trophy_api_client/types/create_points_trigger_request_item_status.rb +9 -0
  39. data/lib/trophy_api_client/types/create_points_trigger_request_item_time_unit.rb +9 -0
  40. data/lib/trophy_api_client/types/create_points_trigger_request_item_type.rb +12 -0
  41. data/lib/trophy_api_client/types/create_points_trigger_request_item_user_attributes_item.rb +67 -0
  42. data/lib/trophy_api_client/types/create_points_triggers_request.rb +7 -0
  43. data/lib/trophy_api_client/types/create_points_triggers_response.rb +74 -0
  44. data/lib/trophy_api_client/types/created_admin_points_system.rb +163 -0
  45. data/lib/trophy_api_client/types/delete_points_levels_response.rb +74 -0
  46. data/lib/trophy_api_client/types/delete_points_systems_response.rb +74 -0
  47. data/lib/trophy_api_client/types/delete_points_triggers_response.rb +75 -0
  48. data/lib/trophy_api_client/types/list_points_boosts_response.rb +7 -0
  49. data/lib/trophy_api_client/types/list_points_levels_response.rb +7 -0
  50. data/lib/trophy_api_client/types/list_points_systems_response.rb +7 -0
  51. data/lib/trophy_api_client/types/list_points_triggers_response.rb +7 -0
  52. data/lib/trophy_api_client/types/patch_points_boosts_request.rb +7 -0
  53. data/lib/trophy_api_client/types/patch_points_boosts_request_item.rb +118 -0
  54. data/lib/trophy_api_client/types/patch_points_boosts_request_item_rounding.rb +10 -0
  55. data/lib/trophy_api_client/types/patch_points_boosts_request_item_user_attributes_item.rb +67 -0
  56. data/lib/trophy_api_client/types/patch_points_boosts_response.rb +74 -0
  57. data/lib/trophy_api_client/types/patch_points_levels_request.rb +7 -0
  58. data/lib/trophy_api_client/types/patch_points_levels_request_item.rb +100 -0
  59. data/lib/trophy_api_client/types/patch_points_levels_request_item_badge.rb +55 -0
  60. data/lib/trophy_api_client/types/patch_points_levels_response.rb +74 -0
  61. data/lib/trophy_api_client/types/patch_points_triggers_request.rb +7 -0
  62. data/lib/trophy_api_client/types/patch_points_triggers_request_item.rb +174 -0
  63. data/lib/trophy_api_client/types/patch_points_triggers_request_item_event_attributes_item.rb +67 -0
  64. data/lib/trophy_api_client/types/patch_points_triggers_request_item_status.rb +9 -0
  65. data/lib/trophy_api_client/types/patch_points_triggers_request_item_time_unit.rb +9 -0
  66. data/lib/trophy_api_client/types/patch_points_triggers_request_item_type.rb +13 -0
  67. data/lib/trophy_api_client/types/patch_points_triggers_request_item_user_attributes_item.rb +67 -0
  68. data/lib/trophy_api_client/types/patch_points_triggers_response.rb +74 -0
  69. data/lib/trophy_api_client/types/update_points_system_request_item.rb +102 -0
  70. data/lib/trophy_api_client/types/update_points_system_request_item_badge.rb +55 -0
  71. data/lib/trophy_api_client/types/update_points_systems_request.rb +7 -0
  72. data/lib/trophy_api_client/types/update_points_systems_response.rb +74 -0
  73. data/lib/trophy_api_client/version.rb +1 -1
  74. data/lib/types_export.rb +64 -5
  75. metadata +68 -6
  76. data/lib/trophy_api_client/admin/points/boosts/types/create_points_boosts_request_boosts_item.rb +0 -111
  77. data/lib/trophy_api_client/admin/points/boosts/types/create_points_boosts_request_boosts_item_rounding.rb +0 -16
@@ -0,0 +1,402 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../../requests"
4
+ require_relative "../../../types/list_points_triggers_response"
5
+ require "json"
6
+ require_relative "../../../types/create_points_triggers_request"
7
+ require_relative "../../../types/create_points_triggers_response"
8
+ require_relative "../../../types/delete_points_triggers_response"
9
+ require_relative "../../../types/patch_points_triggers_request"
10
+ require_relative "../../../types/patch_points_triggers_response"
11
+ require_relative "../../../types/admin_points_trigger"
12
+ require "async"
13
+
14
+ module TrophyApiClient
15
+ module Admin
16
+ module Points
17
+ class TriggersClient
18
+ # @return [TrophyApiClient::RequestClient]
19
+ attr_reader :request_client
20
+
21
+ # @param request_client [TrophyApiClient::RequestClient]
22
+ # @return [TrophyApiClient::Admin::Points::TriggersClient]
23
+ def initialize(request_client:)
24
+ @request_client = request_client
25
+ end
26
+
27
+ # List points triggers for a system.
28
+ #
29
+ # @param system_id [String] The UUID of the points system.
30
+ # @param limit [Integer] Maximum number of results to return (1-100, default 10).
31
+ # @param skip [Integer] Number of results to skip for pagination (default 0).
32
+ # @param request_options [TrophyApiClient::RequestOptions]
33
+ # @return [TrophyApiClient::LIST_POINTS_TRIGGERS_RESPONSE]
34
+ # @example
35
+ # api = TrophyApiClient::Client.new(
36
+ # base_url: "https://api.example.com",
37
+ # environment: TrophyApiClient::Environment::PRODUCTION,
38
+ # api_key: "YOUR_API_KEY"
39
+ # )
40
+ # api.admin.points.triggers.list(
41
+ # system_id: "550e8400-e29b-41d4-a716-446655440000",
42
+ # limit: 1,
43
+ # skip: 1
44
+ # )
45
+ def list(system_id:, limit: nil, skip: nil, request_options: nil)
46
+ response = @request_client.conn.get do |req|
47
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
48
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
49
+ req.headers = {
50
+ **(req.headers || {}),
51
+ **@request_client.get_headers,
52
+ **(request_options&.additional_headers || {})
53
+ }.compact
54
+ req.params = {
55
+ **(request_options&.additional_query_parameters || {}),
56
+ "limit": limit,
57
+ "skip": skip
58
+ }.compact
59
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
60
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
61
+ end
62
+ req.url "#{@request_client.get_url(environment: admin,
63
+ request_options: request_options)}/points/#{system_id}/triggers"
64
+ end
65
+ parsed_json = JSON.parse(response.body)
66
+ parsed_json&.map do |item|
67
+ item = item.to_json
68
+ TrophyApiClient::AdminPointsTrigger.from_json(json_object: item)
69
+ end
70
+ end
71
+
72
+ # Create points triggers in bulk. Maximum 100 triggers per request.
73
+ #
74
+ # @param system_id [String] The UUID of the points system.
75
+ # @param request [TrophyApiClient::CREATE_POINTS_TRIGGERS_REQUEST]
76
+ # @param request_options [TrophyApiClient::RequestOptions]
77
+ # @return [TrophyApiClient::CreatePointsTriggersResponse]
78
+ # @example
79
+ # api = TrophyApiClient::Client.new(
80
+ # base_url: "https://api.example.com",
81
+ # environment: TrophyApiClient::Environment::PRODUCTION,
82
+ # api_key: "YOUR_API_KEY"
83
+ # )
84
+ # api.admin.points.triggers.create(system_id: "550e8400-e29b-41d4-a716-446655440000", request: [{ type: METRIC, points: 10 }])
85
+ def create(system_id:, request:, request_options: nil)
86
+ response = @request_client.conn.post do |req|
87
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
88
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
89
+ req.headers = {
90
+ **(req.headers || {}),
91
+ **@request_client.get_headers,
92
+ **(request_options&.additional_headers || {})
93
+ }.compact
94
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
95
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
96
+ end
97
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
98
+ req.url "#{@request_client.get_url(environment: admin,
99
+ request_options: request_options)}/points/#{system_id}/triggers"
100
+ end
101
+ TrophyApiClient::CreatePointsTriggersResponse.from_json(json_object: response.body)
102
+ end
103
+
104
+ # Delete (archive) points triggers by ID. Maximum 100 trigger IDs per request.
105
+ #
106
+ # @param system_id [String] The UUID of the points system.
107
+ # @param ids [String] Trigger IDs to delete. Can be repeated or comma-separated.
108
+ # @param request_options [TrophyApiClient::RequestOptions]
109
+ # @return [TrophyApiClient::DeletePointsTriggersResponse]
110
+ # @example
111
+ # api = TrophyApiClient::Client.new(
112
+ # base_url: "https://api.example.com",
113
+ # environment: TrophyApiClient::Environment::PRODUCTION,
114
+ # api_key: "YOUR_API_KEY"
115
+ # )
116
+ # api.admin.points.triggers.delete
117
+ def delete(system_id:, ids: nil, request_options: nil)
118
+ response = @request_client.conn.delete do |req|
119
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
120
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
121
+ req.headers = {
122
+ **(req.headers || {}),
123
+ **@request_client.get_headers,
124
+ **(request_options&.additional_headers || {})
125
+ }.compact
126
+ req.params = { **(request_options&.additional_query_parameters || {}), "ids": ids }.compact
127
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
128
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
129
+ end
130
+ req.url "#{@request_client.get_url(environment: admin,
131
+ request_options: request_options)}/points/#{system_id}/triggers"
132
+ end
133
+ TrophyApiClient::DeletePointsTriggersResponse.from_json(json_object: response.body)
134
+ end
135
+
136
+ # Update points triggers in bulk. Maximum 100 triggers per request. Only provided
137
+ # fields are updated; omitted fields are preserved.
138
+ #
139
+ # @param system_id [String] The UUID of the points system.
140
+ # @param request [TrophyApiClient::PATCH_POINTS_TRIGGERS_REQUEST]
141
+ # @param request_options [TrophyApiClient::RequestOptions]
142
+ # @return [TrophyApiClient::PatchPointsTriggersResponse]
143
+ # @example
144
+ # api = TrophyApiClient::Client.new(
145
+ # base_url: "https://api.example.com",
146
+ # environment: TrophyApiClient::Environment::PRODUCTION,
147
+ # api_key: "YOUR_API_KEY"
148
+ # )
149
+ # api.admin.points.triggers.update(system_id: "550e8400-e29b-41d4-a716-446655440000", request: [{ id: "id" }])
150
+ def update(system_id:, request:, request_options: nil)
151
+ response = @request_client.conn.patch do |req|
152
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
153
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
154
+ req.headers = {
155
+ **(req.headers || {}),
156
+ **@request_client.get_headers,
157
+ **(request_options&.additional_headers || {})
158
+ }.compact
159
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
160
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
161
+ end
162
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
163
+ req.url "#{@request_client.get_url(environment: admin,
164
+ request_options: request_options)}/points/#{system_id}/triggers"
165
+ end
166
+ TrophyApiClient::PatchPointsTriggersResponse.from_json(json_object: response.body)
167
+ end
168
+
169
+ # Get a single points trigger by ID.
170
+ #
171
+ # @param system_id [String] The UUID of the points system.
172
+ # @param id [String] The UUID of the points trigger.
173
+ # @param request_options [TrophyApiClient::RequestOptions]
174
+ # @return [TrophyApiClient::AdminPointsTrigger]
175
+ # @example
176
+ # api = TrophyApiClient::Client.new(
177
+ # base_url: "https://api.example.com",
178
+ # environment: TrophyApiClient::Environment::PRODUCTION,
179
+ # api_key: "YOUR_API_KEY"
180
+ # )
181
+ # api.admin.points.triggers.get(system_id: "550e8400-e29b-41d4-a716-446655440000", id: "660f9500-f30c-42e5-b827-557766550001")
182
+ def get(system_id:, id:, request_options: nil)
183
+ response = @request_client.conn.get do |req|
184
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
185
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
186
+ req.headers = {
187
+ **(req.headers || {}),
188
+ **@request_client.get_headers,
189
+ **(request_options&.additional_headers || {})
190
+ }.compact
191
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
192
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
193
+ end
194
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
195
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
196
+ end
197
+ req.url "#{@request_client.get_url(environment: admin,
198
+ request_options: request_options)}/points/#{system_id}/triggers/#{id}"
199
+ end
200
+ TrophyApiClient::AdminPointsTrigger.from_json(json_object: response.body)
201
+ end
202
+ end
203
+
204
+ class AsyncTriggersClient
205
+ # @return [TrophyApiClient::AsyncRequestClient]
206
+ attr_reader :request_client
207
+
208
+ # @param request_client [TrophyApiClient::AsyncRequestClient]
209
+ # @return [TrophyApiClient::Admin::Points::AsyncTriggersClient]
210
+ def initialize(request_client:)
211
+ @request_client = request_client
212
+ end
213
+
214
+ # List points triggers for a system.
215
+ #
216
+ # @param system_id [String] The UUID of the points system.
217
+ # @param limit [Integer] Maximum number of results to return (1-100, default 10).
218
+ # @param skip [Integer] Number of results to skip for pagination (default 0).
219
+ # @param request_options [TrophyApiClient::RequestOptions]
220
+ # @return [TrophyApiClient::LIST_POINTS_TRIGGERS_RESPONSE]
221
+ # @example
222
+ # api = TrophyApiClient::Client.new(
223
+ # base_url: "https://api.example.com",
224
+ # environment: TrophyApiClient::Environment::PRODUCTION,
225
+ # api_key: "YOUR_API_KEY"
226
+ # )
227
+ # api.admin.points.triggers.list(
228
+ # system_id: "550e8400-e29b-41d4-a716-446655440000",
229
+ # limit: 1,
230
+ # skip: 1
231
+ # )
232
+ def list(system_id:, limit: nil, skip: nil, request_options: nil)
233
+ Async do
234
+ response = @request_client.conn.get do |req|
235
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
236
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
237
+ req.headers = {
238
+ **(req.headers || {}),
239
+ **@request_client.get_headers,
240
+ **(request_options&.additional_headers || {})
241
+ }.compact
242
+ req.params = {
243
+ **(request_options&.additional_query_parameters || {}),
244
+ "limit": limit,
245
+ "skip": skip
246
+ }.compact
247
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
248
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
249
+ end
250
+ req.url "#{@request_client.get_url(environment: admin,
251
+ request_options: request_options)}/points/#{system_id}/triggers"
252
+ end
253
+ parsed_json = JSON.parse(response.body)
254
+ parsed_json&.map do |item|
255
+ item = item.to_json
256
+ TrophyApiClient::AdminPointsTrigger.from_json(json_object: item)
257
+ end
258
+ end
259
+ end
260
+
261
+ # Create points triggers in bulk. Maximum 100 triggers per request.
262
+ #
263
+ # @param system_id [String] The UUID of the points system.
264
+ # @param request [TrophyApiClient::CREATE_POINTS_TRIGGERS_REQUEST]
265
+ # @param request_options [TrophyApiClient::RequestOptions]
266
+ # @return [TrophyApiClient::CreatePointsTriggersResponse]
267
+ # @example
268
+ # api = TrophyApiClient::Client.new(
269
+ # base_url: "https://api.example.com",
270
+ # environment: TrophyApiClient::Environment::PRODUCTION,
271
+ # api_key: "YOUR_API_KEY"
272
+ # )
273
+ # api.admin.points.triggers.create(system_id: "550e8400-e29b-41d4-a716-446655440000", request: [{ type: METRIC, points: 10 }])
274
+ def create(system_id:, request:, request_options: nil)
275
+ Async do
276
+ response = @request_client.conn.post do |req|
277
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
278
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
279
+ req.headers = {
280
+ **(req.headers || {}),
281
+ **@request_client.get_headers,
282
+ **(request_options&.additional_headers || {})
283
+ }.compact
284
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
285
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
286
+ end
287
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
288
+ req.url "#{@request_client.get_url(environment: admin,
289
+ request_options: request_options)}/points/#{system_id}/triggers"
290
+ end
291
+ TrophyApiClient::CreatePointsTriggersResponse.from_json(json_object: response.body)
292
+ end
293
+ end
294
+
295
+ # Delete (archive) points triggers by ID. Maximum 100 trigger IDs per request.
296
+ #
297
+ # @param system_id [String] The UUID of the points system.
298
+ # @param ids [String] Trigger IDs to delete. Can be repeated or comma-separated.
299
+ # @param request_options [TrophyApiClient::RequestOptions]
300
+ # @return [TrophyApiClient::DeletePointsTriggersResponse]
301
+ # @example
302
+ # api = TrophyApiClient::Client.new(
303
+ # base_url: "https://api.example.com",
304
+ # environment: TrophyApiClient::Environment::PRODUCTION,
305
+ # api_key: "YOUR_API_KEY"
306
+ # )
307
+ # api.admin.points.triggers.delete
308
+ def delete(system_id:, ids: nil, request_options: nil)
309
+ Async do
310
+ response = @request_client.conn.delete do |req|
311
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
312
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
313
+ req.headers = {
314
+ **(req.headers || {}),
315
+ **@request_client.get_headers,
316
+ **(request_options&.additional_headers || {})
317
+ }.compact
318
+ req.params = { **(request_options&.additional_query_parameters || {}), "ids": ids }.compact
319
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
320
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
321
+ end
322
+ req.url "#{@request_client.get_url(environment: admin,
323
+ request_options: request_options)}/points/#{system_id}/triggers"
324
+ end
325
+ TrophyApiClient::DeletePointsTriggersResponse.from_json(json_object: response.body)
326
+ end
327
+ end
328
+
329
+ # Update points triggers in bulk. Maximum 100 triggers per request. Only provided
330
+ # fields are updated; omitted fields are preserved.
331
+ #
332
+ # @param system_id [String] The UUID of the points system.
333
+ # @param request [TrophyApiClient::PATCH_POINTS_TRIGGERS_REQUEST]
334
+ # @param request_options [TrophyApiClient::RequestOptions]
335
+ # @return [TrophyApiClient::PatchPointsTriggersResponse]
336
+ # @example
337
+ # api = TrophyApiClient::Client.new(
338
+ # base_url: "https://api.example.com",
339
+ # environment: TrophyApiClient::Environment::PRODUCTION,
340
+ # api_key: "YOUR_API_KEY"
341
+ # )
342
+ # api.admin.points.triggers.update(system_id: "550e8400-e29b-41d4-a716-446655440000", request: [{ id: "id" }])
343
+ def update(system_id:, request:, request_options: nil)
344
+ Async do
345
+ response = @request_client.conn.patch do |req|
346
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
347
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
348
+ req.headers = {
349
+ **(req.headers || {}),
350
+ **@request_client.get_headers,
351
+ **(request_options&.additional_headers || {})
352
+ }.compact
353
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
354
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
355
+ end
356
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
357
+ req.url "#{@request_client.get_url(environment: admin,
358
+ request_options: request_options)}/points/#{system_id}/triggers"
359
+ end
360
+ TrophyApiClient::PatchPointsTriggersResponse.from_json(json_object: response.body)
361
+ end
362
+ end
363
+
364
+ # Get a single points trigger by ID.
365
+ #
366
+ # @param system_id [String] The UUID of the points system.
367
+ # @param id [String] The UUID of the points trigger.
368
+ # @param request_options [TrophyApiClient::RequestOptions]
369
+ # @return [TrophyApiClient::AdminPointsTrigger]
370
+ # @example
371
+ # api = TrophyApiClient::Client.new(
372
+ # base_url: "https://api.example.com",
373
+ # environment: TrophyApiClient::Environment::PRODUCTION,
374
+ # api_key: "YOUR_API_KEY"
375
+ # )
376
+ # api.admin.points.triggers.get(system_id: "550e8400-e29b-41d4-a716-446655440000", id: "660f9500-f30c-42e5-b827-557766550001")
377
+ def get(system_id:, id:, request_options: nil)
378
+ Async do
379
+ response = @request_client.conn.get do |req|
380
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
381
+ req.headers["X-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
382
+ req.headers = {
383
+ **(req.headers || {}),
384
+ **@request_client.get_headers,
385
+ **(request_options&.additional_headers || {})
386
+ }.compact
387
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
388
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
389
+ end
390
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
391
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
392
+ end
393
+ req.url "#{@request_client.get_url(environment: admin,
394
+ request_options: request_options)}/points/#{system_id}/triggers/#{id}"
395
+ end
396
+ TrophyApiClient::AdminPointsTrigger.from_json(json_object: response.body)
397
+ end
398
+ end
399
+ end
400
+ end
401
+ end
402
+ end
@@ -1,18 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "created_points_boost_status"
4
- require_relative "created_points_boost_rounding"
3
+ require_relative "admin_points_boost_status"
4
+ require_relative "admin_points_boost_rounding"
5
+ require_relative "admin_points_boost_user_attributes_item"
5
6
  require "ostruct"
6
7
  require "json"
7
8
 
8
9
  module TrophyApiClient
9
- # A successfully created points boost returned from the create endpoint.
10
- class CreatedPointsBoost
11
- # @return [String] The UUID of the created boost.
10
+ # A points boost as returned from admin endpoints.
11
+ class AdminPointsBoost
12
+ # @return [String] The UUID of the boost.
12
13
  attr_reader :id
13
14
  # @return [String] The name of the boost.
14
15
  attr_reader :name
15
- # @return [TrophyApiClient::CreatedPointsBoostStatus] The status of the boost.
16
+ # @return [TrophyApiClient::AdminPointsBoostStatus] The status of the boost.
16
17
  attr_reader :status
17
18
  # @return [String] The start date (YYYY-MM-DD).
18
19
  attr_reader :start
@@ -20,10 +21,14 @@ module TrophyApiClient
20
21
  attr_reader :end_
21
22
  # @return [Float] The points multiplier.
22
23
  attr_reader :multiplier
23
- # @return [TrophyApiClient::CreatedPointsBoostRounding] How boosted points are rounded.
24
+ # @return [TrophyApiClient::AdminPointsBoostRounding] How boosted points are rounded.
24
25
  attr_reader :rounding
25
- # @return [String] The customer ID of the user the boost was created for.
26
+ # @return [String] The customer ID of the user the boost was created for, or null for
27
+ # global/attribute-filtered boosts.
26
28
  attr_reader :user_id
29
+ # @return [Array<TrophyApiClient::AdminPointsBoostUserAttributesItem>] User attribute filters applied to the boost. Only present for non-user-specific
30
+ # boosts (i.e. when `userId` is null). Empty array if no filters are set.
31
+ attr_reader :user_attributes
27
32
  # @return [OpenStruct] Additional properties unmapped to the current class definition
28
33
  attr_reader :additional_properties
29
34
  # @return [Object]
@@ -32,18 +37,21 @@ module TrophyApiClient
32
37
 
33
38
  OMIT = Object.new
34
39
 
35
- # @param id [String] The UUID of the created boost.
40
+ # @param id [String] The UUID of the boost.
36
41
  # @param name [String] The name of the boost.
37
- # @param status [TrophyApiClient::CreatedPointsBoostStatus] The status of the boost.
42
+ # @param status [TrophyApiClient::AdminPointsBoostStatus] The status of the boost.
38
43
  # @param start [String] The start date (YYYY-MM-DD).
39
44
  # @param end_ [String] The end date (YYYY-MM-DD) or null if no end date.
40
45
  # @param multiplier [Float] The points multiplier.
41
- # @param rounding [TrophyApiClient::CreatedPointsBoostRounding] How boosted points are rounded.
42
- # @param user_id [String] The customer ID of the user the boost was created for.
46
+ # @param rounding [TrophyApiClient::AdminPointsBoostRounding] How boosted points are rounded.
47
+ # @param user_id [String] The customer ID of the user the boost was created for, or null for
48
+ # global/attribute-filtered boosts.
49
+ # @param user_attributes [Array<TrophyApiClient::AdminPointsBoostUserAttributesItem>] User attribute filters applied to the boost. Only present for non-user-specific
50
+ # boosts (i.e. when `userId` is null). Empty array if no filters are set.
43
51
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
44
- # @return [TrophyApiClient::CreatedPointsBoost]
45
- def initialize(id:, name:, status:, start:, multiplier:, rounding:, user_id:, end_: OMIT,
46
- additional_properties: nil)
52
+ # @return [TrophyApiClient::AdminPointsBoost]
53
+ def initialize(id:, name:, status:, start:, multiplier:, rounding:, end_: OMIT, user_id: OMIT,
54
+ user_attributes: OMIT, additional_properties: nil)
47
55
  @id = id
48
56
  @name = name
49
57
  @status = status
@@ -51,7 +59,8 @@ module TrophyApiClient
51
59
  @end_ = end_ if end_ != OMIT
52
60
  @multiplier = multiplier
53
61
  @rounding = rounding
54
- @user_id = user_id
62
+ @user_id = user_id if user_id != OMIT
63
+ @user_attributes = user_attributes if user_attributes != OMIT
55
64
  @additional_properties = additional_properties
56
65
  @_field_set = {
57
66
  "id": id,
@@ -61,16 +70,17 @@ module TrophyApiClient
61
70
  "end": end_,
62
71
  "multiplier": multiplier,
63
72
  "rounding": rounding,
64
- "userId": user_id
73
+ "userId": user_id,
74
+ "userAttributes": user_attributes
65
75
  }.reject do |_k, v|
66
76
  v == OMIT
67
77
  end
68
78
  end
69
79
 
70
- # Deserialize a JSON object to an instance of CreatedPointsBoost
80
+ # Deserialize a JSON object to an instance of AdminPointsBoost
71
81
  #
72
82
  # @param json_object [String]
73
- # @return [TrophyApiClient::CreatedPointsBoost]
83
+ # @return [TrophyApiClient::AdminPointsBoost]
74
84
  def self.from_json(json_object:)
75
85
  struct = JSON.parse(json_object, object_class: OpenStruct)
76
86
  parsed_json = JSON.parse(json_object)
@@ -82,6 +92,10 @@ module TrophyApiClient
82
92
  multiplier = parsed_json["multiplier"]
83
93
  rounding = parsed_json["rounding"]
84
94
  user_id = parsed_json["userId"]
95
+ user_attributes = parsed_json["userAttributes"]&.map do |item|
96
+ item = item.to_json
97
+ TrophyApiClient::AdminPointsBoostUserAttributesItem.from_json(json_object: item)
98
+ end
85
99
  new(
86
100
  id: id,
87
101
  name: name,
@@ -91,11 +105,12 @@ module TrophyApiClient
91
105
  multiplier: multiplier,
92
106
  rounding: rounding,
93
107
  user_id: user_id,
108
+ user_attributes: user_attributes,
94
109
  additional_properties: struct
95
110
  )
96
111
  end
97
112
 
98
- # Serialize an instance of CreatedPointsBoost to a JSON object
113
+ # Serialize an instance of AdminPointsBoost to a JSON object
99
114
  #
100
115
  # @return [String]
101
116
  def to_json(*_args)
@@ -111,12 +126,13 @@ module TrophyApiClient
111
126
  def self.validate_raw(obj:)
112
127
  obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
113
128
  obj.name.is_a?(String) != false || raise("Passed value for field obj.name is not the expected type, validation failed.")
114
- obj.status.is_a?(TrophyApiClient::CreatedPointsBoostStatus) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
129
+ obj.status.is_a?(TrophyApiClient::AdminPointsBoostStatus) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
115
130
  obj.start.is_a?(String) != false || raise("Passed value for field obj.start is not the expected type, validation failed.")
116
131
  obj.end_&.is_a?(String) != false || raise("Passed value for field obj.end_ is not the expected type, validation failed.")
117
132
  obj.multiplier.is_a?(Float) != false || raise("Passed value for field obj.multiplier is not the expected type, validation failed.")
118
- obj.rounding.is_a?(TrophyApiClient::CreatedPointsBoostRounding) != false || raise("Passed value for field obj.rounding is not the expected type, validation failed.")
119
- obj.user_id.is_a?(String) != false || raise("Passed value for field obj.user_id is not the expected type, validation failed.")
133
+ obj.rounding.is_a?(TrophyApiClient::AdminPointsBoostRounding) != false || raise("Passed value for field obj.rounding is not the expected type, validation failed.")
134
+ obj.user_id&.is_a?(String) != false || raise("Passed value for field obj.user_id is not the expected type, validation failed.")
135
+ obj.user_attributes&.is_a?(Array) != false || raise("Passed value for field obj.user_attributes is not the expected type, validation failed.")
120
136
  end
121
137
  end
122
138
  end
@@ -2,7 +2,7 @@
2
2
 
3
3
  module TrophyApiClient
4
4
  # How boosted points are rounded.
5
- class CreatedPointsBoostRounding
5
+ class AdminPointsBoostRounding
6
6
  DOWN = "down"
7
7
  UP = "up"
8
8
  NEAREST = "nearest"
@@ -2,7 +2,7 @@
2
2
 
3
3
  module TrophyApiClient
4
4
  # The status of the boost.
5
- class CreatedPointsBoostStatus
5
+ class AdminPointsBoostStatus
6
6
  ACTIVE = "active"
7
7
  SCHEDULED = "scheduled"
8
8
  FINISHED = "finished"
@@ -0,0 +1,65 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module TrophyApiClient
7
+ class AdminPointsBoostUserAttributesItem
8
+ # @return [String] The UUID of the user attribute.
9
+ attr_reader :attribute_id
10
+ # @return [String] The matched attribute value.
11
+ attr_reader :attribute_value
12
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
13
+ attr_reader :additional_properties
14
+ # @return [Object]
15
+ attr_reader :_field_set
16
+ protected :_field_set
17
+
18
+ OMIT = Object.new
19
+
20
+ # @param attribute_id [String] The UUID of the user attribute.
21
+ # @param attribute_value [String] The matched attribute value.
22
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
23
+ # @return [TrophyApiClient::AdminPointsBoostUserAttributesItem]
24
+ def initialize(attribute_id:, attribute_value:, additional_properties: nil)
25
+ @attribute_id = attribute_id
26
+ @attribute_value = attribute_value
27
+ @additional_properties = additional_properties
28
+ @_field_set = { "attributeId": attribute_id, "attributeValue": attribute_value }
29
+ end
30
+
31
+ # Deserialize a JSON object to an instance of AdminPointsBoostUserAttributesItem
32
+ #
33
+ # @param json_object [String]
34
+ # @return [TrophyApiClient::AdminPointsBoostUserAttributesItem]
35
+ def self.from_json(json_object:)
36
+ struct = JSON.parse(json_object, object_class: OpenStruct)
37
+ parsed_json = JSON.parse(json_object)
38
+ attribute_id = parsed_json["attributeId"]
39
+ attribute_value = parsed_json["attributeValue"]
40
+ new(
41
+ attribute_id: attribute_id,
42
+ attribute_value: attribute_value,
43
+ additional_properties: struct
44
+ )
45
+ end
46
+
47
+ # Serialize an instance of AdminPointsBoostUserAttributesItem to a JSON object
48
+ #
49
+ # @return [String]
50
+ def to_json(*_args)
51
+ @_field_set&.to_json
52
+ end
53
+
54
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
55
+ # hash and check each fields type against the current object's property
56
+ # definitions.
57
+ #
58
+ # @param obj [Object]
59
+ # @return [Void]
60
+ def self.validate_raw(obj:)
61
+ obj.attribute_id.is_a?(String) != false || raise("Passed value for field obj.attribute_id is not the expected type, validation failed.")
62
+ obj.attribute_value.is_a?(String) != false || raise("Passed value for field obj.attribute_value is not the expected type, validation failed.")
63
+ end
64
+ end
65
+ end