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,479 @@
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 RetirementCalculatorExpensesRequest
17
+ attr_accessor :retirement_savings
18
+
19
+ attr_accessor :aggregation_account_ids
20
+
21
+ attr_accessor :retirement_age
22
+
23
+ attr_accessor :retirement_income
24
+
25
+ attr_accessor :current_age
26
+
27
+ attr_accessor :account_ids
28
+
29
+ attr_accessor :retirement_tax
30
+
31
+ attr_accessor :inflation_rate
32
+
33
+ attr_accessor :death_age
34
+
35
+ attr_accessor :portfolio_return
36
+
37
+ attr_accessor :deposit_schedule
38
+
39
+ attr_accessor :percent_of_expenses_covered
40
+
41
+ # Attribute mapping from ruby-style variable name to JSON key.
42
+ def self.attribute_map
43
+ {
44
+ :'retirement_savings' => :'retirement_savings',
45
+ :'aggregation_account_ids' => :'aggregation_account_ids',
46
+ :'retirement_age' => :'retirement_age',
47
+ :'retirement_income' => :'retirement_income',
48
+ :'current_age' => :'current_age',
49
+ :'account_ids' => :'account_ids',
50
+ :'retirement_tax' => :'retirement_tax',
51
+ :'inflation_rate' => :'inflation_rate',
52
+ :'death_age' => :'death_age',
53
+ :'portfolio_return' => :'portfolio_return',
54
+ :'deposit_schedule' => :'deposit_schedule',
55
+ :'percent_of_expenses_covered' => :'percent_of_expenses_covered'
56
+ }
57
+ end
58
+
59
+ # Attribute type mapping.
60
+ def self.swagger_types
61
+ {
62
+ :'retirement_savings' => :'Float',
63
+ :'aggregation_account_ids' => :'Array<String>',
64
+ :'retirement_age' => :'Integer',
65
+ :'retirement_income' => :'Float',
66
+ :'current_age' => :'Integer',
67
+ :'account_ids' => :'Array<String>',
68
+ :'retirement_tax' => :'Float',
69
+ :'inflation_rate' => :'Float',
70
+ :'death_age' => :'Integer',
71
+ :'portfolio_return' => :'Float',
72
+ :'deposit_schedule' => :'CalculatorDepositSchedule1',
73
+ :'percent_of_expenses_covered' => :'Float'
74
+ }
75
+ end
76
+
77
+ # Initializes the object
78
+ # @param [Hash] attributes Model attributes in the form of hash
79
+ def initialize(attributes = {})
80
+ return unless attributes.is_a?(Hash)
81
+
82
+ # convert string to symbol for hash key
83
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
84
+
85
+ if attributes.has_key?(:'retirement_savings')
86
+ self.retirement_savings = attributes[:'retirement_savings']
87
+ else
88
+ self.retirement_savings = 0.0
89
+ end
90
+
91
+ if attributes.has_key?(:'aggregation_account_ids')
92
+ if (value = attributes[:'aggregation_account_ids']).is_a?(Array)
93
+ self.aggregation_account_ids = value
94
+ end
95
+ end
96
+
97
+ if attributes.has_key?(:'retirement_age')
98
+ self.retirement_age = attributes[:'retirement_age']
99
+ else
100
+ self.retirement_age = 65
101
+ end
102
+
103
+ if attributes.has_key?(:'retirement_income')
104
+ self.retirement_income = attributes[:'retirement_income']
105
+ else
106
+ self.retirement_income = 0.0
107
+ end
108
+
109
+ if attributes.has_key?(:'current_age')
110
+ self.current_age = attributes[:'current_age']
111
+ end
112
+
113
+ if attributes.has_key?(:'account_ids')
114
+ if (value = attributes[:'account_ids']).is_a?(Array)
115
+ self.account_ids = value
116
+ end
117
+ end
118
+
119
+ if attributes.has_key?(:'retirement_tax')
120
+ self.retirement_tax = attributes[:'retirement_tax']
121
+ else
122
+ self.retirement_tax = 0.0
123
+ end
124
+
125
+ if attributes.has_key?(:'inflation_rate')
126
+ self.inflation_rate = attributes[:'inflation_rate']
127
+ else
128
+ self.inflation_rate = 0.0
129
+ end
130
+
131
+ if attributes.has_key?(:'death_age')
132
+ self.death_age = attributes[:'death_age']
133
+ end
134
+
135
+ if attributes.has_key?(:'portfolio_return')
136
+ self.portfolio_return = attributes[:'portfolio_return']
137
+ end
138
+
139
+ if attributes.has_key?(:'deposit_schedule')
140
+ self.deposit_schedule = attributes[:'deposit_schedule']
141
+ end
142
+
143
+ if attributes.has_key?(:'percent_of_expenses_covered')
144
+ self.percent_of_expenses_covered = attributes[:'percent_of_expenses_covered']
145
+ else
146
+ self.percent_of_expenses_covered = 1.0
147
+ end
148
+ end
149
+
150
+ # Show invalid properties with the reasons. Usually used together with valid?
151
+ # @return Array for valid properties with the reasons
152
+ def list_invalid_properties
153
+ invalid_properties = Array.new
154
+ if !@retirement_savings.nil? && @retirement_savings < 0
155
+ invalid_properties.push('invalid value for "retirement_savings", must be greater than or equal to 0.')
156
+ end
157
+
158
+ if !@retirement_age.nil? && @retirement_age < 0
159
+ invalid_properties.push('invalid value for "retirement_age", must be greater than or equal to 0.')
160
+ end
161
+
162
+ if !@retirement_income.nil? && @retirement_income < 0
163
+ invalid_properties.push('invalid value for "retirement_income", must be greater than or equal to 0.')
164
+ end
165
+
166
+ if @current_age.nil?
167
+ invalid_properties.push('invalid value for "current_age", current_age cannot be nil.')
168
+ end
169
+
170
+ if @current_age < 0
171
+ invalid_properties.push('invalid value for "current_age", must be greater than or equal to 0.')
172
+ end
173
+
174
+ if !@retirement_tax.nil? && @retirement_tax > 1
175
+ invalid_properties.push('invalid value for "retirement_tax", must be smaller than or equal to 1.')
176
+ end
177
+
178
+ if !@retirement_tax.nil? && @retirement_tax < 0
179
+ invalid_properties.push('invalid value for "retirement_tax", must be greater than or equal to 0.')
180
+ end
181
+
182
+ if !@inflation_rate.nil? && @inflation_rate < -1
183
+ invalid_properties.push('invalid value for "inflation_rate", must be greater than or equal to -1.')
184
+ end
185
+
186
+ if @death_age.nil?
187
+ invalid_properties.push('invalid value for "death_age", death_age cannot be nil.')
188
+ end
189
+
190
+ if @death_age < 0
191
+ invalid_properties.push('invalid value for "death_age", must be greater than or equal to 0.')
192
+ end
193
+
194
+ if @portfolio_return.nil?
195
+ invalid_properties.push('invalid value for "portfolio_return", portfolio_return cannot be nil.')
196
+ end
197
+
198
+ if @portfolio_return < -1
199
+ invalid_properties.push('invalid value for "portfolio_return", must be greater than or equal to -1.')
200
+ end
201
+
202
+ if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered > 1
203
+ invalid_properties.push('invalid value for "percent_of_expenses_covered", must be smaller than or equal to 1.')
204
+ end
205
+
206
+ if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered < 0
207
+ invalid_properties.push('invalid value for "percent_of_expenses_covered", must be greater than or equal to 0.')
208
+ end
209
+
210
+ invalid_properties
211
+ end
212
+
213
+ # Check to see if the all the properties in the model are valid
214
+ # @return true if the model is valid
215
+ def valid?
216
+ return false if !@retirement_savings.nil? && @retirement_savings < 0
217
+ return false if !@retirement_age.nil? && @retirement_age < 0
218
+ return false if !@retirement_income.nil? && @retirement_income < 0
219
+ return false if @current_age.nil?
220
+ return false if @current_age < 0
221
+ return false if !@retirement_tax.nil? && @retirement_tax > 1
222
+ return false if !@retirement_tax.nil? && @retirement_tax < 0
223
+ return false if !@inflation_rate.nil? && @inflation_rate < -1
224
+ return false if @death_age.nil?
225
+ return false if @death_age < 0
226
+ return false if @portfolio_return.nil?
227
+ return false if @portfolio_return < -1
228
+ return false if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered > 1
229
+ return false if !@percent_of_expenses_covered.nil? && @percent_of_expenses_covered < 0
230
+ true
231
+ end
232
+
233
+ # Custom attribute writer method with validation
234
+ # @param [Object] retirement_savings Value to be assigned
235
+ def retirement_savings=(retirement_savings)
236
+ if !retirement_savings.nil? && retirement_savings < 0
237
+ fail ArgumentError, 'invalid value for "retirement_savings", must be greater than or equal to 0.'
238
+ end
239
+
240
+ @retirement_savings = retirement_savings
241
+ end
242
+
243
+ # Custom attribute writer method with validation
244
+ # @param [Object] retirement_age Value to be assigned
245
+ def retirement_age=(retirement_age)
246
+ if !retirement_age.nil? && retirement_age < 0
247
+ fail ArgumentError, 'invalid value for "retirement_age", must be greater than or equal to 0.'
248
+ end
249
+
250
+ @retirement_age = retirement_age
251
+ end
252
+
253
+ # Custom attribute writer method with validation
254
+ # @param [Object] retirement_income Value to be assigned
255
+ def retirement_income=(retirement_income)
256
+ if !retirement_income.nil? && retirement_income < 0
257
+ fail ArgumentError, 'invalid value for "retirement_income", must be greater than or equal to 0.'
258
+ end
259
+
260
+ @retirement_income = retirement_income
261
+ end
262
+
263
+ # Custom attribute writer method with validation
264
+ # @param [Object] current_age Value to be assigned
265
+ def current_age=(current_age)
266
+ if current_age.nil?
267
+ fail ArgumentError, 'current_age cannot be nil'
268
+ end
269
+
270
+ if current_age < 0
271
+ fail ArgumentError, 'invalid value for "current_age", must be greater than or equal to 0.'
272
+ end
273
+
274
+ @current_age = current_age
275
+ end
276
+
277
+ # Custom attribute writer method with validation
278
+ # @param [Object] retirement_tax Value to be assigned
279
+ def retirement_tax=(retirement_tax)
280
+ if !retirement_tax.nil? && retirement_tax > 1
281
+ fail ArgumentError, 'invalid value for "retirement_tax", must be smaller than or equal to 1.'
282
+ end
283
+
284
+ if !retirement_tax.nil? && retirement_tax < 0
285
+ fail ArgumentError, 'invalid value for "retirement_tax", must be greater than or equal to 0.'
286
+ end
287
+
288
+ @retirement_tax = retirement_tax
289
+ end
290
+
291
+ # Custom attribute writer method with validation
292
+ # @param [Object] inflation_rate Value to be assigned
293
+ def inflation_rate=(inflation_rate)
294
+ if !inflation_rate.nil? && inflation_rate < -1
295
+ fail ArgumentError, 'invalid value for "inflation_rate", must be greater than or equal to -1.'
296
+ end
297
+
298
+ @inflation_rate = inflation_rate
299
+ end
300
+
301
+ # Custom attribute writer method with validation
302
+ # @param [Object] death_age Value to be assigned
303
+ def death_age=(death_age)
304
+ if death_age.nil?
305
+ fail ArgumentError, 'death_age cannot be nil'
306
+ end
307
+
308
+ if death_age < 0
309
+ fail ArgumentError, 'invalid value for "death_age", must be greater than or equal to 0.'
310
+ end
311
+
312
+ @death_age = death_age
313
+ end
314
+
315
+ # Custom attribute writer method with validation
316
+ # @param [Object] portfolio_return Value to be assigned
317
+ def portfolio_return=(portfolio_return)
318
+ if portfolio_return.nil?
319
+ fail ArgumentError, 'portfolio_return cannot be nil'
320
+ end
321
+
322
+ if portfolio_return < -1
323
+ fail ArgumentError, 'invalid value for "portfolio_return", must be greater than or equal to -1.'
324
+ end
325
+
326
+ @portfolio_return = portfolio_return
327
+ end
328
+
329
+ # Custom attribute writer method with validation
330
+ # @param [Object] percent_of_expenses_covered Value to be assigned
331
+ def percent_of_expenses_covered=(percent_of_expenses_covered)
332
+ if !percent_of_expenses_covered.nil? && percent_of_expenses_covered > 1
333
+ fail ArgumentError, 'invalid value for "percent_of_expenses_covered", must be smaller than or equal to 1.'
334
+ end
335
+
336
+ if !percent_of_expenses_covered.nil? && percent_of_expenses_covered < 0
337
+ fail ArgumentError, 'invalid value for "percent_of_expenses_covered", must be greater than or equal to 0.'
338
+ end
339
+
340
+ @percent_of_expenses_covered = percent_of_expenses_covered
341
+ end
342
+
343
+ # Checks equality by comparing each attribute.
344
+ # @param [Object] Object to be compared
345
+ def ==(o)
346
+ return true if self.equal?(o)
347
+ self.class == o.class &&
348
+ retirement_savings == o.retirement_savings &&
349
+ aggregation_account_ids == o.aggregation_account_ids &&
350
+ retirement_age == o.retirement_age &&
351
+ retirement_income == o.retirement_income &&
352
+ current_age == o.current_age &&
353
+ account_ids == o.account_ids &&
354
+ retirement_tax == o.retirement_tax &&
355
+ inflation_rate == o.inflation_rate &&
356
+ death_age == o.death_age &&
357
+ portfolio_return == o.portfolio_return &&
358
+ deposit_schedule == o.deposit_schedule &&
359
+ percent_of_expenses_covered == o.percent_of_expenses_covered
360
+ end
361
+
362
+ # @see the `==` method
363
+ # @param [Object] Object to be compared
364
+ def eql?(o)
365
+ self == o
366
+ end
367
+
368
+ # Calculates hash code according to all attributes.
369
+ # @return [Fixnum] Hash code
370
+ def hash
371
+ [retirement_savings, aggregation_account_ids, retirement_age, retirement_income, current_age, account_ids, retirement_tax, inflation_rate, death_age, portfolio_return, deposit_schedule, percent_of_expenses_covered].hash
372
+ end
373
+
374
+ # Builds the object from hash
375
+ # @param [Hash] attributes Model attributes in the form of hash
376
+ # @return [Object] Returns the model itself
377
+ def build_from_hash(attributes)
378
+ return nil unless attributes.is_a?(Hash)
379
+ self.class.swagger_types.each_pair do |key, type|
380
+ if type =~ /\AArray<(.*)>/i
381
+ # check to ensure the input is an array given that the attribute
382
+ # is documented as an array but the input is not
383
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
384
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
385
+ end
386
+ elsif !attributes[self.class.attribute_map[key]].nil?
387
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
388
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
389
+ end
390
+
391
+ self
392
+ end
393
+
394
+ # Deserializes the data based on type
395
+ # @param string type Data type
396
+ # @param string value Value to be deserialized
397
+ # @return [Object] Deserialized data
398
+ def _deserialize(type, value)
399
+ case type.to_sym
400
+ when :DateTime
401
+ DateTime.parse(value)
402
+ when :Date
403
+ Date.parse(value)
404
+ when :String
405
+ value.to_s
406
+ when :Integer
407
+ value.to_i
408
+ when :Float
409
+ value.to_f
410
+ when :BOOLEAN
411
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
412
+ true
413
+ else
414
+ false
415
+ end
416
+ when :Object
417
+ # generic object (usually a Hash), return directly
418
+ value
419
+ when /\AArray<(?<inner_type>.+)>\z/
420
+ inner_type = Regexp.last_match[:inner_type]
421
+ value.map { |v| _deserialize(inner_type, v) }
422
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
423
+ k_type = Regexp.last_match[:k_type]
424
+ v_type = Regexp.last_match[:v_type]
425
+ {}.tap do |hash|
426
+ value.each do |k, v|
427
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
428
+ end
429
+ end
430
+ else # model
431
+ temp_model = ProtonApi.const_get(type).new
432
+ temp_model.build_from_hash(value)
433
+ end
434
+ end
435
+
436
+ # Returns the string representation of the object
437
+ # @return [String] String presentation of the object
438
+ def to_s
439
+ to_hash.to_s
440
+ end
441
+
442
+ # to_body is an alias to to_hash (backward compatibility)
443
+ # @return [Hash] Returns the object in the form of hash
444
+ def to_body
445
+ to_hash
446
+ end
447
+
448
+ # Returns the object in the form of hash
449
+ # @return [Hash] Returns the object in the form of hash
450
+ def to_hash
451
+ hash = {}
452
+ self.class.attribute_map.each_pair do |attr, param|
453
+ value = self.send(attr)
454
+ next if value.nil?
455
+ hash[param] = _to_hash(value)
456
+ end
457
+ hash
458
+ end
459
+
460
+ # Outputs non-array value in the form of hash
461
+ # For object, use to_hash. Otherwise, just return the value
462
+ # @param [Object] value Any valid value
463
+ # @return [Hash] Returns the value in the form of hash
464
+ def _to_hash(value)
465
+ if value.is_a?(Array)
466
+ value.compact.map { |v| _to_hash(v) }
467
+ elsif value.is_a?(Hash)
468
+ {}.tap do |hash|
469
+ value.each { |k, v| hash[k] = _to_hash(v) }
470
+ end
471
+ elsif value.respond_to? :to_hash
472
+ value.to_hash
473
+ else
474
+ value
475
+ end
476
+ end
477
+
478
+ end
479
+ end