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