proton_api 1.8.0 → 1.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (304) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +35 -205
  3. data/lib/proton_api.rb +10 -2
  4. data/lib/proton_api/api/annuities_api.rb +2 -2
  5. data/lib/proton_api/api/business_financial_management_api.rb +2 -2
  6. data/lib/proton_api/api/cards_api.rb +56 -2
  7. data/lib/proton_api/api/financial_health_api.rb +2 -2
  8. data/lib/proton_api/api/financial_planning_api.rb +2 -2
  9. data/lib/proton_api/api/goals_api.rb +2 -2
  10. data/lib/proton_api/api/life_insurance_api.rb +2 -2
  11. data/lib/proton_api/api/personal_financial_management_api.rb +56 -2
  12. data/lib/proton_api/api/portfolio_construction_api.rb +2 -2
  13. data/lib/proton_api/api/portfolio_management_api.rb +2 -2
  14. data/lib/proton_api/api/risk_scoring_api.rb +2 -2
  15. data/lib/proton_api/api/simulations_api.rb +2 -2
  16. data/lib/proton_api/api/util_api.rb +185 -0
  17. data/lib/proton_api/api_client.rb +6 -6
  18. data/lib/proton_api/api_error.rb +2 -2
  19. data/lib/proton_api/configuration.rb +3 -3
  20. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +25 -25
  21. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +138 -141
  22. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +129 -132
  23. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +138 -141
  24. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +138 -141
  25. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +138 -141
  26. data/lib/proton_api/models/annuity_deposit_schedule.rb +33 -36
  27. data/lib/proton_api/models/answer.rb +186 -0
  28. data/lib/proton_api/models/backtest_request.rb +56 -59
  29. data/lib/proton_api/models/beneficiary_bequest_config.rb +32 -35
  30. data/lib/proton_api/models/budget_aggregation_account.rb +7 -10
  31. data/lib/proton_api/models/budget_calculator_request.rb +85 -66
  32. data/lib/proton_api/models/budget_component.rb +25 -28
  33. data/lib/proton_api/models/budget_details.rb +75 -78
  34. data/lib/proton_api/models/business_financial_health_check_request.rb +172 -166
  35. data/lib/proton_api/models/business_invoice_analysis_request.rb +79 -73
  36. data/lib/proton_api/models/calculator_deposit_schedule.rb +22 -25
  37. data/lib/proton_api/models/calculator_deposit_schedule1.rb +33 -36
  38. data/lib/proton_api/models/card_analysis_request.rb +372 -0
  39. data/lib/proton_api/models/card_limit_check_request.rb +42 -14
  40. data/lib/proton_api/models/card_transaction_authorization_request.rb +143 -80
  41. data/lib/proton_api/models/cash_analysis_request.rb +82 -63
  42. data/lib/proton_api/models/cash_flow_analysis_request.rb +104 -76
  43. data/lib/proton_api/models/children_education_config.rb +7 -10
  44. data/lib/proton_api/models/customer_analysis_request.rb +60 -54
  45. data/lib/proton_api/models/decision_tree_result_request.rb +236 -0
  46. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +28 -31
  47. data/lib/proton_api/models/dimensional_risk_score_request.rb +52 -55
  48. data/lib/proton_api/models/diversification_score_request.rb +59 -62
  49. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +143 -146
  50. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +170 -173
  51. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +136 -139
  52. data/lib/proton_api/models/education_config.rb +44 -47
  53. data/lib/proton_api/models/emergency_fund_calculator_request.rb +182 -185
  54. data/lib/proton_api/models/event_study_request.rb +64 -67
  55. data/lib/proton_api/models/fee_analysis_request.rb +42 -34
  56. data/lib/proton_api/models/financial_health_check_request.rb +109 -112
  57. data/lib/proton_api/models/financial_picture_request.rb +53 -52
  58. data/lib/proton_api/models/financial_statement_analysis_request.rb +140 -134
  59. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +271 -274
  60. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +218 -221
  61. data/lib/proton_api/models/goal_accumulation_status_request.rb +218 -221
  62. data/lib/proton_api/models/goal_config.rb +35 -38
  63. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +293 -296
  64. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +242 -245
  65. data/lib/proton_api/models/goal_decumulation_status_request.rb +242 -245
  66. data/lib/proton_api/models/goal_withdrawal_config.rb +82 -85
  67. data/lib/proton_api/models/guaranteed_rate_benefit.rb +51 -54
  68. data/lib/proton_api/models/income_config.rb +37 -40
  69. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +152 -155
  70. data/lib/proton_api/models/location.rb +183 -0
  71. data/lib/proton_api/models/monte_carlo_request.rb +157 -160
  72. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +46 -49
  73. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +46 -49
  74. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +71 -74
  75. data/lib/proton_api/models/mvo_request.rb +88 -91
  76. data/lib/proton_api/models/opt_config.rb +54 -57
  77. data/lib/proton_api/models/opt_config1.rb +29 -32
  78. data/lib/proton_api/models/order_rebalance_request.rb +398 -0
  79. data/lib/proton_api/models/performance_calculator_request.rb +687 -0
  80. data/lib/proton_api/models/periods.rb +7 -10
  81. data/lib/proton_api/models/portfolio_optimization_score_request.rb +68 -71
  82. data/lib/proton_api/models/portfolio_what_if_request.rb +71 -74
  83. data/lib/proton_api/models/purchase_calculator_amount_request.rb +112 -115
  84. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +136 -139
  85. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +100 -103
  86. data/lib/proton_api/models/ratio_targets.rb +79 -82
  87. data/lib/proton_api/models/ratio_targets1.rb +38 -41
  88. data/lib/proton_api/models/rebalancing_signal_request.rb +26 -29
  89. data/lib/proton_api/models/recommendation_config.rb +104 -107
  90. data/lib/proton_api/models/recommendation_config1.rb +100 -103
  91. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +106 -76
  92. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +148 -151
  93. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +119 -122
  94. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +132 -135
  95. data/lib/proton_api/models/risk_allocation_request.rb +53 -56
  96. data/lib/proton_api/models/risk_score_request.rb +37 -40
  97. data/lib/proton_api/models/savings_calculator_request.rb +100 -103
  98. data/lib/proton_api/models/savings_deposit_schedule.rb +22 -25
  99. data/lib/proton_api/models/scenario_analysis_request.rb +81 -84
  100. data/lib/proton_api/models/sensitivity_analysis_request.rb +77 -80
  101. data/lib/proton_api/models/sensitivity_factor.rb +58 -61
  102. data/lib/proton_api/models/settings.rb +38 -41
  103. data/lib/proton_api/models/spending_analysis_request.rb +505 -0
  104. data/lib/proton_api/models/variable_annuity_request.rb +284 -287
  105. data/lib/proton_api/models/w_config.rb +77 -80
  106. data/lib/proton_api/models/w_config1.rb +66 -69
  107. data/lib/proton_api/version.rb +3 -3
  108. data/proton_api.gemspec +2 -2
  109. data/spec/api/annuities_api_spec.rb +2 -2
  110. data/spec/api/business_financial_management_api_spec.rb +2 -2
  111. data/spec/api/cards_api_spec.rb +14 -2
  112. data/spec/api/financial_health_api_spec.rb +2 -2
  113. data/spec/api/financial_planning_api_spec.rb +2 -2
  114. data/spec/api/goals_api_spec.rb +2 -2
  115. data/spec/api/life_insurance_api_spec.rb +2 -2
  116. data/spec/api/personal_financial_management_api_spec.rb +14 -2
  117. data/spec/api/portfolio_construction_api_spec.rb +2 -2
  118. data/spec/api/portfolio_management_api_spec.rb +2 -2
  119. data/spec/api/risk_scoring_api_spec.rb +2 -2
  120. data/spec/api/simulations_api_spec.rb +2 -2
  121. data/spec/api/util_api_spec.rb +71 -0
  122. data/spec/api_client_spec.rb +2 -2
  123. data/spec/configuration_spec.rb +5 -5
  124. data/spec/models/accumulation_goal_deposit_config_spec.rb +10 -10
  125. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +17 -17
  126. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +17 -17
  127. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +17 -17
  128. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +17 -17
  129. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +17 -17
  130. data/spec/models/annuity_deposit_schedule_spec.rb +4 -4
  131. data/spec/models/answer_spec.rb +41 -0
  132. data/spec/models/backtest_request_spec.rb +10 -10
  133. data/spec/models/beneficiary_bequest_config_spec.rb +4 -4
  134. data/spec/models/budget_aggregation_account_spec.rb +2 -2
  135. data/spec/models/budget_calculator_request_spec.rb +25 -13
  136. data/spec/models/budget_component_spec.rb +4 -4
  137. data/spec/models/budget_details_spec.rb +15 -15
  138. data/spec/models/business_financial_health_check_request_spec.rb +34 -28
  139. data/spec/models/business_invoice_analysis_request_spec.rb +18 -12
  140. data/spec/models/calculator_deposit_schedule1_spec.rb +4 -4
  141. data/spec/models/calculator_deposit_schedule_spec.rb +8 -8
  142. data/spec/models/card_analysis_request_spec.rb +129 -0
  143. data/spec/models/card_limit_check_request_spec.rb +20 -2
  144. data/spec/models/card_transaction_authorization_request_spec.rb +57 -15
  145. data/spec/models/cash_analysis_request_spec.rb +25 -13
  146. data/spec/models/cash_flow_analysis_request_spec.rb +34 -16
  147. data/spec/models/children_education_config_spec.rb +2 -2
  148. data/spec/models/customer_analysis_request_spec.rb +15 -9
  149. data/spec/models/decision_tree_result_request_spec.rb +51 -0
  150. data/spec/models/decumulation_goal_deposit_config_spec.rb +10 -10
  151. data/spec/models/dimensional_risk_score_request_spec.rb +8 -8
  152. data/spec/models/diversification_score_request_spec.rb +14 -14
  153. data/spec/models/education_calculator_annual_cost_request_spec.rb +13 -13
  154. data/spec/models/education_calculator_deposit_amount_request_spec.rb +13 -13
  155. data/spec/models/education_calculator_percent_covered_request_spec.rb +12 -12
  156. data/spec/models/education_config_spec.rb +5 -5
  157. data/spec/models/emergency_fund_calculator_request_spec.rb +23 -23
  158. data/spec/models/event_study_request_spec.rb +17 -17
  159. data/spec/models/fee_analysis_request_spec.rb +12 -6
  160. data/spec/models/financial_health_check_request_spec.rb +12 -12
  161. data/spec/models/financial_picture_request_spec.rb +15 -9
  162. data/spec/models/financial_statement_analysis_request_spec.rb +39 -33
  163. data/spec/models/goal_accumulation_allocation_request_spec.rb +48 -48
  164. data/spec/models/goal_accumulation_recommendation_request_spec.rb +34 -34
  165. data/spec/models/goal_accumulation_status_request_spec.rb +34 -34
  166. data/spec/models/goal_config_spec.rb +4 -4
  167. data/spec/models/goal_decumulation_allocation_request_spec.rb +51 -51
  168. data/spec/models/goal_decumulation_recommendation_request_spec.rb +35 -35
  169. data/spec/models/goal_decumulation_status_request_spec.rb +35 -35
  170. data/spec/models/goal_withdrawal_config_spec.rb +20 -20
  171. data/spec/models/guaranteed_rate_benefit_spec.rb +5 -5
  172. data/spec/models/income_config_spec.rb +4 -4
  173. data/spec/models/life_insurance_needs_calculator_request_spec.rb +16 -16
  174. data/spec/models/location_spec.rb +41 -0
  175. data/spec/models/monte_carlo_request_spec.rb +31 -31
  176. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +6 -6
  177. data/spec/models/mortgage_calculator_home_price_request_spec.rb +6 -6
  178. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +6 -6
  179. data/spec/models/mvo_request_spec.rb +23 -23
  180. data/spec/models/opt_config1_spec.rb +10 -10
  181. data/spec/models/opt_config_spec.rb +13 -13
  182. data/spec/models/order_rebalance_request_spec.rb +123 -0
  183. data/spec/models/performance_calculator_request_spec.rb +233 -0
  184. data/spec/models/periods_spec.rb +2 -2
  185. data/spec/models/portfolio_optimization_score_request_spec.rb +16 -16
  186. data/spec/models/portfolio_what_if_request_spec.rb +16 -16
  187. data/spec/models/purchase_calculator_amount_request_spec.rb +14 -14
  188. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +16 -16
  189. data/spec/models/purchase_calculator_horizon_request_spec.rb +10 -10
  190. data/spec/models/ratio_targets1_spec.rb +4 -4
  191. data/spec/models/ratio_targets_spec.rb +8 -8
  192. data/spec/models/rebalancing_signal_request_spec.rb +6 -6
  193. data/spec/models/recommendation_config1_spec.rb +9 -9
  194. data/spec/models/recommendation_config_spec.rb +9 -9
  195. data/spec/models/recurring_transaction_analysis_request_spec.rb +33 -15
  196. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +13 -13
  197. data/spec/models/retirement_calculator_expenses_request_spec.rb +12 -12
  198. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +12 -12
  199. data/spec/models/risk_allocation_request_spec.rb +15 -15
  200. data/spec/models/risk_score_request_spec.rb +8 -8
  201. data/spec/models/savings_calculator_request_spec.rb +16 -16
  202. data/spec/models/savings_deposit_schedule_spec.rb +8 -8
  203. data/spec/models/scenario_analysis_request_spec.rb +19 -19
  204. data/spec/models/sensitivity_analysis_request_spec.rb +23 -23
  205. data/spec/models/sensitivity_factor_spec.rb +6 -6
  206. data/spec/models/settings_spec.rb +13 -13
  207. data/spec/models/spending_analysis_request_spec.rb +187 -0
  208. data/spec/models/variable_annuity_request_spec.rb +40 -40
  209. data/spec/models/w_config1_spec.rb +6 -6
  210. data/spec/models/w_config_spec.rb +7 -7
  211. data/spec/spec_helper.rb +2 -2
  212. metadata +26 -94
  213. data/docs/AccumulationGoalDepositConfig.md +0 -14
  214. data/docs/AnnuitiesApi.md +0 -344
  215. data/docs/AnnuityCalculatorAccumulationHorizonRequest.md +0 -19
  216. data/docs/AnnuityCalculatorAnnuityAmountRequest.md +0 -19
  217. data/docs/AnnuityCalculatorDecumulationHorizonRequest.md +0 -19
  218. data/docs/AnnuityCalculatorDepositAmountRequest.md +0 -19
  219. data/docs/AnnuityCalculatorInitialBalanceRequest.md +0 -19
  220. data/docs/AnnuityDepositSchedule.md +0 -10
  221. data/docs/BacktestRequest.md +0 -17
  222. data/docs/BeneficiaryBequestConfig.md +0 -10
  223. data/docs/BudgetAggregationAccount.md +0 -8
  224. data/docs/BudgetCalculatorRequest.md +0 -16
  225. data/docs/BudgetComponent.md +0 -10
  226. data/docs/BudgetDetails.md +0 -17
  227. data/docs/BusinessFinancialHealthCheckRequest.md +0 -22
  228. data/docs/BusinessFinancialManagementApi.md +0 -288
  229. data/docs/BusinessInvoiceAnalysisRequest.md +0 -20
  230. data/docs/CalculatorDepositSchedule.md +0 -9
  231. data/docs/CalculatorDepositSchedule1.md +0 -10
  232. data/docs/CardLimitCheckRequest.md +0 -9
  233. data/docs/CardTransactionAuthorizationRequest.md +0 -19
  234. data/docs/CardsApi.md +0 -120
  235. data/docs/CashAnalysisRequest.md +0 -17
  236. data/docs/CashFlowAnalysisRequest.md +0 -20
  237. data/docs/ChildrenEducationConfig.md +0 -9
  238. data/docs/CustomerAnalysisRequest.md +0 -17
  239. data/docs/DecumulationGoalDepositConfig.md +0 -14
  240. data/docs/DimensionalRiskScoreRequest.md +0 -16
  241. data/docs/DiversificationScoreRequest.md +0 -19
  242. data/docs/EducationCalculatorAnnualCostRequest.md +0 -18
  243. data/docs/EducationCalculatorDepositAmountRequest.md +0 -19
  244. data/docs/EducationCalculatorPercentCoveredRequest.md +0 -18
  245. data/docs/EducationConfig.md +0 -10
  246. data/docs/EmergencyFundCalculatorRequest.md +0 -24
  247. data/docs/EventStudyRequest.md +0 -18
  248. data/docs/FeeAnalysisRequest.md +0 -13
  249. data/docs/FinancialHealthApi.md +0 -232
  250. data/docs/FinancialHealthCheckRequest.md +0 -17
  251. data/docs/FinancialPictureRequest.md +0 -16
  252. data/docs/FinancialPlanningApi.md +0 -680
  253. data/docs/FinancialStatementAnalysisRequest.md +0 -22
  254. data/docs/GoalAccumulationAllocationRequest.md +0 -33
  255. data/docs/GoalAccumulationRecommendationRequest.md +0 -28
  256. data/docs/GoalAccumulationStatusRequest.md +0 -28
  257. data/docs/GoalConfig.md +0 -9
  258. data/docs/GoalDecumulationAllocationRequest.md +0 -34
  259. data/docs/GoalDecumulationRecommendationRequest.md +0 -29
  260. data/docs/GoalDecumulationStatusRequest.md +0 -29
  261. data/docs/GoalWithdrawalConfig.md +0 -14
  262. data/docs/GoalsApi.md +0 -344
  263. data/docs/GuaranteedRateBenefit.md +0 -11
  264. data/docs/IncomeConfig.md +0 -10
  265. data/docs/LifeInsuranceApi.md +0 -64
  266. data/docs/LifeInsuranceNeedsCalculatorRequest.md +0 -22
  267. data/docs/MonteCarloRequest.md +0 -29
  268. data/docs/MortgageCalculatorDownPaymentRequest.md +0 -11
  269. data/docs/MortgageCalculatorHomePriceRequest.md +0 -11
  270. data/docs/MortgageCalculatorPeriodicPaymentRequest.md +0 -11
  271. data/docs/MvoRequest.md +0 -18
  272. data/docs/OptConfig.md +0 -14
  273. data/docs/OptConfig1.md +0 -12
  274. data/docs/Periods.md +0 -9
  275. data/docs/PersonalFinancialManagementApi.md +0 -288
  276. data/docs/PortfolioConstructionApi.md +0 -64
  277. data/docs/PortfolioManagementApi.md +0 -64
  278. data/docs/PortfolioOptimizationScoreRequest.md +0 -21
  279. data/docs/PortfolioWhatIfRequest.md +0 -21
  280. data/docs/PurchaseCalculatorAmountRequest.md +0 -16
  281. data/docs/PurchaseCalculatorDepositAmountRequest.md +0 -17
  282. data/docs/PurchaseCalculatorHorizonRequest.md +0 -15
  283. data/docs/RatioTargets.md +0 -13
  284. data/docs/RatioTargets1.md +0 -13
  285. data/docs/RebalancingSignalRequest.md +0 -13
  286. data/docs/RecommendationConfig.md +0 -15
  287. data/docs/RecommendationConfig1.md +0 -14
  288. data/docs/RecurringTransactionAnalysisRequest.md +0 -19
  289. data/docs/RetirementCalculatorDepositAmountRequest.md +0 -20
  290. data/docs/RetirementCalculatorExpensesRequest.md +0 -19
  291. data/docs/RetirementCalculatorPercentCoveredRequest.md +0 -19
  292. data/docs/RiskAllocationRequest.md +0 -14
  293. data/docs/RiskScoreRequest.md +0 -13
  294. data/docs/RiskScoringApi.md +0 -176
  295. data/docs/SavingsCalculatorRequest.md +0 -17
  296. data/docs/SavingsDepositSchedule.md +0 -11
  297. data/docs/ScenarioAnalysisRequest.md +0 -22
  298. data/docs/SensitivityAnalysisRequest.md +0 -22
  299. data/docs/SensitivityFactor.md +0 -11
  300. data/docs/Settings.md +0 -13
  301. data/docs/SimulationsApi.md +0 -400
  302. data/docs/VariableAnnuityRequest.md +0 -34
  303. data/docs/WConfig.md +0 -12
  304. data/docs/WConfig1.md +0 -12
