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,465 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module NewDemoApiClient
7
+ class BenchmarkQuantile
8
+ # @return [Float] Quantile
9
+ attr_reader :quantile
10
+ # @return [Float] Revenue
11
+ attr_reader :revenue
12
+ # @return [Float] Average Revenue (Rolling Q)
13
+ attr_reader :rolling3m_average_revenue
14
+ # @return [Float] Annualized Revenue
15
+ attr_reader :annualized_revenue
16
+ # @return [Float] Annualized Revenue (Rolling Q)
17
+ attr_reader :rolling3m_annualized_revenue
18
+ # @return [Float] Revenue Share of Top 20%
19
+ attr_reader :revenue_share_of_top20percent
20
+ # @return [Float] Revenue Share of Top 10 Users
21
+ attr_reader :revenue_share_of_top10count
22
+ # @return [Float] Average to Median Revenue
23
+ attr_reader :average_to_median
24
+ # @return [Float] Gini Coefficient
25
+ attr_reader :gini_coefficient
26
+ # @return [Float] Average Quick Ratio
27
+ attr_reader :lifetime_quick_ratio
28
+ # @return [Float] Average Gross Retention
29
+ attr_reader :lifetime_gross_retention
30
+ # @return [Float] Average Net Churn
31
+ attr_reader :lifetime_net_churn
32
+ # @return [Float] CMGR3
33
+ attr_reader :cmgr3
34
+ # @return [Float] CMGR6
35
+ attr_reader :cmgr6
36
+ # @return [Float] CMGR12
37
+ attr_reader :cmgr12
38
+ # @return [Float] YoY Growth
39
+ attr_reader :yoy
40
+ # @return [Float] Operating Margin
41
+ attr_reader :operating_margin
42
+ # @return [Float] Operating Margin (Rolling Q)
43
+ attr_reader :quarterly_operating_margin
44
+ # @return [Float] Gross Margin
45
+ attr_reader :gross_margin
46
+ # @return [Float] Gross Margin (Rolling Q)
47
+ attr_reader :quarterly_gross_margin
48
+ # @return [Float] Magic Number
49
+ attr_reader :magic_number
50
+ # @return [Float] Rule of 40
51
+ attr_reader :rule_of40
52
+ # @return [Float] Burn Multiple
53
+ attr_reader :burn_multiple
54
+ # @return [Float] Acquisition Spend
55
+ attr_reader :acquisition_spend
56
+ # @return [Float] Total OPEX
57
+ attr_reader :total_opex
58
+ # @return [Float] Logo Retention (6M)
59
+ attr_reader :logo_retention6m
60
+ # @return [Float] Logo Retention (12M)
61
+ attr_reader :logo_retention12m
62
+ # @return [Float] Revenue Retention (6M)
63
+ attr_reader :revenue_retention6m
64
+ # @return [Float] Revenue Retention (12M)
65
+ attr_reader :revenue_retention12m
66
+ # @return [Float] LTV6
67
+ attr_reader :ltv6m
68
+ # @return [Float] LTV12
69
+ attr_reader :ltv12m
70
+ # @return [Float] LTV6/CAC
71
+ attr_reader :ltv6cac
72
+ # @return [Float] LTV12/CAC
73
+ attr_reader :ltv12cac
74
+ # @return [Float] gmLTV6/CAC
75
+ attr_reader :gmltv6cac
76
+ # @return [Float] gmLTV12/CAC
77
+ attr_reader :gmltv12cac
78
+ # @return [Float] Average LTV6/CAC
79
+ attr_reader :lifetime_ltv6cac
80
+ # @return [Float] Average LTV12/CAC
81
+ attr_reader :lifetime_ltv12cac
82
+ # @return [Float] Average gmLTV6/CAC
83
+ attr_reader :lifetime_gmltv6cac
84
+ # @return [Float] Average gmLTV12/CAC
85
+ attr_reader :lifetime_gmltv12cac
86
+ # @return [Float] CAC
87
+ attr_reader :cac
88
+ # @return [Float] IRR
89
+ attr_reader :irr
90
+ # @return [Float] Months to Payback
91
+ attr_reader :periods_to_payback
92
+ # @return [Float] Number of Employees
93
+ attr_reader :employee_count
94
+ # @return [Float] Cumulative Years of Effort
95
+ attr_reader :cumulative_person_years
96
+ # @return [Float] Employee Retention (1Y)
97
+ attr_reader :employee_retention1yr
98
+ # @return [Float] Employee Retention (2Y)
99
+ attr_reader :employee_retention2yr
100
+ # @return [Float] Average Employee Experience (Years)
101
+ attr_reader :average_years_of_experience
102
+ # @return [Float] Lifetime Employee Retention
103
+ attr_reader :lifetime_employee_retention
104
+ # @return [Float] Sales + Marketing (% Employees)
105
+ attr_reader :percent_employees_sales_and_marketing
106
+ # @return [Float] Fully-Loaded Employee Cost
107
+ attr_reader :fully_loaded_employee_cost
108
+ # @return [Float] Annualized Revenue per Employee
109
+ attr_reader :annualized_revenue_per_employee
110
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
111
+ attr_reader :additional_properties
112
+ # @return [Object]
113
+ attr_reader :_field_set
114
+ protected :_field_set
115
+
116
+ OMIT = Object.new
117
+
118
+ # @param quantile [Float] Quantile
119
+ # @param revenue [Float] Revenue
120
+ # @param rolling3m_average_revenue [Float] Average Revenue (Rolling Q)
121
+ # @param annualized_revenue [Float] Annualized Revenue
122
+ # @param rolling3m_annualized_revenue [Float] Annualized Revenue (Rolling Q)
123
+ # @param revenue_share_of_top20percent [Float] Revenue Share of Top 20%
124
+ # @param revenue_share_of_top10count [Float] Revenue Share of Top 10 Users
125
+ # @param average_to_median [Float] Average to Median Revenue
126
+ # @param gini_coefficient [Float] Gini Coefficient
127
+ # @param lifetime_quick_ratio [Float] Average Quick Ratio
128
+ # @param lifetime_gross_retention [Float] Average Gross Retention
129
+ # @param lifetime_net_churn [Float] Average Net Churn
130
+ # @param cmgr3 [Float] CMGR3
131
+ # @param cmgr6 [Float] CMGR6
132
+ # @param cmgr12 [Float] CMGR12
133
+ # @param yoy [Float] YoY Growth
134
+ # @param operating_margin [Float] Operating Margin
135
+ # @param quarterly_operating_margin [Float] Operating Margin (Rolling Q)
136
+ # @param gross_margin [Float] Gross Margin
137
+ # @param quarterly_gross_margin [Float] Gross Margin (Rolling Q)
138
+ # @param magic_number [Float] Magic Number
139
+ # @param rule_of40 [Float] Rule of 40
140
+ # @param burn_multiple [Float] Burn Multiple
141
+ # @param acquisition_spend [Float] Acquisition Spend
142
+ # @param total_opex [Float] Total OPEX
143
+ # @param logo_retention6m [Float] Logo Retention (6M)
144
+ # @param logo_retention12m [Float] Logo Retention (12M)
145
+ # @param revenue_retention6m [Float] Revenue Retention (6M)
146
+ # @param revenue_retention12m [Float] Revenue Retention (12M)
147
+ # @param ltv6m [Float] LTV6
148
+ # @param ltv12m [Float] LTV12
149
+ # @param ltv6cac [Float] LTV6/CAC
150
+ # @param ltv12cac [Float] LTV12/CAC
151
+ # @param gmltv6cac [Float] gmLTV6/CAC
152
+ # @param gmltv12cac [Float] gmLTV12/CAC
153
+ # @param lifetime_ltv6cac [Float] Average LTV6/CAC
154
+ # @param lifetime_ltv12cac [Float] Average LTV12/CAC
155
+ # @param lifetime_gmltv6cac [Float] Average gmLTV6/CAC
156
+ # @param lifetime_gmltv12cac [Float] Average gmLTV12/CAC
157
+ # @param cac [Float] CAC
158
+ # @param irr [Float] IRR
159
+ # @param periods_to_payback [Float] Months to Payback
160
+ # @param employee_count [Float] Number of Employees
161
+ # @param cumulative_person_years [Float] Cumulative Years of Effort
162
+ # @param employee_retention1yr [Float] Employee Retention (1Y)
163
+ # @param employee_retention2yr [Float] Employee Retention (2Y)
164
+ # @param average_years_of_experience [Float] Average Employee Experience (Years)
165
+ # @param lifetime_employee_retention [Float] Lifetime Employee Retention
166
+ # @param percent_employees_sales_and_marketing [Float] Sales + Marketing (% Employees)
167
+ # @param fully_loaded_employee_cost [Float] Fully-Loaded Employee Cost
168
+ # @param annualized_revenue_per_employee [Float] Annualized Revenue per Employee
169
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
170
+ # @return [NewDemoApiClient::BenchmarkQuantile]
171
+ def initialize(quantile:, revenue: OMIT, rolling3m_average_revenue: OMIT, annualized_revenue: OMIT,
172
+ rolling3m_annualized_revenue: OMIT, revenue_share_of_top20percent: OMIT, revenue_share_of_top10count: OMIT, average_to_median: OMIT, gini_coefficient: OMIT, lifetime_quick_ratio: OMIT, lifetime_gross_retention: OMIT, lifetime_net_churn: OMIT, cmgr3: OMIT, cmgr6: OMIT, cmgr12: OMIT, yoy: OMIT, operating_margin: OMIT, quarterly_operating_margin: OMIT, gross_margin: OMIT, quarterly_gross_margin: OMIT, magic_number: OMIT, rule_of40: OMIT, burn_multiple: OMIT, acquisition_spend: OMIT, total_opex: OMIT, logo_retention6m: OMIT, logo_retention12m: OMIT, revenue_retention6m: OMIT, revenue_retention12m: OMIT, ltv6m: OMIT, ltv12m: OMIT, ltv6cac: OMIT, ltv12cac: OMIT, gmltv6cac: OMIT, gmltv12cac: OMIT, lifetime_ltv6cac: OMIT, lifetime_ltv12cac: OMIT, lifetime_gmltv6cac: OMIT, lifetime_gmltv12cac: OMIT, cac: OMIT, irr: OMIT, periods_to_payback: OMIT, employee_count: OMIT, cumulative_person_years: OMIT, employee_retention1yr: OMIT, employee_retention2yr: OMIT, average_years_of_experience: OMIT, lifetime_employee_retention: OMIT, percent_employees_sales_and_marketing: OMIT, fully_loaded_employee_cost: OMIT, annualized_revenue_per_employee: OMIT, additional_properties: nil)
173
+ @quantile = quantile
174
+ @revenue = revenue if revenue != OMIT
175
+ @rolling3m_average_revenue = rolling3m_average_revenue if rolling3m_average_revenue != OMIT
176
+ @annualized_revenue = annualized_revenue if annualized_revenue != OMIT
177
+ @rolling3m_annualized_revenue = rolling3m_annualized_revenue if rolling3m_annualized_revenue != OMIT
178
+ @revenue_share_of_top20percent = revenue_share_of_top20percent if revenue_share_of_top20percent != OMIT
179
+ @revenue_share_of_top10count = revenue_share_of_top10count if revenue_share_of_top10count != OMIT
180
+ @average_to_median = average_to_median if average_to_median != OMIT
181
+ @gini_coefficient = gini_coefficient if gini_coefficient != OMIT
182
+ @lifetime_quick_ratio = lifetime_quick_ratio if lifetime_quick_ratio != OMIT
183
+ @lifetime_gross_retention = lifetime_gross_retention if lifetime_gross_retention != OMIT
184
+ @lifetime_net_churn = lifetime_net_churn if lifetime_net_churn != OMIT
185
+ @cmgr3 = cmgr3 if cmgr3 != OMIT
186
+ @cmgr6 = cmgr6 if cmgr6 != OMIT
187
+ @cmgr12 = cmgr12 if cmgr12 != OMIT
188
+ @yoy = yoy if yoy != OMIT
189
+ @operating_margin = operating_margin if operating_margin != OMIT
190
+ @quarterly_operating_margin = quarterly_operating_margin if quarterly_operating_margin != OMIT
191
+ @gross_margin = gross_margin if gross_margin != OMIT
192
+ @quarterly_gross_margin = quarterly_gross_margin if quarterly_gross_margin != OMIT
193
+ @magic_number = magic_number if magic_number != OMIT
194
+ @rule_of40 = rule_of40 if rule_of40 != OMIT
195
+ @burn_multiple = burn_multiple if burn_multiple != OMIT
196
+ @acquisition_spend = acquisition_spend if acquisition_spend != OMIT
197
+ @total_opex = total_opex if total_opex != OMIT
198
+ @logo_retention6m = logo_retention6m if logo_retention6m != OMIT
199
+ @logo_retention12m = logo_retention12m if logo_retention12m != OMIT
200
+ @revenue_retention6m = revenue_retention6m if revenue_retention6m != OMIT
201
+ @revenue_retention12m = revenue_retention12m if revenue_retention12m != OMIT
202
+ @ltv6m = ltv6m if ltv6m != OMIT
203
+ @ltv12m = ltv12m if ltv12m != OMIT
204
+ @ltv6cac = ltv6cac if ltv6cac != OMIT
205
+ @ltv12cac = ltv12cac if ltv12cac != OMIT
206
+ @gmltv6cac = gmltv6cac if gmltv6cac != OMIT
207
+ @gmltv12cac = gmltv12cac if gmltv12cac != OMIT
208
+ @lifetime_ltv6cac = lifetime_ltv6cac if lifetime_ltv6cac != OMIT
209
+ @lifetime_ltv12cac = lifetime_ltv12cac if lifetime_ltv12cac != OMIT
210
+ @lifetime_gmltv6cac = lifetime_gmltv6cac if lifetime_gmltv6cac != OMIT
211
+ @lifetime_gmltv12cac = lifetime_gmltv12cac if lifetime_gmltv12cac != OMIT
212
+ @cac = cac if cac != OMIT
213
+ @irr = irr if irr != OMIT
214
+ @periods_to_payback = periods_to_payback if periods_to_payback != OMIT
215
+ @employee_count = employee_count if employee_count != OMIT
216
+ @cumulative_person_years = cumulative_person_years if cumulative_person_years != OMIT
217
+ @employee_retention1yr = employee_retention1yr if employee_retention1yr != OMIT
218
+ @employee_retention2yr = employee_retention2yr if employee_retention2yr != OMIT
219
+ @average_years_of_experience = average_years_of_experience if average_years_of_experience != OMIT
220
+ @lifetime_employee_retention = lifetime_employee_retention if lifetime_employee_retention != OMIT
221
+ if percent_employees_sales_and_marketing != OMIT
222
+ @percent_employees_sales_and_marketing = percent_employees_sales_and_marketing
223
+ end
224
+ @fully_loaded_employee_cost = fully_loaded_employee_cost if fully_loaded_employee_cost != OMIT
225
+ @annualized_revenue_per_employee = annualized_revenue_per_employee if annualized_revenue_per_employee != OMIT
226
+ @additional_properties = additional_properties
227
+ @_field_set = {
228
+ "quantile": quantile,
229
+ "revenue": revenue,
230
+ "rolling_3m_average_revenue": rolling3m_average_revenue,
231
+ "annualized_revenue": annualized_revenue,
232
+ "rolling_3m_annualized_revenue": rolling3m_annualized_revenue,
233
+ "revenue_share_of_top_20_percent": revenue_share_of_top20percent,
234
+ "revenue_share_of_top_10_count": revenue_share_of_top10count,
235
+ "average_to_median": average_to_median,
236
+ "gini_coefficient": gini_coefficient,
237
+ "lifetime_quick_ratio": lifetime_quick_ratio,
238
+ "lifetime_gross_retention": lifetime_gross_retention,
239
+ "lifetime_net_churn": lifetime_net_churn,
240
+ "cmgr3": cmgr3,
241
+ "cmgr6": cmgr6,
242
+ "cmgr12": cmgr12,
243
+ "yoy": yoy,
244
+ "operating_margin": operating_margin,
245
+ "quarterly_operating_margin": quarterly_operating_margin,
246
+ "gross_margin": gross_margin,
247
+ "quarterly_gross_margin": quarterly_gross_margin,
248
+ "magic_number": magic_number,
249
+ "rule_of_40": rule_of40,
250
+ "burn_multiple": burn_multiple,
251
+ "acquisition_spend": acquisition_spend,
252
+ "total_opex": total_opex,
253
+ "logo_retention_6m": logo_retention6m,
254
+ "logo_retention_12m": logo_retention12m,
255
+ "revenue_retention_6m": revenue_retention6m,
256
+ "revenue_retention_12m": revenue_retention12m,
257
+ "ltv_6m": ltv6m,
258
+ "ltv_12m": ltv12m,
259
+ "ltv6_cac": ltv6cac,
260
+ "ltv12_cac": ltv12cac,
261
+ "gmltv6_cac": gmltv6cac,
262
+ "gmltv12_cac": gmltv12cac,
263
+ "lifetime_ltv6_cac": lifetime_ltv6cac,
264
+ "lifetime_ltv12_cac": lifetime_ltv12cac,
265
+ "lifetime_gmltv6_cac": lifetime_gmltv6cac,
266
+ "lifetime_gmltv12_cac": lifetime_gmltv12cac,
267
+ "cac": cac,
268
+ "irr": irr,
269
+ "periods_to_payback": periods_to_payback,
270
+ "employee_count": employee_count,
271
+ "cumulative_person_years": cumulative_person_years,
272
+ "employee_retention_1yr": employee_retention1yr,
273
+ "employee_retention_2yr": employee_retention2yr,
274
+ "average_years_of_experience": average_years_of_experience,
275
+ "lifetime_employee_retention": lifetime_employee_retention,
276
+ "percent_employees_sales_and_marketing": percent_employees_sales_and_marketing,
277
+ "fully_loaded_employee_cost": fully_loaded_employee_cost,
278
+ "annualized_revenue_per_employee": annualized_revenue_per_employee
279
+ }.reject do |_k, v|
280
+ v == OMIT
281
+ end
282
+ end
283
+
284
+ # Deserialize a JSON object to an instance of BenchmarkQuantile
285
+ #
286
+ # @param json_object [String]
287
+ # @return [NewDemoApiClient::BenchmarkQuantile]
288
+ def self.from_json(json_object:)
289
+ struct = JSON.parse(json_object, object_class: OpenStruct)
290
+ parsed_json = JSON.parse(json_object)
291
+ quantile = parsed_json["quantile"]
292
+ revenue = parsed_json["revenue"]
293
+ rolling3m_average_revenue = parsed_json["rolling_3m_average_revenue"]
294
+ annualized_revenue = parsed_json["annualized_revenue"]
295
+ rolling3m_annualized_revenue = parsed_json["rolling_3m_annualized_revenue"]
296
+ revenue_share_of_top20percent = parsed_json["revenue_share_of_top_20_percent"]
297
+ revenue_share_of_top10count = parsed_json["revenue_share_of_top_10_count"]
298
+ average_to_median = parsed_json["average_to_median"]
299
+ gini_coefficient = parsed_json["gini_coefficient"]
300
+ lifetime_quick_ratio = parsed_json["lifetime_quick_ratio"]
301
+ lifetime_gross_retention = parsed_json["lifetime_gross_retention"]
302
+ lifetime_net_churn = parsed_json["lifetime_net_churn"]
303
+ cmgr3 = parsed_json["cmgr3"]
304
+ cmgr6 = parsed_json["cmgr6"]
305
+ cmgr12 = parsed_json["cmgr12"]
306
+ yoy = parsed_json["yoy"]
307
+ operating_margin = parsed_json["operating_margin"]
308
+ quarterly_operating_margin = parsed_json["quarterly_operating_margin"]
309
+ gross_margin = parsed_json["gross_margin"]
310
+ quarterly_gross_margin = parsed_json["quarterly_gross_margin"]
311
+ magic_number = parsed_json["magic_number"]
312
+ rule_of40 = parsed_json["rule_of_40"]
313
+ burn_multiple = parsed_json["burn_multiple"]
314
+ acquisition_spend = parsed_json["acquisition_spend"]
315
+ total_opex = parsed_json["total_opex"]
316
+ logo_retention6m = parsed_json["logo_retention_6m"]
317
+ logo_retention12m = parsed_json["logo_retention_12m"]
318
+ revenue_retention6m = parsed_json["revenue_retention_6m"]
319
+ revenue_retention12m = parsed_json["revenue_retention_12m"]
320
+ ltv6m = parsed_json["ltv_6m"]
321
+ ltv12m = parsed_json["ltv_12m"]
322
+ ltv6cac = parsed_json["ltv6_cac"]
323
+ ltv12cac = parsed_json["ltv12_cac"]
324
+ gmltv6cac = parsed_json["gmltv6_cac"]
325
+ gmltv12cac = parsed_json["gmltv12_cac"]
326
+ lifetime_ltv6cac = parsed_json["lifetime_ltv6_cac"]
327
+ lifetime_ltv12cac = parsed_json["lifetime_ltv12_cac"]
328
+ lifetime_gmltv6cac = parsed_json["lifetime_gmltv6_cac"]
329
+ lifetime_gmltv12cac = parsed_json["lifetime_gmltv12_cac"]
330
+ cac = parsed_json["cac"]
331
+ irr = parsed_json["irr"]
332
+ periods_to_payback = parsed_json["periods_to_payback"]
333
+ employee_count = parsed_json["employee_count"]
334
+ cumulative_person_years = parsed_json["cumulative_person_years"]
335
+ employee_retention1yr = parsed_json["employee_retention_1yr"]
336
+ employee_retention2yr = parsed_json["employee_retention_2yr"]
337
+ average_years_of_experience = parsed_json["average_years_of_experience"]
338
+ lifetime_employee_retention = parsed_json["lifetime_employee_retention"]
339
+ percent_employees_sales_and_marketing = parsed_json["percent_employees_sales_and_marketing"]
340
+ fully_loaded_employee_cost = parsed_json["fully_loaded_employee_cost"]
341
+ annualized_revenue_per_employee = parsed_json["annualized_revenue_per_employee"]
342
+ new(
343
+ quantile: quantile,
344
+ revenue: revenue,
345
+ rolling3m_average_revenue: rolling3m_average_revenue,
346
+ annualized_revenue: annualized_revenue,
347
+ rolling3m_annualized_revenue: rolling3m_annualized_revenue,
348
+ revenue_share_of_top20percent: revenue_share_of_top20percent,
349
+ revenue_share_of_top10count: revenue_share_of_top10count,
350
+ average_to_median: average_to_median,
351
+ gini_coefficient: gini_coefficient,
352
+ lifetime_quick_ratio: lifetime_quick_ratio,
353
+ lifetime_gross_retention: lifetime_gross_retention,
354
+ lifetime_net_churn: lifetime_net_churn,
355
+ cmgr3: cmgr3,
356
+ cmgr6: cmgr6,
357
+ cmgr12: cmgr12,
358
+ yoy: yoy,
359
+ operating_margin: operating_margin,
360
+ quarterly_operating_margin: quarterly_operating_margin,
361
+ gross_margin: gross_margin,
362
+ quarterly_gross_margin: quarterly_gross_margin,
363
+ magic_number: magic_number,
364
+ rule_of40: rule_of40,
365
+ burn_multiple: burn_multiple,
366
+ acquisition_spend: acquisition_spend,
367
+ total_opex: total_opex,
368
+ logo_retention6m: logo_retention6m,
369
+ logo_retention12m: logo_retention12m,
370
+ revenue_retention6m: revenue_retention6m,
371
+ revenue_retention12m: revenue_retention12m,
372
+ ltv6m: ltv6m,
373
+ ltv12m: ltv12m,
374
+ ltv6cac: ltv6cac,
375
+ ltv12cac: ltv12cac,
376
+ gmltv6cac: gmltv6cac,
377
+ gmltv12cac: gmltv12cac,
378
+ lifetime_ltv6cac: lifetime_ltv6cac,
379
+ lifetime_ltv12cac: lifetime_ltv12cac,
380
+ lifetime_gmltv6cac: lifetime_gmltv6cac,
381
+ lifetime_gmltv12cac: lifetime_gmltv12cac,
382
+ cac: cac,
383
+ irr: irr,
384
+ periods_to_payback: periods_to_payback,
385
+ employee_count: employee_count,
386
+ cumulative_person_years: cumulative_person_years,
387
+ employee_retention1yr: employee_retention1yr,
388
+ employee_retention2yr: employee_retention2yr,
389
+ average_years_of_experience: average_years_of_experience,
390
+ lifetime_employee_retention: lifetime_employee_retention,
391
+ percent_employees_sales_and_marketing: percent_employees_sales_and_marketing,
392
+ fully_loaded_employee_cost: fully_loaded_employee_cost,
393
+ annualized_revenue_per_employee: annualized_revenue_per_employee,
394
+ additional_properties: struct
395
+ )
396
+ end
397
+
398
+ # Serialize an instance of BenchmarkQuantile to a JSON object
399
+ #
400
+ # @return [String]
401
+ def to_json(*_args)
402
+ @_field_set&.to_json
403
+ end
404
+
405
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
406
+ # hash and check each fields type against the current object's property
407
+ # definitions.
408
+ #
409
+ # @param obj [Object]
410
+ # @return [Void]
411
+ def self.validate_raw(obj:)
412
+ obj.quantile.is_a?(Float) != false || raise("Passed value for field obj.quantile is not the expected type, validation failed.")
413
+ obj.revenue&.is_a?(Float) != false || raise("Passed value for field obj.revenue is not the expected type, validation failed.")
414
+ obj.rolling3m_average_revenue&.is_a?(Float) != false || raise("Passed value for field obj.rolling3m_average_revenue is not the expected type, validation failed.")
415
+ obj.annualized_revenue&.is_a?(Float) != false || raise("Passed value for field obj.annualized_revenue is not the expected type, validation failed.")
416
+ obj.rolling3m_annualized_revenue&.is_a?(Float) != false || raise("Passed value for field obj.rolling3m_annualized_revenue is not the expected type, validation failed.")
417
+ obj.revenue_share_of_top20percent&.is_a?(Float) != false || raise("Passed value for field obj.revenue_share_of_top20percent is not the expected type, validation failed.")
418
+ obj.revenue_share_of_top10count&.is_a?(Float) != false || raise("Passed value for field obj.revenue_share_of_top10count is not the expected type, validation failed.")
419
+ obj.average_to_median&.is_a?(Float) != false || raise("Passed value for field obj.average_to_median is not the expected type, validation failed.")
420
+ obj.gini_coefficient&.is_a?(Float) != false || raise("Passed value for field obj.gini_coefficient is not the expected type, validation failed.")
421
+ obj.lifetime_quick_ratio&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_quick_ratio is not the expected type, validation failed.")
422
+ obj.lifetime_gross_retention&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_gross_retention is not the expected type, validation failed.")
423
+ obj.lifetime_net_churn&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_net_churn is not the expected type, validation failed.")
424
+ obj.cmgr3&.is_a?(Float) != false || raise("Passed value for field obj.cmgr3 is not the expected type, validation failed.")
425
+ obj.cmgr6&.is_a?(Float) != false || raise("Passed value for field obj.cmgr6 is not the expected type, validation failed.")
426
+ obj.cmgr12&.is_a?(Float) != false || raise("Passed value for field obj.cmgr12 is not the expected type, validation failed.")
427
+ obj.yoy&.is_a?(Float) != false || raise("Passed value for field obj.yoy is not the expected type, validation failed.")
428
+ obj.operating_margin&.is_a?(Float) != false || raise("Passed value for field obj.operating_margin is not the expected type, validation failed.")
429
+ obj.quarterly_operating_margin&.is_a?(Float) != false || raise("Passed value for field obj.quarterly_operating_margin is not the expected type, validation failed.")
430
+ obj.gross_margin&.is_a?(Float) != false || raise("Passed value for field obj.gross_margin is not the expected type, validation failed.")
431
+ obj.quarterly_gross_margin&.is_a?(Float) != false || raise("Passed value for field obj.quarterly_gross_margin is not the expected type, validation failed.")
432
+ obj.magic_number&.is_a?(Float) != false || raise("Passed value for field obj.magic_number is not the expected type, validation failed.")
433
+ obj.rule_of40&.is_a?(Float) != false || raise("Passed value for field obj.rule_of40 is not the expected type, validation failed.")
434
+ obj.burn_multiple&.is_a?(Float) != false || raise("Passed value for field obj.burn_multiple is not the expected type, validation failed.")
435
+ obj.acquisition_spend&.is_a?(Float) != false || raise("Passed value for field obj.acquisition_spend is not the expected type, validation failed.")
436
+ obj.total_opex&.is_a?(Float) != false || raise("Passed value for field obj.total_opex is not the expected type, validation failed.")
437
+ obj.logo_retention6m&.is_a?(Float) != false || raise("Passed value for field obj.logo_retention6m is not the expected type, validation failed.")
438
+ obj.logo_retention12m&.is_a?(Float) != false || raise("Passed value for field obj.logo_retention12m is not the expected type, validation failed.")
439
+ obj.revenue_retention6m&.is_a?(Float) != false || raise("Passed value for field obj.revenue_retention6m is not the expected type, validation failed.")
440
+ obj.revenue_retention12m&.is_a?(Float) != false || raise("Passed value for field obj.revenue_retention12m is not the expected type, validation failed.")
441
+ obj.ltv6m&.is_a?(Float) != false || raise("Passed value for field obj.ltv6m is not the expected type, validation failed.")
442
+ obj.ltv12m&.is_a?(Float) != false || raise("Passed value for field obj.ltv12m is not the expected type, validation failed.")
443
+ obj.ltv6cac&.is_a?(Float) != false || raise("Passed value for field obj.ltv6cac is not the expected type, validation failed.")
444
+ obj.ltv12cac&.is_a?(Float) != false || raise("Passed value for field obj.ltv12cac is not the expected type, validation failed.")
445
+ obj.gmltv6cac&.is_a?(Float) != false || raise("Passed value for field obj.gmltv6cac is not the expected type, validation failed.")
446
+ obj.gmltv12cac&.is_a?(Float) != false || raise("Passed value for field obj.gmltv12cac is not the expected type, validation failed.")
447
+ obj.lifetime_ltv6cac&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_ltv6cac is not the expected type, validation failed.")
448
+ obj.lifetime_ltv12cac&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_ltv12cac is not the expected type, validation failed.")
449
+ obj.lifetime_gmltv6cac&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_gmltv6cac is not the expected type, validation failed.")
450
+ obj.lifetime_gmltv12cac&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_gmltv12cac is not the expected type, validation failed.")
451
+ obj.cac&.is_a?(Float) != false || raise("Passed value for field obj.cac is not the expected type, validation failed.")
452
+ obj.irr&.is_a?(Float) != false || raise("Passed value for field obj.irr is not the expected type, validation failed.")
453
+ obj.periods_to_payback&.is_a?(Float) != false || raise("Passed value for field obj.periods_to_payback is not the expected type, validation failed.")
454
+ obj.employee_count&.is_a?(Float) != false || raise("Passed value for field obj.employee_count is not the expected type, validation failed.")
455
+ obj.cumulative_person_years&.is_a?(Float) != false || raise("Passed value for field obj.cumulative_person_years is not the expected type, validation failed.")
456
+ obj.employee_retention1yr&.is_a?(Float) != false || raise("Passed value for field obj.employee_retention1yr is not the expected type, validation failed.")
457
+ obj.employee_retention2yr&.is_a?(Float) != false || raise("Passed value for field obj.employee_retention2yr is not the expected type, validation failed.")
458
+ obj.average_years_of_experience&.is_a?(Float) != false || raise("Passed value for field obj.average_years_of_experience is not the expected type, validation failed.")
459
+ obj.lifetime_employee_retention&.is_a?(Float) != false || raise("Passed value for field obj.lifetime_employee_retention is not the expected type, validation failed.")
460
+ obj.percent_employees_sales_and_marketing&.is_a?(Float) != false || raise("Passed value for field obj.percent_employees_sales_and_marketing is not the expected type, validation failed.")
461
+ obj.fully_loaded_employee_cost&.is_a?(Float) != false || raise("Passed value for field obj.fully_loaded_employee_cost is not the expected type, validation failed.")
462
+ obj.annualized_revenue_per_employee&.is_a?(Float) != false || raise("Passed value for field obj.annualized_revenue_per_employee is not the expected type, validation failed.")
463
+ end
464
+ end
465
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "category_metadata"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module NewDemoApiClient
8
+ class CategoriesMetadataResponse
9
+ # @return [Array<NewDemoApiClient::CategoryMetadata>] A list of major benchmark categories.
10
+ attr_reader :major
11
+ # @return [Array<NewDemoApiClient::CategoryMetadata>] A list of minor benchmark categories.
12
+ attr_reader :minor
13
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
14
+ attr_reader :additional_properties
15
+ # @return [Object]
16
+ attr_reader :_field_set
17
+ protected :_field_set
18
+
19
+ OMIT = Object.new
20
+
21
+ # @param major [Array<NewDemoApiClient::CategoryMetadata>] A list of major benchmark categories.
22
+ # @param minor [Array<NewDemoApiClient::CategoryMetadata>] A list of minor benchmark categories.
23
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
24
+ # @return [NewDemoApiClient::CategoriesMetadataResponse]
25
+ def initialize(major:, minor:, additional_properties: nil)
26
+ @major = major
27
+ @minor = minor
28
+ @additional_properties = additional_properties
29
+ @_field_set = { "major": major, "minor": minor }
30
+ end
31
+
32
+ # Deserialize a JSON object to an instance of CategoriesMetadataResponse
33
+ #
34
+ # @param json_object [String]
35
+ # @return [NewDemoApiClient::CategoriesMetadataResponse]
36
+ def self.from_json(json_object:)
37
+ struct = JSON.parse(json_object, object_class: OpenStruct)
38
+ parsed_json = JSON.parse(json_object)
39
+ major = parsed_json["major"]&.map do |item|
40
+ item = item.to_json
41
+ NewDemoApiClient::CategoryMetadata.from_json(json_object: item)
42
+ end
43
+ minor = parsed_json["minor"]&.map do |item|
44
+ item = item.to_json
45
+ NewDemoApiClient::CategoryMetadata.from_json(json_object: item)
46
+ end
47
+ new(
48
+ major: major,
49
+ minor: minor,
50
+ additional_properties: struct
51
+ )
52
+ end
53
+
54
+ # Serialize an instance of CategoriesMetadataResponse to a JSON object
55
+ #
56
+ # @return [String]
57
+ def to_json(*_args)
58
+ @_field_set&.to_json
59
+ end
60
+
61
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
62
+ # hash and check each fields type against the current object's property
63
+ # definitions.
64
+ #
65
+ # @param obj [Object]
66
+ # @return [Void]
67
+ def self.validate_raw(obj:)
68
+ obj.major.is_a?(Array) != false || raise("Passed value for field obj.major is not the expected type, validation failed.")
69
+ obj.minor.is_a?(Array) != false || raise("Passed value for field obj.minor is not the expected type, validation failed.")
70
+ end
71
+ end
72
+ end