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