test_sdk 0.0.4

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 (95) hide show
  1. checksums.yaml +7 -0
  2. data/lib/core/file_utilities.rb +26 -0
  3. data/lib/environment.rb +7 -0
  4. data/lib/gemconfig.rb +14 -0
  5. data/lib/requests.rb +166 -0
  6. data/lib/test_sdk/benchmark/client.rb +1031 -0
  7. data/lib/test_sdk/company/client.rb +474 -0
  8. data/lib/test_sdk/deal/client.rb +584 -0
  9. data/lib/test_sdk/file/client.rb +692 -0
  10. data/lib/test_sdk/financials/client.rb +97 -0
  11. data/lib/test_sdk/group/client.rb +737 -0
  12. data/lib/test_sdk/macro/client.rb +422 -0
  13. data/lib/test_sdk/metadata/client.rb +95 -0
  14. data/lib/test_sdk/product/client.rb +419 -0
  15. data/lib/test_sdk/talent/client.rb +266 -0
  16. data/lib/test_sdk/types/account_manager_response.rb +74 -0
  17. data/lib/test_sdk/types/all_data_metadata_response.rb +68 -0
  18. data/lib/test_sdk/types/area.rb +74 -0
  19. data/lib/test_sdk/types/authenticate_api_key_response.rb +55 -0
  20. data/lib/test_sdk/types/available_categories_response.rb +5 -0
  21. data/lib/test_sdk/types/available_models_response.rb +69 -0
  22. data/lib/test_sdk/types/band_response.rb +83 -0
  23. data/lib/test_sdk/types/benchmark_quantile.rb +465 -0
  24. data/lib/test_sdk/types/categories_metadata_response.rb +72 -0
  25. data/lib/test_sdk/types/category_growth_rates.rb +143 -0
  26. data/lib/test_sdk/types/category_metadata.rb +79 -0
  27. data/lib/test_sdk/types/category_metadata_default_user_type.rb +8 -0
  28. data/lib/test_sdk/types/cohorts_response.rb +132 -0
  29. data/lib/test_sdk/types/column_metadata.rb +110 -0
  30. data/lib/test_sdk/types/column_mini_metadata.rb +83 -0
  31. data/lib/test_sdk/types/columns_metadata_response.rb +72 -0
  32. data/lib/test_sdk/types/company_response.rb +120 -0
  33. data/lib/test_sdk/types/concentration_endpoint_cdf_detail.rb +96 -0
  34. data/lib/test_sdk/types/concentration_endpoint_top_users_detail.rb +72 -0
  35. data/lib/test_sdk/types/concentration_response.rb +103 -0
  36. data/lib/test_sdk/types/concentration_timeseries_detail.rb +159 -0
  37. data/lib/test_sdk/types/contribution_response.rb +135 -0
  38. data/lib/test_sdk/types/create_api_key_response.rb +55 -0
  39. data/lib/test_sdk/types/create_file_for_signed_url_response.rb +127 -0
  40. data/lib/test_sdk/types/create_file_response.rb +113 -0
  41. data/lib/test_sdk/types/deal_combined_metrics_response.rb +477 -0
  42. data/lib/test_sdk/types/deal_data_availablity_response.rb +109 -0
  43. data/lib/test_sdk/types/deal_with_files_response.rb +194 -0
  44. data/lib/test_sdk/types/endpoint_seniority_count.rb +66 -0
  45. data/lib/test_sdk/types/executive_profile.rb +91 -0
  46. data/lib/test_sdk/types/executive_profile_position.rb +97 -0
  47. data/lib/test_sdk/types/file_response.rb +113 -0
  48. data/lib/test_sdk/types/file_type.rb +14 -0
  49. data/lib/test_sdk/types/financial_metrics.rb +113 -0
  50. data/lib/test_sdk/types/financials_response.rb +102 -0
  51. data/lib/test_sdk/types/frequency.rb +9 -0
  52. data/lib/test_sdk/types/function_level_growth_accounting.rb +111 -0
  53. data/lib/test_sdk/types/gcs_signed_url_response.rb +81 -0
  54. data/lib/test_sdk/types/group_response.rb +158 -0
  55. data/lib/test_sdk/types/group_user.rb +124 -0
  56. data/lib/test_sdk/types/group_with_users_response.rb +170 -0
  57. data/lib/test_sdk/types/growth_accounting_response.rb +226 -0
  58. data/lib/test_sdk/types/healthz_response.rb +55 -0
  59. data/lib/test_sdk/types/http_validation_error.rb +61 -0
  60. data/lib/test_sdk/types/income_statement_entry.rb +81 -0
  61. data/lib/test_sdk/types/model_metadata.rb +76 -0
  62. data/lib/test_sdk/types/models_metadata_response.rb +76 -0
  63. data/lib/test_sdk/types/paginated_response_company_response.rb +83 -0
  64. data/lib/test_sdk/types/paginated_response_deal_with_files_response.rb +84 -0
  65. data/lib/test_sdk/types/paginated_response_file_response.rb +83 -0
  66. data/lib/test_sdk/types/paginated_response_group_user.rb +83 -0
  67. data/lib/test_sdk/types/permission_model.rb +65 -0
  68. data/lib/test_sdk/types/priority.rb +10 -0
  69. data/lib/test_sdk/types/product_info_response.rb +65 -0
  70. data/lib/test_sdk/types/role_response.rb +95 -0
  71. data/lib/test_sdk/types/scale.rb +72 -0
  72. data/lib/test_sdk/types/scale_model.rb +80 -0
  73. data/lib/test_sdk/types/scale_models_response.rb +5 -0
  74. data/lib/test_sdk/types/scaling.rb +10 -0
  75. data/lib/test_sdk/types/status.rb +12 -0
  76. data/lib/test_sdk/types/tradeoff_model.rb +95 -0
  77. data/lib/test_sdk/types/tradeoff_models_response.rb +5 -0
  78. data/lib/test_sdk/types/unit.rb +12 -0
  79. data/lib/test_sdk/types/unit_economics_info_response.rb +55 -0
  80. data/lib/test_sdk/types/user_accounting_response.rb +168 -0
  81. data/lib/test_sdk/types/user_role_response.rb +77 -0
  82. data/lib/test_sdk/types/user_type.rb +12 -0
  83. data/lib/test_sdk/types/user_with_groups_response.rb +140 -0
  84. data/lib/test_sdk/types/user_with_permissions_response.rb +153 -0
  85. data/lib/test_sdk/types/validation_error.rb +76 -0
  86. data/lib/test_sdk/types/validation_error_loc_item.rb +52 -0
  87. data/lib/test_sdk/types/weather_components.rb +123 -0
  88. data/lib/test_sdk/types/weather_gauge.rb +76 -0
  89. data/lib/test_sdk/types/weather_market_context.rb +109 -0
  90. data/lib/test_sdk/types/weather_metadata.rb +113 -0
  91. data/lib/test_sdk/unit_economics/client.rb +124 -0
  92. data/lib/test_sdk/user/client.rb +363 -0
  93. data/lib/test_sdk.rb +190 -0
  94. data/lib/types_export.rb +77 -0
  95. metadata +251 -0
