proton_api 1.8.0

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