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