@@ -0,0 +1,687 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.0
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class PerformanceCalculatorRequest
17
+ attr_accessor :annualized_return_period
18
+
19
+ attr_accessor :risk_free_alpha
20
+
21
+ attr_accessor :allocation_id
22
+
23
+ attr_accessor :mean_percentile_monte_carlo
24
+
25
+ attr_accessor :model_id
26
+
27
+ attr_accessor :mar_downside_deviation
28
+
29
+ attr_accessor :risk_free_sharpe
30
+
31
+ attr_accessor :benchmark_id
32
+
33
+ attr_accessor :risk_free_sortino
34
+
35
+ attr_accessor :household_id
36
+
37
+ attr_accessor :min_percentile_monte_carlo
38
+
39
+ attr_accessor :moving_average_n_day
40
+
41
+ attr_accessor :active_premium_period
42
+
43
+ attr_accessor :stat_name
44
+
45
+ attr_accessor :end_date
46
+
47
+ attr_accessor :start_date
48
+
49
+ attr_accessor :n_day_returns
50
+
51
+ attr_accessor :var_conf_interval
52
+
53
+ attr_accessor :period_type
54
+
55
+ attr_accessor :risk_free_treynor
56
+
57
+ attr_accessor :n_rolling_max_drawdown
58
+
59
+ attr_accessor :portfolio_id
60
+
61
+ attr_accessor :num_sim_monte_carlo
62
+
63
+ attr_accessor :goal_id
64
+
65
+ attr_accessor :account_id
66
+
67
+ attr_accessor :security_id
68
+
69
+ attr_accessor :n_path_monte_carlo
70
+
71
+ attr_accessor :client_id
72
+
73
+ attr_accessor :n_rolling_volatility
74
+
75
+ attr_accessor :hist_factor
76
+
77
+ attr_accessor :max_percentile_monte_carlo
78
+
79
+ class EnumAttributeValidator
80
+ attr_reader :datatype
81
+ attr_reader :allowable_values
82
+
83
+ def initialize(datatype, allowable_values)
84
+ @allowable_values = allowable_values.map do |value|
85
+ case datatype.to_s
86
+ when /Integer/i
87
+ value.to_i
88
+ when /Float/i
89
+ value.to_f
90
+ else
91
+ value
92
+ end
93
+ end
94
+ end
95
+
96
+ def valid?(value)
97
+ !value || allowable_values.include?(value)
98
+ end
99
+ end
100
+
101
+ # Attribute mapping from ruby-style variable name to JSON key.
102
+ def self.attribute_map
103
+ {
104
+ :'annualized_return_period' => :'annualized_return_period',
105
+ :'risk_free_alpha' => :'risk_free_alpha',
106
+ :'allocation_id' => :'allocation_id',
107
+ :'mean_percentile_monte_carlo' => :'mean_percentile_monte_carlo',
108
+ :'model_id' => :'model_id',
109
+ :'mar_downside_deviation' => :'mar_downside_deviation',
110
+ :'risk_free_sharpe' => :'risk_free_sharpe',
111
+ :'benchmark_id' => :'benchmark_id',
112
+ :'risk_free_sortino' => :'risk_free_sortino',
113
+ :'household_id' => :'household_id',
114
+ :'min_percentile_monte_carlo' => :'min_percentile_monte_carlo',
115
+ :'moving_average_n_day' => :'moving_average_n_day',
116
+ :'active_premium_period' => :'active_premium_period',
117
+ :'stat_name' => :'stat_name',
118
+ :'end_date' => :'end_date',
119
+ :'start_date' => :'start_date',
120
+ :'n_day_returns' => :'n_day_returns',
121
+ :'var_conf_interval' => :'var_conf_interval',
122
+ :'period_type' => :'period_type',
123
+ :'risk_free_treynor' => :'risk_free_treynor',
124
+ :'n_rolling_max_drawdown' => :'n_rolling_max_drawdown',
125
+ :'portfolio_id' => :'portfolio_id',
126
+ :'num_sim_monte_carlo' => :'num_sim_monte_carlo',
127
+ :'goal_id' => :'goal_id',
128
+ :'account_id' => :'account_id',
129
+ :'security_id' => :'security_id',
130
+ :'n_path_monte_carlo' => :'n_path_monte_carlo',
131
+ :'client_id' => :'client_id',
132
+ :'n_rolling_volatility' => :'n_rolling_volatility',
133
+ :'hist_factor' => :'hist_factor',
134
+ :'max_percentile_monte_carlo' => :'max_percentile_monte_carlo'
135
+ }
136
+ end
137
+
138
+ # Attribute type mapping.
139
+ def self.swagger_types
140
+ {
141
+ :'annualized_return_period' => :'String',
142
+ :'risk_free_alpha' => :'Float',
143
+ :'allocation_id' => :'String',
144
+ :'mean_percentile_monte_carlo' => :'Float',
145
+ :'model_id' => :'String',
146
+ :'mar_downside_deviation' => :'Float',
147
+ :'risk_free_sharpe' => :'Float',
148
+ :'benchmark_id' => :'String',
149
+ :'risk_free_sortino' => :'Float',
150
+ :'household_id' => :'String',
151
+ :'min_percentile_monte_carlo' => :'Float',
152
+ :'moving_average_n_day' => :'Integer',
153
+ :'active_premium_period' => :'String',
154
+ :'stat_name' => :'String',
155
+ :'end_date' => :'Date',
156
+ :'start_date' => :'Date',
157
+ :'n_day_returns' => :'Integer',
158
+ :'var_conf_interval' => :'Float',
159
+ :'period_type' => :'String',
160
+ :'risk_free_treynor' => :'Float',
161
+ :'n_rolling_max_drawdown' => :'Integer',
162
+ :'portfolio_id' => :'String',
163
+ :'num_sim_monte_carlo' => :'Integer',
164
+ :'goal_id' => :'String',
165
+ :'account_id' => :'String',
166
+ :'security_id' => :'String',
167
+ :'n_path_monte_carlo' => :'Integer',
168
+ :'client_id' => :'String',
169
+ :'n_rolling_volatility' => :'Integer',
170
+ :'hist_factor' => :'Float',
171
+ :'max_percentile_monte_carlo' => :'Float'
172
+ }
173
+ end
174
+
175
+ # Initializes the object
176
+ # @param [Hash] attributes Model attributes in the form of hash
177
+ def initialize(attributes = {})
178
+ return unless attributes.is_a?(Hash)
179
+
180
+ # convert string to symbol for hash key
181
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
182
+
183
+ if attributes.has_key?(:'annualized_return_period')
184
+ self.annualized_return_period = attributes[:'annualized_return_period']
185
+ else
186
+ self.annualized_return_period = 'D'
187
+ end
188
+
189
+ if attributes.has_key?(:'risk_free_alpha')
190
+ self.risk_free_alpha = attributes[:'risk_free_alpha']
191
+ else
192
+ self.risk_free_alpha = 0.0
193
+ end
194
+
195
+ if attributes.has_key?(:'allocation_id')
196
+ self.allocation_id = attributes[:'allocation_id']
197
+ end
198
+
199
+ if attributes.has_key?(:'mean_percentile_monte_carlo')
200
+ self.mean_percentile_monte_carlo = attributes[:'mean_percentile_monte_carlo']
201
+ else
202
+ self.mean_percentile_monte_carlo = 50.0
203
+ end
204
+
205
+ if attributes.has_key?(:'model_id')
206
+ self.model_id = attributes[:'model_id']
207
+ end
208
+
209
+ if attributes.has_key?(:'mar_downside_deviation')
210
+ self.mar_downside_deviation = attributes[:'mar_downside_deviation']
211
+ else
212
+ self.mar_downside_deviation = 0.0
213
+ end
214
+
215
+ if attributes.has_key?(:'risk_free_sharpe')
216
+ self.risk_free_sharpe = attributes[:'risk_free_sharpe']
217
+ else
218
+ self.risk_free_sharpe = 0.0
219
+ end
220
+
221
+ if attributes.has_key?(:'benchmark_id')
222
+ self.benchmark_id = attributes[:'benchmark_id']
223
+ end
224
+
225
+ if attributes.has_key?(:'risk_free_sortino')
226
+ self.risk_free_sortino = attributes[:'risk_free_sortino']
227
+ else
228
+ self.risk_free_sortino = 0.0
229
+ end
230
+
231
+ if attributes.has_key?(:'household_id')
232
+ self.household_id = attributes[:'household_id']
233
+ end
234
+
235
+ if attributes.has_key?(:'min_percentile_monte_carlo')
236
+ self.min_percentile_monte_carlo = attributes[:'min_percentile_monte_carlo']
237
+ else
238
+ self.min_percentile_monte_carlo = 20.0
239
+ end
240
+
241
+ if attributes.has_key?(:'moving_average_n_day')
242
+ self.moving_average_n_day = attributes[:'moving_average_n_day']
243
+ else
244
+ self.moving_average_n_day = 7
245
+ end
246
+
247
+ if attributes.has_key?(:'active_premium_period')
248
+ self.active_premium_period = attributes[:'active_premium_period']
249
+ else
250
+ self.active_premium_period = 'D'
251
+ end
252
+
253
+ if attributes.has_key?(:'stat_name')
254
+ self.stat_name = attributes[:'stat_name']
255
+ end
256
+
257
+ if attributes.has_key?(:'end_date')
258
+ self.end_date = attributes[:'end_date']
259
+ end
260
+
261
+ if attributes.has_key?(:'start_date')
262
+ self.start_date = attributes[:'start_date']
263
+ end
264
+
265
+ if attributes.has_key?(:'n_day_returns')
266
+ self.n_day_returns = attributes[:'n_day_returns']
267
+ else
268
+ self.n_day_returns = 7
269
+ end
270
+
271
+ if attributes.has_key?(:'var_conf_interval')
272
+ self.var_conf_interval = attributes[:'var_conf_interval']
273
+ else
274
+ self.var_conf_interval = 95.0
275
+ end
276
+
277
+ if attributes.has_key?(:'period_type')
278
+ self.period_type = attributes[:'period_type']
279
+ else
280
+ self.period_type = 'D'
281
+ end
282
+
283
+ if attributes.has_key?(:'risk_free_treynor')
284
+ self.risk_free_treynor = attributes[:'risk_free_treynor']
285
+ else
286
+ self.risk_free_treynor = 0.0
287
+ end
288
+
289
+ if attributes.has_key?(:'n_rolling_max_drawdown')
290
+ self.n_rolling_max_drawdown = attributes[:'n_rolling_max_drawdown']
291
+ else
292
+ self.n_rolling_max_drawdown = 7
293
+ end
294
+
295
+ if attributes.has_key?(:'portfolio_id')
296
+ self.portfolio_id = attributes[:'portfolio_id']
297
+ end
298
+
299
+ if attributes.has_key?(:'num_sim_monte_carlo')
300
+ self.num_sim_monte_carlo = attributes[:'num_sim_monte_carlo']
301
+ else
302
+ self.num_sim_monte_carlo = 1000
303
+ end
304
+
305
+ if attributes.has_key?(:'goal_id')
306
+ self.goal_id = attributes[:'goal_id']
307
+ end
308
+
309
+ if attributes.has_key?(:'account_id')
310
+ self.account_id = attributes[:'account_id']
311
+ end
312
+
313
+ if attributes.has_key?(:'security_id')
314
+ self.security_id = attributes[:'security_id']
315
+ end
316
+
317
+ if attributes.has_key?(:'n_path_monte_carlo')
318
+ self.n_path_monte_carlo = attributes[:'n_path_monte_carlo']
319
+ else
320
+ self.n_path_monte_carlo = 100
321
+ end
322
+
323
+ if attributes.has_key?(:'client_id')
324
+ self.client_id = attributes[:'client_id']
325
+ end
326
+
327
+ if attributes.has_key?(:'n_rolling_volatility')
328
+ self.n_rolling_volatility = attributes[:'n_rolling_volatility']
329
+ else
330
+ self.n_rolling_volatility = 7
331
+ end
332
+
333
+ if attributes.has_key?(:'hist_factor')
334
+ self.hist_factor = attributes[:'hist_factor']
335
+ else
336
+ self.hist_factor = 5.0
337
+ end
338
+
339
+ if attributes.has_key?(:'max_percentile_monte_carlo')
340
+ self.max_percentile_monte_carlo = attributes[:'max_percentile_monte_carlo']
341
+ else
342
+ self.max_percentile_monte_carlo = 80.0
343
+ end
344
+ end
345
+
346
+ # Show invalid properties with the reasons. Usually used together with valid?
347
+ # @return Array for valid properties with the reasons
348
+ def list_invalid_properties
349
+ invalid_properties = Array.new
350
+ if !@mean_percentile_monte_carlo.nil? && @mean_percentile_monte_carlo < 0
351
+ invalid_properties.push('invalid value for "mean_percentile_monte_carlo", must be greater than or equal to 0.')
352
+ end
353
+
354
+ if !@min_percentile_monte_carlo.nil? && @min_percentile_monte_carlo < 0
355
+ invalid_properties.push('invalid value for "min_percentile_monte_carlo", must be greater than or equal to 0.')
356
+ end
357
+
358
+ if !@moving_average_n_day.nil? && @moving_average_n_day < 1
359
+ invalid_properties.push('invalid value for "moving_average_n_day", must be greater than or equal to 1.')
360
+ end
361
+
362
+ if @stat_name.nil?
363
+ invalid_properties.push('invalid value for "stat_name", stat_name cannot be nil.')
364
+ end
365
+
366
+ if !@n_day_returns.nil? && @n_day_returns < 1
367
+ invalid_properties.push('invalid value for "n_day_returns", must be greater than or equal to 1.')
368
+ end
369
+
370
+ if !@n_rolling_max_drawdown.nil? && @n_rolling_max_drawdown < 1
371
+ invalid_properties.push('invalid value for "n_rolling_max_drawdown", must be greater than or equal to 1.')
372
+ end
373
+
374
+ if !@num_sim_monte_carlo.nil? && @num_sim_monte_carlo < 1
375
+ invalid_properties.push('invalid value for "num_sim_monte_carlo", must be greater than or equal to 1.')
376
+ end
377
+
378
+ if !@n_path_monte_carlo.nil? && @n_path_monte_carlo < 1
379
+ invalid_properties.push('invalid value for "n_path_monte_carlo", must be greater than or equal to 1.')
380
+ end
381
+
382
+ if !@n_rolling_volatility.nil? && @n_rolling_volatility < 1
383
+ invalid_properties.push('invalid value for "n_rolling_volatility", must be greater than or equal to 1.')
384
+ end
385
+
386
+ if !@max_percentile_monte_carlo.nil? && @max_percentile_monte_carlo < 0
387
+ invalid_properties.push('invalid value for "max_percentile_monte_carlo", must be greater than or equal to 0.')
388
+ end
389
+
390
+ invalid_properties
391
+ end
392
+
393
+ # Check to see if the all the properties in the model are valid
394
+ # @return true if the model is valid
395
+ def valid?
396
+ annualized_return_period_validator = EnumAttributeValidator.new('String', ['Y', 'Q', 'M', 'D'])
397
+ return false unless annualized_return_period_validator.valid?(@annualized_return_period)
398
+ return false if !@mean_percentile_monte_carlo.nil? && @mean_percentile_monte_carlo < 0
399
+ return false if !@min_percentile_monte_carlo.nil? && @min_percentile_monte_carlo < 0
400
+ return false if !@moving_average_n_day.nil? && @moving_average_n_day < 1
401
+ active_premium_period_validator = EnumAttributeValidator.new('String', ['Y', 'Q', 'M', 'D'])
402
+ return false unless active_premium_period_validator.valid?(@active_premium_period)
403
+ return false if @stat_name.nil?
404
+ return false if !@n_day_returns.nil? && @n_day_returns < 1
405
+ period_type_validator = EnumAttributeValidator.new('String', ['Y', 'Q', 'M', 'D'])
406
+ return false unless period_type_validator.valid?(@period_type)
407
+ return false if !@n_rolling_max_drawdown.nil? && @n_rolling_max_drawdown < 1
408
+ return false if !@num_sim_monte_carlo.nil? && @num_sim_monte_carlo < 1
409
+ return false if !@n_path_monte_carlo.nil? && @n_path_monte_carlo < 1
410
+ return false if !@n_rolling_volatility.nil? && @n_rolling_volatility < 1
411
+ return false if !@max_percentile_monte_carlo.nil? && @max_percentile_monte_carlo < 0
412
+ true
413
+ end
414
+
415
+ # Custom attribute writer method checking allowed values (enum).
416
+ # @param [Object] annualized_return_period Object to be assigned
417
+ def annualized_return_period=(annualized_return_period)
418
+ validator = EnumAttributeValidator.new('String', ['Y', 'Q', 'M', 'D'])
419
+ unless validator.valid?(annualized_return_period)
420
+ fail ArgumentError, 'invalid value for "annualized_return_period", must be one of #{validator.allowable_values}.'
421
+ end
422
+ @annualized_return_period = annualized_return_period
423
+ end
424
+
425
+ # Custom attribute writer method with validation
426
+ # @param [Object] mean_percentile_monte_carlo Value to be assigned
427
+ def mean_percentile_monte_carlo=(mean_percentile_monte_carlo)
428
+ if !mean_percentile_monte_carlo.nil? && mean_percentile_monte_carlo < 0
429
+ fail ArgumentError, 'invalid value for "mean_percentile_monte_carlo", must be greater than or equal to 0.'
430
+ end
431
+
432
+ @mean_percentile_monte_carlo = mean_percentile_monte_carlo
433
+ end
434
+
435
+ # Custom attribute writer method with validation
436
+ # @param [Object] min_percentile_monte_carlo Value to be assigned
437
+ def min_percentile_monte_carlo=(min_percentile_monte_carlo)
438
+ if !min_percentile_monte_carlo.nil? && min_percentile_monte_carlo < 0
439
+ fail ArgumentError, 'invalid value for "min_percentile_monte_carlo", must be greater than or equal to 0.'
440
+ end
441
+
442
+ @min_percentile_monte_carlo = min_percentile_monte_carlo
443
+ end
444
+
445
+ # Custom attribute writer method with validation
446
+ # @param [Object] moving_average_n_day Value to be assigned
447
+ def moving_average_n_day=(moving_average_n_day)
448
+ if !moving_average_n_day.nil? && moving_average_n_day < 1
449
+ fail ArgumentError, 'invalid value for "moving_average_n_day", must be greater than or equal to 1.'
450
+ end
451
+
452
+ @moving_average_n_day = moving_average_n_day
453
+ end
454
+
455
+ # Custom attribute writer method checking allowed values (enum).
456
+ # @param [Object] active_premium_period Object to be assigned
457
+ def active_premium_period=(active_premium_period)
458
+ validator = EnumAttributeValidator.new('String', ['Y', 'Q', 'M', 'D'])
459
+ unless validator.valid?(active_premium_period)
460
+ fail ArgumentError, 'invalid value for "active_premium_period", must be one of #{validator.allowable_values}.'
461
+ end
462
+ @active_premium_period = active_premium_period
463
+ end
464
+
465
+ # Custom attribute writer method with validation
466
+ # @param [Object] n_day_returns Value to be assigned
467
+ def n_day_returns=(n_day_returns)
468
+ if !n_day_returns.nil? && n_day_returns < 1
469
+ fail ArgumentError, 'invalid value for "n_day_returns", must be greater than or equal to 1.'
470
+ end
471
+
472
+ @n_day_returns = n_day_returns
473
+ end
474
+
475
+ # Custom attribute writer method checking allowed values (enum).
476
+ # @param [Object] period_type Object to be assigned
477
+ def period_type=(period_type)
478
+ validator = EnumAttributeValidator.new('String', ['Y', 'Q', 'M', 'D'])
479
+ unless validator.valid?(period_type)
480
+ fail ArgumentError, 'invalid value for "period_type", must be one of #{validator.allowable_values}.'
481
+ end
482
+ @period_type = period_type
483
+ end
484
+
485
+ # Custom attribute writer method with validation
486
+ # @param [Object] n_rolling_max_drawdown Value to be assigned
487
+ def n_rolling_max_drawdown=(n_rolling_max_drawdown)
488
+ if !n_rolling_max_drawdown.nil? && n_rolling_max_drawdown < 1
489
+ fail ArgumentError, 'invalid value for "n_rolling_max_drawdown", must be greater than or equal to 1.'
490
+ end
491
+
492
+ @n_rolling_max_drawdown = n_rolling_max_drawdown
493
+ end
494
+
495
+ # Custom attribute writer method with validation
496
+ # @param [Object] num_sim_monte_carlo Value to be assigned
497
+ def num_sim_monte_carlo=(num_sim_monte_carlo)
498
+ if !num_sim_monte_carlo.nil? && num_sim_monte_carlo < 1
499
+ fail ArgumentError, 'invalid value for "num_sim_monte_carlo", must be greater than or equal to 1.'
500
+ end
501
+
502
+ @num_sim_monte_carlo = num_sim_monte_carlo
503
+ end
504
+
505
+ # Custom attribute writer method with validation
506
+ # @param [Object] n_path_monte_carlo Value to be assigned
507
+ def n_path_monte_carlo=(n_path_monte_carlo)
508
+ if !n_path_monte_carlo.nil? && n_path_monte_carlo < 1
509
+ fail ArgumentError, 'invalid value for "n_path_monte_carlo", must be greater than or equal to 1.'
510
+ end
511
+
512
+ @n_path_monte_carlo = n_path_monte_carlo
513
+ end
514
+
515
+ # Custom attribute writer method with validation
516
+ # @param [Object] n_rolling_volatility Value to be assigned
517
+ def n_rolling_volatility=(n_rolling_volatility)
518
+ if !n_rolling_volatility.nil? && n_rolling_volatility < 1
519
+ fail ArgumentError, 'invalid value for "n_rolling_volatility", must be greater than or equal to 1.'
520
+ end
521
+
522
+ @n_rolling_volatility = n_rolling_volatility
523
+ end
524
+
525
+ # Custom attribute writer method with validation
526
+ # @param [Object] max_percentile_monte_carlo Value to be assigned
527
+ def max_percentile_monte_carlo=(max_percentile_monte_carlo)
528
+ if !max_percentile_monte_carlo.nil? && max_percentile_monte_carlo < 0
529
+ fail ArgumentError, 'invalid value for "max_percentile_monte_carlo", must be greater than or equal to 0.'
530
+ end
531
+
532
+ @max_percentile_monte_carlo = max_percentile_monte_carlo
533
+ end
534
+
535
+ # Checks equality by comparing each attribute.
536
+ # @param [Object] Object to be compared
537
+ def ==(o)
538
+ return true if self.equal?(o)
539
+ self.class == o.class &&
540
+ annualized_return_period == o.annualized_return_period &&
541
+ risk_free_alpha == o.risk_free_alpha &&
542
+ allocation_id == o.allocation_id &&
543
+ mean_percentile_monte_carlo == o.mean_percentile_monte_carlo &&
544
+ model_id == o.model_id &&
545
+ mar_downside_deviation == o.mar_downside_deviation &&
546
+ risk_free_sharpe == o.risk_free_sharpe &&
547
+ benchmark_id == o.benchmark_id &&
548
+ risk_free_sortino == o.risk_free_sortino &&
549
+ household_id == o.household_id &&
550
+ min_percentile_monte_carlo == o.min_percentile_monte_carlo &&
551
+ moving_average_n_day == o.moving_average_n_day &&
552
+ active_premium_period == o.active_premium_period &&
553
+ stat_name == o.stat_name &&
554
+ end_date == o.end_date &&
555
+ start_date == o.start_date &&
556
+ n_day_returns == o.n_day_returns &&
557
+ var_conf_interval == o.var_conf_interval &&
558
+ period_type == o.period_type &&
559
+ risk_free_treynor == o.risk_free_treynor &&
560
+ n_rolling_max_drawdown == o.n_rolling_max_drawdown &&
561
+ portfolio_id == o.portfolio_id &&
562
+ num_sim_monte_carlo == o.num_sim_monte_carlo &&
563
+ goal_id == o.goal_id &&
564
+ account_id == o.account_id &&
565
+ security_id == o.security_id &&
566
+ n_path_monte_carlo == o.n_path_monte_carlo &&
567
+ client_id == o.client_id &&
568
+ n_rolling_volatility == o.n_rolling_volatility &&
569
+ hist_factor == o.hist_factor &&
570
+ max_percentile_monte_carlo == o.max_percentile_monte_carlo
571
+ end
572
+
573
+ # @see the `==` method
574
+ # @param [Object] Object to be compared
575
+ def eql?(o)
576
+ self == o
577
+ end
578
+
579
+ # Calculates hash code according to all attributes.
580
+ # @return [Fixnum] Hash code
581
+ def hash
582
+ [annualized_return_period, risk_free_alpha, allocation_id, mean_percentile_monte_carlo, model_id, mar_downside_deviation, risk_free_sharpe, benchmark_id, risk_free_sortino, household_id, min_percentile_monte_carlo, moving_average_n_day, active_premium_period, stat_name, end_date, start_date, n_day_returns, var_conf_interval, period_type, risk_free_treynor, n_rolling_max_drawdown, portfolio_id, num_sim_monte_carlo, goal_id, account_id, security_id, n_path_monte_carlo, client_id, n_rolling_volatility, hist_factor, max_percentile_monte_carlo].hash
583
+ end
584
+
585
+ # Builds the object from hash
586
+ # @param [Hash] attributes Model attributes in the form of hash
587
+ # @return [Object] Returns the model itself
588
+ def build_from_hash(attributes)
589
+ return nil unless attributes.is_a?(Hash)
590
+ self.class.swagger_types.each_pair do |key, type|
591
+ if type =~ /\AArray<(.*)>/i
592
+ # check to ensure the input is an array given that the attribute
593
+ # is documented as an array but the input is not
594
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
595
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
596
+ end
597
+ elsif !attributes[self.class.attribute_map[key]].nil?
598
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
599
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
600
+ end
601
+
602
+ self
603
+ end
604
+ # Deserializes the data based on type
605
+ # @param string type Data type
606
+ # @param string value Value to be deserialized
607
+ # @return [Object] Deserialized data
608
+ def _deserialize(type, value)
609
+ case type.to_sym
610
+ when :DateTime
611
+ value
612
+ when :Date
613
+ value
614
+ when :String
615
+ value.to_s
616
+ when :Integer
617
+ value.to_i
618
+ when :Float
619
+ value.to_f
620
+ when :BOOLEAN
621
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
622
+ true
623
+ else
624
+ false
625
+ end
626
+ when :Object
627
+ # generic object (usually a Hash), return directly
628
+ value
629
+ when /\AArray<(?<inner_type>.+)>\z/
630
+ inner_type = Regexp.last_match[:inner_type]
631
+ value.map { |v| _deserialize(inner_type, v) }
632
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
633
+ k_type = Regexp.last_match[:k_type]
634
+ v_type = Regexp.last_match[:v_type]
635
+ {}.tap do |hash|
636
+ value.each do |k, v|
637
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
638
+ end
639
+ end
640
+ else # model
641
+ temp_model = ProtonApi.const_get(type).new
642
+ temp_model.build_from_hash(value)
643
+ end
644
+ end
645
+ # Returns the string representation of the object
646
+ # @return [String] String presentation of the object
647
+ def to_s
648
+ to_hash.to_s
649
+ end
650
+
651
+ # to_body is an alias to to_hash (backward compatibility)
652
+ # @return [Hash] Returns the object in the form of hash
653
+ def to_body
654
+ to_hash
655
+ end
656
+
657
+ # Returns the object in the form of hash
658
+ # @return [Hash] Returns the object in the form of hash
659
+ def to_hash
660
+ hash = {}
661
+ self.class.attribute_map.each_pair do |attr, param|
662
+ value = self.send(attr)
663
+ next if value.nil?
664
+ hash[param] = _to_hash(value)
665
+ end
666
+ hash
667
+ end
668
+ # Outputs non-array value in the form of hash
669
+ # For object, use to_hash. Otherwise, just return the value
670
+ # @param [Object] value Any valid value
671
+ # @return [Hash] Returns the value in the form of hash
672
+ def _to_hash(value)
673
+ if value.is_a?(Array)
674
+ value.compact.map { |v| _to_hash(v) }
675
+ elsif value.is_a?(Hash)
676
+ {}.tap do |hash|
677
+ value.each { |k, v| hash[k] = _to_hash(v) }
678
+ end
679
+ elsif value.respond_to? :to_hash
680
+ value.to_hash
681
+ else
682
+ value
683
+ end
684
+ end
685
+
686
+ end
687
+ end