@@ -0,0 +1,419 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "../types/user_type"
5
+ require_relative "../types/frequency"
6
+ require_relative "../types/user_accounting_response"
7
+ require "json"
8
+ require_relative "../types/growth_accounting_response"
9
+ require_relative "../types/cohorts_response"
10
+ require_relative "../types/concentration_response"
11
+ require "async"
12
+
13
+ module NewDemoApiClient
14
+ class ProductClient
15
+ # @return [NewDemoApiClient::RequestClient]
16
+ attr_reader :request_client
17
+
18
+ # @param request_client [NewDemoApiClient::RequestClient]
19
+ # @return [NewDemoApiClient::ProductClient]
20
+ def initialize(request_client:)
21
+ @request_client = request_client
22
+ end
23
+
24
+ # Get the product user accounting for the company associated with the deal.
25
+ #
26
+ # @param group_id [Integer]
27
+ # @param deal_id [Integer]
28
+ # @param user_type [NewDemoApiClient::UserType]
29
+ # @param metric [String]
30
+ # @param freq [NewDemoApiClient::Frequency]
31
+ # @param request_options [NewDemoApiClient::RequestOptions]
32
+ # @return [Array<NewDemoApiClient::UserAccountingResponse>]
33
+ # @example
34
+ # api = NewDemoApiClient::Client.new(
35
+ # base_url: "https://api.example.com",
36
+ # environment: NewDemoApiClient::Environment::DEFAULT,
37
+ # token: "YOUR_AUTH_TOKEN"
38
+ # )
39
+ # api.product.get_user_accounting(
40
+ # group_id: 1,
41
+ # deal_id: 1,
42
+ # user_type: BUSINESS,
43
+ # metric: "metric"
44
+ # )
45
+ def get_user_accounting(group_id:, deal_id:, user_type:, metric:, freq: 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["Authorization"] = request_options.token unless request_options&.token.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
+ "user_type": user_type,
57
+ "metric": metric,
58
+ "freq": freq
59
+ }.compact
60
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
61
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
62
+ end
63
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/user-accounting"
64
+ end
65
+ parsed_json = JSON.parse(response.body)
66
+ parsed_json&.map do |item|
67
+ item = item.to_json
68
+ NewDemoApiClient::UserAccountingResponse.from_json(json_object: item)
69
+ end
70
+ end
71
+
72
+ # Get the product growth accounting for the company associated with the deal.
73
+ #
74
+ # @param group_id [Integer]
75
+ # @param deal_id [Integer]
76
+ # @param user_type [NewDemoApiClient::UserType]
77
+ # @param metric [String]
78
+ # @param freq [NewDemoApiClient::Frequency]
79
+ # @param request_options [NewDemoApiClient::RequestOptions]
80
+ # @return [Array<NewDemoApiClient::GrowthAccountingResponse>]
81
+ # @example
82
+ # api = NewDemoApiClient::Client.new(
83
+ # base_url: "https://api.example.com",
84
+ # environment: NewDemoApiClient::Environment::DEFAULT,
85
+ # token: "YOUR_AUTH_TOKEN"
86
+ # )
87
+ # api.product.get_growth_accounting(
88
+ # group_id: 1,
89
+ # deal_id: 1,
90
+ # user_type: BUSINESS,
91
+ # metric: "metric"
92
+ # )
93
+ def get_growth_accounting(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
94
+ response = @request_client.conn.get do |req|
95
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
96
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
97
+ req.headers = {
98
+ **(req.headers || {}),
99
+ **@request_client.get_headers,
100
+ **(request_options&.additional_headers || {})
101
+ }.compact
102
+ req.params = {
103
+ **(request_options&.additional_query_parameters || {}),
104
+ "user_type": user_type,
105
+ "metric": metric,
106
+ "freq": freq
107
+ }.compact
108
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
109
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
110
+ end
111
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/growth-accounting"
112
+ end
113
+ parsed_json = JSON.parse(response.body)
114
+ parsed_json&.map do |item|
115
+ item = item.to_json
116
+ NewDemoApiClient::GrowthAccountingResponse.from_json(json_object: item)
117
+ end
118
+ end
119
+
120
+ # Get the product cohorts for the company associated with the deal.
121
+ #
122
+ # @param group_id [Integer]
123
+ # @param deal_id [Integer]
124
+ # @param user_type [NewDemoApiClient::UserType]
125
+ # @param metric [String]
126
+ # @param freq [NewDemoApiClient::Frequency]
127
+ # @param request_options [NewDemoApiClient::RequestOptions]
128
+ # @return [Array<NewDemoApiClient::CohortsResponse>]
129
+ # @example
130
+ # api = NewDemoApiClient::Client.new(
131
+ # base_url: "https://api.example.com",
132
+ # environment: NewDemoApiClient::Environment::DEFAULT,
133
+ # token: "YOUR_AUTH_TOKEN"
134
+ # )
135
+ # api.product.get_cohorts(
136
+ # group_id: 1,
137
+ # deal_id: 1,
138
+ # user_type: BUSINESS,
139
+ # metric: "metric"
140
+ # )
141
+ def get_cohorts(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
142
+ response = @request_client.conn.get do |req|
143
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
144
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
145
+ req.headers = {
146
+ **(req.headers || {}),
147
+ **@request_client.get_headers,
148
+ **(request_options&.additional_headers || {})
149
+ }.compact
150
+ req.params = {
151
+ **(request_options&.additional_query_parameters || {}),
152
+ "user_type": user_type,
153
+ "metric": metric,
154
+ "freq": freq
155
+ }.compact
156
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
157
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
158
+ end
159
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/cohorts"
160
+ end
161
+ parsed_json = JSON.parse(response.body)
162
+ parsed_json&.map do |item|
163
+ item = item.to_json
164
+ NewDemoApiClient::CohortsResponse.from_json(json_object: item)
165
+ end
166
+ end
167
+
168
+ # Get the product concentration for the company associated with the deal.
169
+ #
170
+ # @param group_id [Integer]
171
+ # @param deal_id [Integer]
172
+ # @param user_type [NewDemoApiClient::UserType]
173
+ # @param metric [String]
174
+ # @param freq [NewDemoApiClient::Frequency]
175
+ # @param request_options [NewDemoApiClient::RequestOptions]
176
+ # @return [NewDemoApiClient::ConcentrationResponse]
177
+ # @example
178
+ # api = NewDemoApiClient::Client.new(
179
+ # base_url: "https://api.example.com",
180
+ # environment: NewDemoApiClient::Environment::DEFAULT,
181
+ # token: "YOUR_AUTH_TOKEN"
182
+ # )
183
+ # api.product.get_concentration(
184
+ # group_id: 1,
185
+ # deal_id: 1,
186
+ # user_type: BUSINESS,
187
+ # metric: "metric"
188
+ # )
189
+ def get_concentration(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
190
+ response = @request_client.conn.get do |req|
191
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
192
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
193
+ req.headers = {
194
+ **(req.headers || {}),
195
+ **@request_client.get_headers,
196
+ **(request_options&.additional_headers || {})
197
+ }.compact
198
+ req.params = {
199
+ **(request_options&.additional_query_parameters || {}),
200
+ "user_type": user_type,
201
+ "metric": metric,
202
+ "freq": freq
203
+ }.compact
204
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
205
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
206
+ end
207
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/concentration"
208
+ end
209
+ NewDemoApiClient::ConcentrationResponse.from_json(json_object: response.body)
210
+ end
211
+ end
212
+
213
+ class AsyncProductClient
214
+ # @return [NewDemoApiClient::AsyncRequestClient]
215
+ attr_reader :request_client
216
+
217
+ # @param request_client [NewDemoApiClient::AsyncRequestClient]
218
+ # @return [NewDemoApiClient::AsyncProductClient]
219
+ def initialize(request_client:)
220
+ @request_client = request_client
221
+ end
222
+
223
+ # Get the product user accounting for the company associated with the deal.
224
+ #
225
+ # @param group_id [Integer]
226
+ # @param deal_id [Integer]
227
+ # @param user_type [NewDemoApiClient::UserType]
228
+ # @param metric [String]
229
+ # @param freq [NewDemoApiClient::Frequency]
230
+ # @param request_options [NewDemoApiClient::RequestOptions]
231
+ # @return [Array<NewDemoApiClient::UserAccountingResponse>]
232
+ # @example
233
+ # api = NewDemoApiClient::Client.new(
234
+ # base_url: "https://api.example.com",
235
+ # environment: NewDemoApiClient::Environment::DEFAULT,
236
+ # token: "YOUR_AUTH_TOKEN"
237
+ # )
238
+ # api.product.get_user_accounting(
239
+ # group_id: 1,
240
+ # deal_id: 1,
241
+ # user_type: BUSINESS,
242
+ # metric: "metric"
243
+ # )
244
+ def get_user_accounting(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
245
+ Async do
246
+ response = @request_client.conn.get do |req|
247
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
248
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
249
+ req.headers = {
250
+ **(req.headers || {}),
251
+ **@request_client.get_headers,
252
+ **(request_options&.additional_headers || {})
253
+ }.compact
254
+ req.params = {
255
+ **(request_options&.additional_query_parameters || {}),
256
+ "user_type": user_type,
257
+ "metric": metric,
258
+ "freq": freq
259
+ }.compact
260
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
261
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
262
+ end
263
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/user-accounting"
264
+ end
265
+ parsed_json = JSON.parse(response.body)
266
+ parsed_json&.map do |item|
267
+ item = item.to_json
268
+ NewDemoApiClient::UserAccountingResponse.from_json(json_object: item)
269
+ end
270
+ end
271
+ end
272
+
273
+ # Get the product growth accounting for the company associated with the deal.
274
+ #
275
+ # @param group_id [Integer]
276
+ # @param deal_id [Integer]
277
+ # @param user_type [NewDemoApiClient::UserType]
278
+ # @param metric [String]
279
+ # @param freq [NewDemoApiClient::Frequency]
280
+ # @param request_options [NewDemoApiClient::RequestOptions]
281
+ # @return [Array<NewDemoApiClient::GrowthAccountingResponse>]
282
+ # @example
283
+ # api = NewDemoApiClient::Client.new(
284
+ # base_url: "https://api.example.com",
285
+ # environment: NewDemoApiClient::Environment::DEFAULT,
286
+ # token: "YOUR_AUTH_TOKEN"
287
+ # )
288
+ # api.product.get_growth_accounting(
289
+ # group_id: 1,
290
+ # deal_id: 1,
291
+ # user_type: BUSINESS,
292
+ # metric: "metric"
293
+ # )
294
+ def get_growth_accounting(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
295
+ Async do
296
+ response = @request_client.conn.get do |req|
297
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
298
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
299
+ req.headers = {
300
+ **(req.headers || {}),
301
+ **@request_client.get_headers,
302
+ **(request_options&.additional_headers || {})
303
+ }.compact
304
+ req.params = {
305
+ **(request_options&.additional_query_parameters || {}),
306
+ "user_type": user_type,
307
+ "metric": metric,
308
+ "freq": freq
309
+ }.compact
310
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
311
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
312
+ end
313
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/growth-accounting"
314
+ end
315
+ parsed_json = JSON.parse(response.body)
316
+ parsed_json&.map do |item|
317
+ item = item.to_json
318
+ NewDemoApiClient::GrowthAccountingResponse.from_json(json_object: item)
319
+ end
320
+ end
321
+ end
322
+
323
+ # Get the product cohorts for the company associated with the deal.
324
+ #
325
+ # @param group_id [Integer]
326
+ # @param deal_id [Integer]
327
+ # @param user_type [NewDemoApiClient::UserType]
328
+ # @param metric [String]
329
+ # @param freq [NewDemoApiClient::Frequency]
330
+ # @param request_options [NewDemoApiClient::RequestOptions]
331
+ # @return [Array<NewDemoApiClient::CohortsResponse>]
332
+ # @example
333
+ # api = NewDemoApiClient::Client.new(
334
+ # base_url: "https://api.example.com",
335
+ # environment: NewDemoApiClient::Environment::DEFAULT,
336
+ # token: "YOUR_AUTH_TOKEN"
337
+ # )
338
+ # api.product.get_cohorts(
339
+ # group_id: 1,
340
+ # deal_id: 1,
341
+ # user_type: BUSINESS,
342
+ # metric: "metric"
343
+ # )
344
+ def get_cohorts(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
345
+ Async do
346
+ response = @request_client.conn.get do |req|
347
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
348
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
349
+ req.headers = {
350
+ **(req.headers || {}),
351
+ **@request_client.get_headers,
352
+ **(request_options&.additional_headers || {})
353
+ }.compact
354
+ req.params = {
355
+ **(request_options&.additional_query_parameters || {}),
356
+ "user_type": user_type,
357
+ "metric": metric,
358
+ "freq": freq
359
+ }.compact
360
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
361
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
362
+ end
363
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/cohorts"
364
+ end
365
+ parsed_json = JSON.parse(response.body)
366
+ parsed_json&.map do |item|
367
+ item = item.to_json
368
+ NewDemoApiClient::CohortsResponse.from_json(json_object: item)
369
+ end
370
+ end
371
+ end
372
+
373
+ # Get the product concentration for the company associated with the deal.
374
+ #
375
+ # @param group_id [Integer]
376
+ # @param deal_id [Integer]
377
+ # @param user_type [NewDemoApiClient::UserType]
378
+ # @param metric [String]
379
+ # @param freq [NewDemoApiClient::Frequency]
380
+ # @param request_options [NewDemoApiClient::RequestOptions]
381
+ # @return [NewDemoApiClient::ConcentrationResponse]
382
+ # @example
383
+ # api = NewDemoApiClient::Client.new(
384
+ # base_url: "https://api.example.com",
385
+ # environment: NewDemoApiClient::Environment::DEFAULT,
386
+ # token: "YOUR_AUTH_TOKEN"
387
+ # )
388
+ # api.product.get_concentration(
389
+ # group_id: 1,
390
+ # deal_id: 1,
391
+ # user_type: BUSINESS,
392
+ # metric: "metric"
393
+ # )
394
+ def get_concentration(group_id:, deal_id:, user_type:, metric:, freq: nil, request_options: nil)
395
+ Async do
396
+ response = @request_client.conn.get do |req|
397
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
398
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
399
+ req.headers = {
400
+ **(req.headers || {}),
401
+ **@request_client.get_headers,
402
+ **(request_options&.additional_headers || {})
403
+ }.compact
404
+ req.params = {
405
+ **(request_options&.additional_query_parameters || {}),
406
+ "user_type": user_type,
407
+ "metric": metric,
408
+ "freq": freq
409
+ }.compact
410
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
411
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
412
+ end
413
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/concentration"
414
+ end
415
+ NewDemoApiClient::ConcentrationResponse.from_json(json_object: response.body)
416
+ end
417
+ end
418
+ end
419
+ end
@@ -0,0 +1,266 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "../types/executive_profile"
5
+ require "json"
6
+ require_relative "../types/endpoint_seniority_count"
7
+ require_relative "../types/function_level_growth_accounting"
8
+ require "async"
9
+
10
+ module NewDemoApiClient
11
+ class TalentClient
12
+ # @return [NewDemoApiClient::RequestClient]
13
+ attr_reader :request_client
14
+
15
+ # @param request_client [NewDemoApiClient::RequestClient]
16
+ # @return [NewDemoApiClient::TalentClient]
17
+ def initialize(request_client:)
18
+ @request_client = request_client
19
+ end
20
+
21
+ # Get the profiles of the executives for the company associated with the deal.
22
+ #
23
+ # @param group_id [Integer]
24
+ # @param deal_id [Integer]
25
+ # @param request_options [NewDemoApiClient::RequestOptions]
26
+ # @return [Array<NewDemoApiClient::ExecutiveProfile>]
27
+ # @example
28
+ # api = NewDemoApiClient::Client.new(
29
+ # base_url: "https://api.example.com",
30
+ # environment: NewDemoApiClient::Environment::DEFAULT,
31
+ # token: "YOUR_AUTH_TOKEN"
32
+ # )
33
+ # api.talent.get_executive_profiles(group_id: 1, deal_id: 1)
34
+ def get_executive_profiles(group_id:, deal_id:, request_options: nil)
35
+ response = @request_client.conn.get do |req|
36
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
37
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
38
+ req.headers = {
39
+ **(req.headers || {}),
40
+ **@request_client.get_headers,
41
+ **(request_options&.additional_headers || {})
42
+ }.compact
43
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
44
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
45
+ end
46
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
47
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
48
+ end
49
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/executive-profiles"
50
+ end
51
+ parsed_json = JSON.parse(response.body)
52
+ parsed_json&.map do |item|
53
+ item = item.to_json
54
+ NewDemoApiClient::ExecutiveProfile.from_json(json_object: item)
55
+ end
56
+ end
57
+
58
+ # Returns the number of employees at various seniority levels as of the endpoint
59
+ # of the talent data for the deal.
60
+ #
61
+ # @param group_id [Integer]
62
+ # @param deal_id [Integer]
63
+ # @param request_options [NewDemoApiClient::RequestOptions]
64
+ # @return [Array<NewDemoApiClient::EndpointSeniorityCount>]
65
+ # @example
66
+ # api = NewDemoApiClient::Client.new(
67
+ # base_url: "https://api.example.com",
68
+ # environment: NewDemoApiClient::Environment::DEFAULT,
69
+ # token: "YOUR_AUTH_TOKEN"
70
+ # )
71
+ # api.talent.get_seniority_count(group_id: 1, deal_id: 1)
72
+ def get_seniority_count(group_id:, deal_id:, request_options: nil)
73
+ response = @request_client.conn.get do |req|
74
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
75
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
76
+ req.headers = {
77
+ **(req.headers || {}),
78
+ **@request_client.get_headers,
79
+ **(request_options&.additional_headers || {})
80
+ }.compact
81
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
82
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
83
+ end
84
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
85
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
86
+ end
87
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/seniority-count"
88
+ end
89
+ parsed_json = JSON.parse(response.body)
90
+ parsed_json&.map do |item|
91
+ item = item.to_json
92
+ NewDemoApiClient::EndpointSeniorityCount.from_json(json_object: item)
93
+ end
94
+ end
95
+
96
+ # The function-level growth accounting for employees within the company. Measure
97
+ # how many users join, churn, or
98
+ # resurrect, at the function level, for each period there is data.
99
+ #
100
+ # @param group_id [Integer]
101
+ # @param deal_id [Integer]
102
+ # @param request_options [NewDemoApiClient::RequestOptions]
103
+ # @return [Array<NewDemoApiClient::FunctionLevelGrowthAccounting>]
104
+ # @example
105
+ # api = NewDemoApiClient::Client.new(
106
+ # base_url: "https://api.example.com",
107
+ # environment: NewDemoApiClient::Environment::DEFAULT,
108
+ # token: "YOUR_AUTH_TOKEN"
109
+ # )
110
+ # api.talent.get_team_growth_accounting(group_id: 1, deal_id: 1)
111
+ def get_team_growth_accounting(group_id:, deal_id:, request_options: nil)
112
+ response = @request_client.conn.get do |req|
113
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
114
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
115
+ req.headers = {
116
+ **(req.headers || {}),
117
+ **@request_client.get_headers,
118
+ **(request_options&.additional_headers || {})
119
+ }.compact
120
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
121
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
122
+ end
123
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
124
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
125
+ end
126
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/team-growth-accounting"
127
+ end
128
+ parsed_json = JSON.parse(response.body)
129
+ parsed_json&.map do |item|
130
+ item = item.to_json
131
+ NewDemoApiClient::FunctionLevelGrowthAccounting.from_json(json_object: item)
132
+ end
133
+ end
134
+ end
135
+
136
+ class AsyncTalentClient
137
+ # @return [NewDemoApiClient::AsyncRequestClient]
138
+ attr_reader :request_client
139
+
140
+ # @param request_client [NewDemoApiClient::AsyncRequestClient]
141
+ # @return [NewDemoApiClient::AsyncTalentClient]
142
+ def initialize(request_client:)
143
+ @request_client = request_client
144
+ end
145
+
146
+ # Get the profiles of the executives for the company associated with the deal.
147
+ #
148
+ # @param group_id [Integer]
149
+ # @param deal_id [Integer]
150
+ # @param request_options [NewDemoApiClient::RequestOptions]
151
+ # @return [Array<NewDemoApiClient::ExecutiveProfile>]
152
+ # @example
153
+ # api = NewDemoApiClient::Client.new(
154
+ # base_url: "https://api.example.com",
155
+ # environment: NewDemoApiClient::Environment::DEFAULT,
156
+ # token: "YOUR_AUTH_TOKEN"
157
+ # )
158
+ # api.talent.get_executive_profiles(group_id: 1, deal_id: 1)
159
+ def get_executive_profiles(group_id:, deal_id:, request_options: nil)
160
+ Async do
161
+ response = @request_client.conn.get do |req|
162
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
163
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
164
+ req.headers = {
165
+ **(req.headers || {}),
166
+ **@request_client.get_headers,
167
+ **(request_options&.additional_headers || {})
168
+ }.compact
169
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
170
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
171
+ end
172
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
173
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
174
+ end
175
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/executive-profiles"
176
+ end
177
+ parsed_json = JSON.parse(response.body)
178
+ parsed_json&.map do |item|
179
+ item = item.to_json
180
+ NewDemoApiClient::ExecutiveProfile.from_json(json_object: item)
181
+ end
182
+ end
183
+ end
184
+
185
+ # Returns the number of employees at various seniority levels as of the endpoint
186
+ # of the talent data for the deal.
187
+ #
188
+ # @param group_id [Integer]
189
+ # @param deal_id [Integer]
190
+ # @param request_options [NewDemoApiClient::RequestOptions]
191
+ # @return [Array<NewDemoApiClient::EndpointSeniorityCount>]
192
+ # @example
193
+ # api = NewDemoApiClient::Client.new(
194
+ # base_url: "https://api.example.com",
195
+ # environment: NewDemoApiClient::Environment::DEFAULT,
196
+ # token: "YOUR_AUTH_TOKEN"
197
+ # )
198
+ # api.talent.get_seniority_count(group_id: 1, deal_id: 1)
199
+ def get_seniority_count(group_id:, deal_id:, request_options: nil)
200
+ Async do
201
+ response = @request_client.conn.get do |req|
202
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
203
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
204
+ req.headers = {
205
+ **(req.headers || {}),
206
+ **@request_client.get_headers,
207
+ **(request_options&.additional_headers || {})
208
+ }.compact
209
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
210
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
211
+ end
212
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
213
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
214
+ end
215
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/seniority-count"
216
+ end
217
+ parsed_json = JSON.parse(response.body)
218
+ parsed_json&.map do |item|
219
+ item = item.to_json
220
+ NewDemoApiClient::EndpointSeniorityCount.from_json(json_object: item)
221
+ end
222
+ end
223
+ end
224
+
225
+ # The function-level growth accounting for employees within the company. Measure
226
+ # how many users join, churn, or
227
+ # resurrect, at the function level, for each period there is data.
228
+ #
229
+ # @param group_id [Integer]
230
+ # @param deal_id [Integer]
231
+ # @param request_options [NewDemoApiClient::RequestOptions]
232
+ # @return [Array<NewDemoApiClient::FunctionLevelGrowthAccounting>]
233
+ # @example
234
+ # api = NewDemoApiClient::Client.new(
235
+ # base_url: "https://api.example.com",
236
+ # environment: NewDemoApiClient::Environment::DEFAULT,
237
+ # token: "YOUR_AUTH_TOKEN"
238
+ # )
239
+ # api.talent.get_team_growth_accounting(group_id: 1, deal_id: 1)
240
+ def get_team_growth_accounting(group_id:, deal_id:, request_options: nil)
241
+ Async do
242
+ response = @request_client.conn.get do |req|
243
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
244
+ req.headers["Authorization"] = request_options.token unless request_options&.token.nil?
245
+ req.headers = {
246
+ **(req.headers || {}),
247
+ **@request_client.get_headers,
248
+ **(request_options&.additional_headers || {})
249
+ }.compact
250
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
251
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
252
+ end
253
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
254
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
255
+ end
256
+ req.url "#{@request_client.get_url(request_options: request_options)}/api/v1/group/#{group_id}/deal/#{deal_id}/data/team-growth-accounting"
257
+ end
258
+ parsed_json = JSON.parse(response.body)
259
+ parsed_json&.map do |item|
260
+ item = item.to_json
261
+ NewDemoApiClient::FunctionLevelGrowthAccounting.from_json(json_object: item)
262
+ end
263
+ end
264
+ end
265
+ end
266
+ end