hydrogen-proton-api 1.9.1

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 (217) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +7 -0
  3. data/README.md +82 -0
  4. data/Rakefile +8 -0
  5. data/git_push.sh +55 -0
  6. data/lib/proton_api.rb +141 -0
  7. data/lib/proton_api/api/annuities_api.rb +347 -0
  8. data/lib/proton_api/api/business_financial_management_api.rb +293 -0
  9. data/lib/proton_api/api/cards_api.rb +185 -0
  10. data/lib/proton_api/api/financial_health_api.rb +239 -0
  11. data/lib/proton_api/api/financial_planning_api.rb +671 -0
  12. data/lib/proton_api/api/goals_api.rb +347 -0
  13. data/lib/proton_api/api/life_insurance_api.rb +77 -0
  14. data/lib/proton_api/api/personal_financial_management_api.rb +347 -0
  15. data/lib/proton_api/api/portfolio_construction_api.rb +77 -0
  16. data/lib/proton_api/api/portfolio_management_api.rb +77 -0
  17. data/lib/proton_api/api/risk_scoring_api.rb +185 -0
  18. data/lib/proton_api/api/simulations_api.rb +401 -0
  19. data/lib/proton_api/api/util_api.rb +185 -0
  20. data/lib/proton_api/api_client.rb +391 -0
  21. data/lib/proton_api/api_error.rb +38 -0
  22. data/lib/proton_api/auth_configuration.rb +181 -0
  23. data/lib/proton_api/configuration.rb +209 -0
  24. data/lib/proton_api/environment.rb +36 -0
  25. data/lib/proton_api/models/accumulation_goal_deposit_config.rb +338 -0
  26. data/lib/proton_api/models/annuity_calculator_accumulation_horizon_request.rb +459 -0
  27. data/lib/proton_api/models/annuity_calculator_annuity_amount_request.rb +461 -0
  28. data/lib/proton_api/models/annuity_calculator_decumulation_horizon_request.rb +459 -0
  29. data/lib/proton_api/models/annuity_calculator_deposit_amount_request.rb +468 -0
  30. data/lib/proton_api/models/annuity_calculator_initial_balance_request.rb +468 -0
  31. data/lib/proton_api/models/annuity_deposit_schedule.rb +254 -0
  32. data/lib/proton_api/models/answer.rb +186 -0
  33. data/lib/proton_api/models/backtest_request.rb +295 -0
  34. data/lib/proton_api/models/beneficiary_bequest_config.rb +257 -0
  35. data/lib/proton_api/models/budget_aggregation_account.rb +186 -0
  36. data/lib/proton_api/models/budget_calculator_request.rb +334 -0
  37. data/lib/proton_api/models/budget_component.rb +228 -0
  38. data/lib/proton_api/models/budget_details.rb +337 -0
  39. data/lib/proton_api/models/business_financial_health_check_request.rb +484 -0
  40. data/lib/proton_api/models/business_invoice_analysis_request.rb +361 -0
  41. data/lib/proton_api/models/calculator_deposit_schedule.rb +228 -0
  42. data/lib/proton_api/models/calculator_deposit_schedule1.rb +254 -0
  43. data/lib/proton_api/models/card_analysis_request.rb +372 -0
  44. data/lib/proton_api/models/card_limit_check_request.rb +231 -0
  45. data/lib/proton_api/models/card_transaction_authorization_request.rb +422 -0
  46. data/lib/proton_api/models/cash_analysis_request.rb +340 -0
  47. data/lib/proton_api/models/cash_flow_analysis_request.rb +366 -0
  48. data/lib/proton_api/models/children_education_config.rb +221 -0
  49. data/lib/proton_api/models/customer_analysis_request.rb +292 -0
  50. data/lib/proton_api/models/decision_tree_result_request.rb +236 -0
  51. data/lib/proton_api/models/decumulation_goal_deposit_config.rb +335 -0
  52. data/lib/proton_api/models/dimensional_risk_score_request.rb +282 -0
  53. data/lib/proton_api/models/diversification_score_request.rb +324 -0
  54. data/lib/proton_api/models/education_calculator_annual_cost_request.rb +450 -0
  55. data/lib/proton_api/models/education_calculator_deposit_amount_request.rb +483 -0
  56. data/lib/proton_api/models/education_calculator_percent_covered_request.rb +448 -0
  57. data/lib/proton_api/models/education_config.rb +271 -0
  58. data/lib/proton_api/models/emergency_fund_calculator_request.rb +561 -0
  59. data/lib/proton_api/models/event_study_request.rb +317 -0
  60. data/lib/proton_api/models/fee_analysis_request.rb +239 -0
  61. data/lib/proton_api/models/financial_health_check_request.rb +384 -0
  62. data/lib/proton_api/models/financial_picture_request.rb +270 -0
  63. data/lib/proton_api/models/financial_statement_analysis_request.rb +461 -0
  64. data/lib/proton_api/models/goal_accumulation_allocation_request.rb +729 -0
  65. data/lib/proton_api/models/goal_accumulation_recommendation_request.rb +622 -0
  66. data/lib/proton_api/models/goal_accumulation_status_request.rb +622 -0
  67. data/lib/proton_api/models/goal_config.rb +222 -0
  68. data/lib/proton_api/models/goal_decumulation_allocation_request.rb +764 -0
  69. data/lib/proton_api/models/goal_decumulation_recommendation_request.rb +657 -0
  70. data/lib/proton_api/models/goal_decumulation_status_request.rb +657 -0
  71. data/lib/proton_api/models/goal_withdrawal_config.rb +335 -0
  72. data/lib/proton_api/models/guaranteed_rate_benefit.rb +272 -0
  73. data/lib/proton_api/models/income_config.rb +266 -0
  74. data/lib/proton_api/models/life_insurance_needs_calculator_request.rb +515 -0
  75. data/lib/proton_api/models/location.rb +183 -0
  76. data/lib/proton_api/models/monte_carlo_request.rb +504 -0
  77. data/lib/proton_api/models/mortgage_calculator_down_payment_request.rb +299 -0
  78. data/lib/proton_api/models/mortgage_calculator_home_price_request.rb +299 -0
  79. data/lib/proton_api/models/mortgage_calculator_periodic_payment_request.rb +299 -0
  80. data/lib/proton_api/models/mvo_request.rb +366 -0
  81. data/lib/proton_api/models/opt_config.rb +300 -0
  82. data/lib/proton_api/models/opt_config1.rb +260 -0
  83. data/lib/proton_api/models/order_rebalance_request.rb +398 -0
  84. data/lib/proton_api/models/performance_calculator_request.rb +687 -0
  85. data/lib/proton_api/models/periods.rb +220 -0
  86. data/lib/proton_api/models/portfolio_optimization_score_request.rb +356 -0
  87. data/lib/proton_api/models/portfolio_what_if_request.rb +351 -0
  88. data/lib/proton_api/models/purchase_calculator_amount_request.rb +401 -0
  89. data/lib/proton_api/models/purchase_calculator_deposit_amount_request.rb +434 -0
  90. data/lib/proton_api/models/purchase_calculator_horizon_request.rb +356 -0
  91. data/lib/proton_api/models/ratio_targets.rb +328 -0
  92. data/lib/proton_api/models/ratio_targets1.rb +328 -0
  93. data/lib/proton_api/models/rebalancing_signal_request.rb +238 -0
  94. data/lib/proton_api/models/recommendation_config.rb +357 -0
  95. data/lib/proton_api/models/recommendation_config1.rb +346 -0
  96. data/lib/proton_api/models/recurring_transaction_analysis_request.rb +400 -0
  97. data/lib/proton_api/models/retirement_calculator_deposit_amount_request.rb +509 -0
  98. data/lib/proton_api/models/retirement_calculator_expenses_request.rb +476 -0
  99. data/lib/proton_api/models/retirement_calculator_percent_covered_request.rb +474 -0
  100. data/lib/proton_api/models/risk_allocation_request.rb +316 -0
  101. data/lib/proton_api/models/risk_score_request.rb +239 -0
  102. data/lib/proton_api/models/savings_calculator_request.rb +395 -0
  103. data/lib/proton_api/models/savings_deposit_schedule.rb +276 -0
  104. data/lib/proton_api/models/scenario_analysis_request.rb +401 -0
  105. data/lib/proton_api/models/sensitivity_analysis_request.rb +399 -0
  106. data/lib/proton_api/models/sensitivity_factor.rb +278 -0
  107. data/lib/proton_api/models/settings.rb +287 -0
  108. data/lib/proton_api/models/spending_analysis_request.rb +505 -0
  109. data/lib/proton_api/models/variable_annuity_request.rb +700 -0
  110. data/lib/proton_api/models/w_config.rb +382 -0
  111. data/lib/proton_api/models/w_config1.rb +347 -0
  112. data/lib/proton_api/version.rb +15 -0
  113. data/proton_api.gemspec +46 -0
  114. data/spec/api/annuities_api_spec.rb +107 -0
  115. data/spec/api/business_financial_management_api_spec.rb +95 -0
  116. data/spec/api/cards_api_spec.rb +71 -0
  117. data/spec/api/financial_health_api_spec.rb +83 -0
  118. data/spec/api/financial_planning_api_spec.rb +179 -0
  119. data/spec/api/goals_api_spec.rb +107 -0
  120. data/spec/api/life_insurance_api_spec.rb +47 -0
  121. data/spec/api/personal_financial_management_api_spec.rb +107 -0
  122. data/spec/api/portfolio_construction_api_spec.rb +47 -0
  123. data/spec/api/portfolio_management_api_spec.rb +47 -0
  124. data/spec/api/risk_scoring_api_spec.rb +71 -0
  125. data/spec/api/simulations_api_spec.rb +119 -0
  126. data/spec/api/util_api_spec.rb +71 -0
  127. data/spec/api_client_spec.rb +243 -0
  128. data/spec/configuration_spec.rb +42 -0
  129. data/spec/models/accumulation_goal_deposit_config_spec.rb +89 -0
  130. data/spec/models/annuity_calculator_accumulation_horizon_request_spec.rb +111 -0
  131. data/spec/models/annuity_calculator_annuity_amount_request_spec.rb +111 -0
  132. data/spec/models/annuity_calculator_decumulation_horizon_request_spec.rb +111 -0
  133. data/spec/models/annuity_calculator_deposit_amount_request_spec.rb +111 -0
  134. data/spec/models/annuity_calculator_initial_balance_request_spec.rb +111 -0
  135. data/spec/models/annuity_deposit_schedule_spec.rb +57 -0
  136. data/spec/models/answer_spec.rb +41 -0
  137. data/spec/models/backtest_request_spec.rb +95 -0
  138. data/spec/models/beneficiary_bequest_config_spec.rb +53 -0
  139. data/spec/models/budget_aggregation_account_spec.rb +41 -0
  140. data/spec/models/budget_calculator_request_spec.rb +105 -0
  141. data/spec/models/budget_component_spec.rb +53 -0
  142. data/spec/models/budget_details_spec.rb +99 -0
  143. data/spec/models/business_financial_health_check_request_spec.rb +143 -0
  144. data/spec/models/business_invoice_analysis_request_spec.rb +123 -0
  145. data/spec/models/calculator_deposit_schedule1_spec.rb +57 -0
  146. data/spec/models/calculator_deposit_schedule_spec.rb +51 -0
  147. data/spec/models/card_analysis_request_spec.rb +129 -0
  148. data/spec/models/card_limit_check_request_spec.rb +65 -0
  149. data/spec/models/card_transaction_authorization_request_spec.rb +157 -0
  150. data/spec/models/cash_analysis_request_spec.rb +115 -0
  151. data/spec/models/cash_flow_analysis_request_spec.rb +135 -0
  152. data/spec/models/children_education_config_spec.rb +47 -0
  153. data/spec/models/customer_analysis_request_spec.rb +101 -0
  154. data/spec/models/decision_tree_result_request_spec.rb +51 -0
  155. data/spec/models/decumulation_goal_deposit_config_spec.rb +89 -0
  156. data/spec/models/dimensional_risk_score_request_spec.rb +89 -0
  157. data/spec/models/diversification_score_request_spec.rb +111 -0
  158. data/spec/models/education_calculator_annual_cost_request_spec.rb +101 -0
  159. data/spec/models/education_calculator_deposit_amount_request_spec.rb +107 -0
  160. data/spec/models/education_calculator_percent_covered_request_spec.rb +101 -0
  161. data/spec/models/education_config_spec.rb +53 -0
  162. data/spec/models/emergency_fund_calculator_request_spec.rb +141 -0
  163. data/spec/models/event_study_request_spec.rb +109 -0
  164. data/spec/models/fee_analysis_request_spec.rb +77 -0
  165. data/spec/models/financial_health_check_request_spec.rb +95 -0
  166. data/spec/models/financial_picture_request_spec.rb +95 -0
  167. data/spec/models/financial_statement_analysis_request_spec.rb +155 -0
  168. data/spec/models/goal_accumulation_allocation_request_spec.rb +215 -0
  169. data/spec/models/goal_accumulation_recommendation_request_spec.rb +173 -0
  170. data/spec/models/goal_accumulation_status_request_spec.rb +173 -0
  171. data/spec/models/goal_config_spec.rb +47 -0
  172. data/spec/models/goal_decumulation_allocation_request_spec.rb +221 -0
  173. data/spec/models/goal_decumulation_recommendation_request_spec.rb +179 -0
  174. data/spec/models/goal_decumulation_status_request_spec.rb +179 -0
  175. data/spec/models/goal_withdrawal_config_spec.rb +89 -0
  176. data/spec/models/guaranteed_rate_benefit_spec.rb +59 -0
  177. data/spec/models/income_config_spec.rb +53 -0
  178. data/spec/models/life_insurance_needs_calculator_request_spec.rb +125 -0
  179. data/spec/models/location_spec.rb +41 -0
  180. data/spec/models/monte_carlo_request_spec.rb +179 -0
  181. data/spec/models/mortgage_calculator_down_payment_request_spec.rb +59 -0
  182. data/spec/models/mortgage_calculator_home_price_request_spec.rb +59 -0
  183. data/spec/models/mortgage_calculator_periodic_payment_request_spec.rb +59 -0
  184. data/spec/models/mvo_request_spec.rb +113 -0
  185. data/spec/models/opt_config1_spec.rb +69 -0
  186. data/spec/models/opt_config_spec.rb +81 -0
  187. data/spec/models/order_rebalance_request_spec.rb +123 -0
  188. data/spec/models/performance_calculator_request_spec.rb +233 -0
  189. data/spec/models/periods_spec.rb +47 -0
  190. data/spec/models/portfolio_optimization_score_request_spec.rb +127 -0
  191. data/spec/models/portfolio_what_if_request_spec.rb +123 -0
  192. data/spec/models/purchase_calculator_amount_request_spec.rb +93 -0
  193. data/spec/models/purchase_calculator_deposit_amount_request_spec.rb +99 -0
  194. data/spec/models/purchase_calculator_horizon_request_spec.rb +83 -0
  195. data/spec/models/ratio_targets1_spec.rb +71 -0
  196. data/spec/models/ratio_targets_spec.rb +71 -0
  197. data/spec/models/rebalancing_signal_request_spec.rb +71 -0
  198. data/spec/models/recommendation_config1_spec.rb +77 -0
  199. data/spec/models/recommendation_config_spec.rb +83 -0
  200. data/spec/models/recurring_transaction_analysis_request_spec.rb +129 -0
  201. data/spec/models/retirement_calculator_deposit_amount_request_spec.rb +113 -0
  202. data/spec/models/retirement_calculator_expenses_request_spec.rb +107 -0
  203. data/spec/models/retirement_calculator_percent_covered_request_spec.rb +107 -0
  204. data/spec/models/risk_allocation_request_spec.rb +85 -0
  205. data/spec/models/risk_score_request_spec.rb +71 -0
  206. data/spec/models/savings_calculator_request_spec.rb +99 -0
  207. data/spec/models/savings_deposit_schedule_spec.rb +63 -0
  208. data/spec/models/scenario_analysis_request_spec.rb +133 -0
  209. data/spec/models/sensitivity_analysis_request_spec.rb +133 -0
  210. data/spec/models/sensitivity_factor_spec.rb +59 -0
  211. data/spec/models/settings_spec.rb +79 -0
  212. data/spec/models/spending_analysis_request_spec.rb +187 -0
  213. data/spec/models/variable_annuity_request_spec.rb +209 -0
  214. data/spec/models/w_config1_spec.rb +65 -0
  215. data/spec/models/w_config_spec.rb +65 -0
  216. data/spec/spec_helper.rb +111 -0
  217. metadata +561 -0
@@ -0,0 +1,448 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class EducationCalculatorPercentCoveredRequest
17
+ attr_accessor :education_inflation_rate
18
+
19
+ attr_accessor :decumulation_horizon
20
+
21
+ attr_accessor :accumulation_horizon
22
+
23
+ attr_accessor :account_ids
24
+
25
+ attr_accessor :tax_rate
26
+
27
+ attr_accessor :general_inflation_rate
28
+
29
+ attr_accessor :total_annual_cost
30
+
31
+ attr_accessor :portfolio_return
32
+
33
+ attr_accessor :deposit_schedule
34
+
35
+ attr_accessor :initial_balance
36
+
37
+ attr_accessor :aggregation_account_ids
38
+
39
+ # Attribute mapping from ruby-style variable name to JSON key.
40
+ def self.attribute_map
41
+ {
42
+ :'education_inflation_rate' => :'education_inflation_rate',
43
+ :'decumulation_horizon' => :'decumulation_horizon',
44
+ :'accumulation_horizon' => :'accumulation_horizon',
45
+ :'account_ids' => :'account_ids',
46
+ :'tax_rate' => :'tax_rate',
47
+ :'general_inflation_rate' => :'general_inflation_rate',
48
+ :'total_annual_cost' => :'total_annual_cost',
49
+ :'portfolio_return' => :'portfolio_return',
50
+ :'deposit_schedule' => :'deposit_schedule',
51
+ :'initial_balance' => :'initial_balance',
52
+ :'aggregation_account_ids' => :'aggregation_account_ids'
53
+ }
54
+ end
55
+
56
+ # Attribute type mapping.
57
+ def self.swagger_types
58
+ {
59
+ :'education_inflation_rate' => :'Float',
60
+ :'decumulation_horizon' => :'Integer',
61
+ :'accumulation_horizon' => :'Integer',
62
+ :'account_ids' => :'Array<String>',
63
+ :'tax_rate' => :'Float',
64
+ :'general_inflation_rate' => :'Float',
65
+ :'total_annual_cost' => :'Float',
66
+ :'portfolio_return' => :'Float',
67
+ :'deposit_schedule' => :'CalculatorDepositSchedule1',
68
+ :'initial_balance' => :'Float',
69
+ :'aggregation_account_ids' => :'Array<String>'
70
+ }
71
+ end
72
+
73
+ # Initializes the object
74
+ # @param [Hash] attributes Model attributes in the form of hash
75
+ def initialize(attributes = {})
76
+ return unless attributes.is_a?(Hash)
77
+
78
+ # convert string to symbol for hash key
79
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
80
+
81
+ if attributes.has_key?(:'education_inflation_rate')
82
+ self.education_inflation_rate = attributes[:'education_inflation_rate']
83
+ else
84
+ self.education_inflation_rate = 0.05
85
+ end
86
+
87
+ if attributes.has_key?(:'decumulation_horizon')
88
+ self.decumulation_horizon = attributes[:'decumulation_horizon']
89
+ end
90
+
91
+ if attributes.has_key?(:'accumulation_horizon')
92
+ self.accumulation_horizon = attributes[:'accumulation_horizon']
93
+ end
94
+
95
+ if attributes.has_key?(:'account_ids')
96
+ if (value = attributes[:'account_ids']).is_a?(Array)
97
+ self.account_ids = value
98
+ end
99
+ end
100
+
101
+ if attributes.has_key?(:'tax_rate')
102
+ self.tax_rate = attributes[:'tax_rate']
103
+ else
104
+ self.tax_rate = 0.0
105
+ end
106
+
107
+ if attributes.has_key?(:'general_inflation_rate')
108
+ self.general_inflation_rate = attributes[:'general_inflation_rate']
109
+ else
110
+ self.general_inflation_rate = 0.0
111
+ end
112
+
113
+ if attributes.has_key?(:'total_annual_cost')
114
+ self.total_annual_cost = attributes[:'total_annual_cost']
115
+ end
116
+
117
+ if attributes.has_key?(:'portfolio_return')
118
+ self.portfolio_return = attributes[:'portfolio_return']
119
+ end
120
+
121
+ if attributes.has_key?(:'deposit_schedule')
122
+ self.deposit_schedule = attributes[:'deposit_schedule']
123
+ end
124
+
125
+ if attributes.has_key?(:'initial_balance')
126
+ self.initial_balance = attributes[:'initial_balance']
127
+ else
128
+ self.initial_balance = 0.0
129
+ end
130
+
131
+ if attributes.has_key?(:'aggregation_account_ids')
132
+ if (value = attributes[:'aggregation_account_ids']).is_a?(Array)
133
+ self.aggregation_account_ids = value
134
+ end
135
+ end
136
+ end
137
+
138
+ # Show invalid properties with the reasons. Usually used together with valid?
139
+ # @return Array for valid properties with the reasons
140
+ def list_invalid_properties
141
+ invalid_properties = Array.new
142
+ if !@education_inflation_rate.nil? && @education_inflation_rate < -1
143
+ invalid_properties.push('invalid value for "education_inflation_rate", must be greater than or equal to -1.')
144
+ end
145
+
146
+ if @decumulation_horizon.nil?
147
+ invalid_properties.push('invalid value for "decumulation_horizon", decumulation_horizon cannot be nil.')
148
+ end
149
+
150
+ if @decumulation_horizon < 0
151
+ invalid_properties.push('invalid value for "decumulation_horizon", must be greater than or equal to 0.')
152
+ end
153
+
154
+ if @accumulation_horizon.nil?
155
+ invalid_properties.push('invalid value for "accumulation_horizon", accumulation_horizon cannot be nil.')
156
+ end
157
+
158
+ if @accumulation_horizon < 0
159
+ invalid_properties.push('invalid value for "accumulation_horizon", must be greater than or equal to 0.')
160
+ end
161
+
162
+ if !@tax_rate.nil? && @tax_rate > 1
163
+ invalid_properties.push('invalid value for "tax_rate", must be smaller than or equal to 1.')
164
+ end
165
+
166
+ if !@tax_rate.nil? && @tax_rate < 0
167
+ invalid_properties.push('invalid value for "tax_rate", must be greater than or equal to 0.')
168
+ end
169
+
170
+ if !@general_inflation_rate.nil? && @general_inflation_rate < -1
171
+ invalid_properties.push('invalid value for "general_inflation_rate", must be greater than or equal to -1.')
172
+ end
173
+
174
+ if @total_annual_cost.nil?
175
+ invalid_properties.push('invalid value for "total_annual_cost", total_annual_cost cannot be nil.')
176
+ end
177
+
178
+ if @total_annual_cost < 0
179
+ invalid_properties.push('invalid value for "total_annual_cost", must be greater than or equal to 0.')
180
+ end
181
+
182
+ if @portfolio_return.nil?
183
+ invalid_properties.push('invalid value for "portfolio_return", portfolio_return cannot be nil.')
184
+ end
185
+
186
+ if @portfolio_return < -1
187
+ invalid_properties.push('invalid value for "portfolio_return", must be greater than or equal to -1.')
188
+ end
189
+
190
+ if !@initial_balance.nil? && @initial_balance < 0
191
+ invalid_properties.push('invalid value for "initial_balance", must be greater than or equal to 0.')
192
+ end
193
+
194
+ invalid_properties
195
+ end
196
+
197
+ # Check to see if the all the properties in the model are valid
198
+ # @return true if the model is valid
199
+ def valid?
200
+ return false if !@education_inflation_rate.nil? && @education_inflation_rate < -1
201
+ return false if @decumulation_horizon.nil?
202
+ return false if @decumulation_horizon < 0
203
+ return false if @accumulation_horizon.nil?
204
+ return false if @accumulation_horizon < 0
205
+ return false if !@tax_rate.nil? && @tax_rate > 1
206
+ return false if !@tax_rate.nil? && @tax_rate < 0
207
+ return false if !@general_inflation_rate.nil? && @general_inflation_rate < -1
208
+ return false if @total_annual_cost.nil?
209
+ return false if @total_annual_cost < 0
210
+ return false if @portfolio_return.nil?
211
+ return false if @portfolio_return < -1
212
+ return false if !@initial_balance.nil? && @initial_balance < 0
213
+ true
214
+ end
215
+
216
+ # Custom attribute writer method with validation
217
+ # @param [Object] education_inflation_rate Value to be assigned
218
+ def education_inflation_rate=(education_inflation_rate)
219
+ if !education_inflation_rate.nil? && education_inflation_rate < -1
220
+ fail ArgumentError, 'invalid value for "education_inflation_rate", must be greater than or equal to -1.'
221
+ end
222
+
223
+ @education_inflation_rate = education_inflation_rate
224
+ end
225
+
226
+ # Custom attribute writer method with validation
227
+ # @param [Object] decumulation_horizon Value to be assigned
228
+ def decumulation_horizon=(decumulation_horizon)
229
+ if decumulation_horizon.nil?
230
+ fail ArgumentError, 'decumulation_horizon cannot be nil'
231
+ end
232
+
233
+ if decumulation_horizon < 0
234
+ fail ArgumentError, 'invalid value for "decumulation_horizon", must be greater than or equal to 0.'
235
+ end
236
+
237
+ @decumulation_horizon = decumulation_horizon
238
+ end
239
+
240
+ # Custom attribute writer method with validation
241
+ # @param [Object] accumulation_horizon Value to be assigned
242
+ def accumulation_horizon=(accumulation_horizon)
243
+ if accumulation_horizon.nil?
244
+ fail ArgumentError, 'accumulation_horizon cannot be nil'
245
+ end
246
+
247
+ if accumulation_horizon < 0
248
+ fail ArgumentError, 'invalid value for "accumulation_horizon", must be greater than or equal to 0.'
249
+ end
250
+
251
+ @accumulation_horizon = accumulation_horizon
252
+ end
253
+
254
+ # Custom attribute writer method with validation
255
+ # @param [Object] tax_rate Value to be assigned
256
+ def tax_rate=(tax_rate)
257
+ if !tax_rate.nil? && tax_rate > 1
258
+ fail ArgumentError, 'invalid value for "tax_rate", must be smaller than or equal to 1.'
259
+ end
260
+
261
+ if !tax_rate.nil? && tax_rate < 0
262
+ fail ArgumentError, 'invalid value for "tax_rate", must be greater than or equal to 0.'
263
+ end
264
+
265
+ @tax_rate = tax_rate
266
+ end
267
+
268
+ # Custom attribute writer method with validation
269
+ # @param [Object] general_inflation_rate Value to be assigned
270
+ def general_inflation_rate=(general_inflation_rate)
271
+ if !general_inflation_rate.nil? && general_inflation_rate < -1
272
+ fail ArgumentError, 'invalid value for "general_inflation_rate", must be greater than or equal to -1.'
273
+ end
274
+
275
+ @general_inflation_rate = general_inflation_rate
276
+ end
277
+
278
+ # Custom attribute writer method with validation
279
+ # @param [Object] total_annual_cost Value to be assigned
280
+ def total_annual_cost=(total_annual_cost)
281
+ if total_annual_cost.nil?
282
+ fail ArgumentError, 'total_annual_cost cannot be nil'
283
+ end
284
+
285
+ if total_annual_cost < 0
286
+ fail ArgumentError, 'invalid value for "total_annual_cost", must be greater than or equal to 0.'
287
+ end
288
+
289
+ @total_annual_cost = total_annual_cost
290
+ end
291
+
292
+ # Custom attribute writer method with validation
293
+ # @param [Object] portfolio_return Value to be assigned
294
+ def portfolio_return=(portfolio_return)
295
+ if portfolio_return.nil?
296
+ fail ArgumentError, 'portfolio_return cannot be nil'
297
+ end
298
+
299
+ if portfolio_return < -1
300
+ fail ArgumentError, 'invalid value for "portfolio_return", must be greater than or equal to -1.'
301
+ end
302
+
303
+ @portfolio_return = portfolio_return
304
+ end
305
+
306
+ # Custom attribute writer method with validation
307
+ # @param [Object] initial_balance Value to be assigned
308
+ def initial_balance=(initial_balance)
309
+ if !initial_balance.nil? && initial_balance < 0
310
+ fail ArgumentError, 'invalid value for "initial_balance", must be greater than or equal to 0.'
311
+ end
312
+
313
+ @initial_balance = initial_balance
314
+ end
315
+
316
+ # Checks equality by comparing each attribute.
317
+ # @param [Object] Object to be compared
318
+ def ==(o)
319
+ return true if self.equal?(o)
320
+ self.class == o.class &&
321
+ education_inflation_rate == o.education_inflation_rate &&
322
+ decumulation_horizon == o.decumulation_horizon &&
323
+ accumulation_horizon == o.accumulation_horizon &&
324
+ account_ids == o.account_ids &&
325
+ tax_rate == o.tax_rate &&
326
+ general_inflation_rate == o.general_inflation_rate &&
327
+ total_annual_cost == o.total_annual_cost &&
328
+ portfolio_return == o.portfolio_return &&
329
+ deposit_schedule == o.deposit_schedule &&
330
+ initial_balance == o.initial_balance &&
331
+ aggregation_account_ids == o.aggregation_account_ids
332
+ end
333
+
334
+ # @see the `==` method
335
+ # @param [Object] Object to be compared
336
+ def eql?(o)
337
+ self == o
338
+ end
339
+
340
+ # Calculates hash code according to all attributes.
341
+ # @return [Fixnum] Hash code
342
+ def hash
343
+ [education_inflation_rate, decumulation_horizon, accumulation_horizon, account_ids, tax_rate, general_inflation_rate, total_annual_cost, portfolio_return, deposit_schedule, initial_balance, aggregation_account_ids].hash
344
+ end
345
+
346
+ # Builds the object from hash
347
+ # @param [Hash] attributes Model attributes in the form of hash
348
+ # @return [Object] Returns the model itself
349
+ def build_from_hash(attributes)
350
+ return nil unless attributes.is_a?(Hash)
351
+ self.class.swagger_types.each_pair do |key, type|
352
+ if type =~ /\AArray<(.*)>/i
353
+ # check to ensure the input is an array given that the attribute
354
+ # is documented as an array but the input is not
355
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
356
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
357
+ end
358
+ elsif !attributes[self.class.attribute_map[key]].nil?
359
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
360
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
361
+ end
362
+
363
+ self
364
+ end
365
+ # Deserializes the data based on type
366
+ # @param string type Data type
367
+ # @param string value Value to be deserialized
368
+ # @return [Object] Deserialized data
369
+ def _deserialize(type, value)
370
+ case type.to_sym
371
+ when :DateTime
372
+ value
373
+ when :Date
374
+ value
375
+ when :String
376
+ value.to_s
377
+ when :Integer
378
+ value.to_i
379
+ when :Float
380
+ value.to_f
381
+ when :BOOLEAN
382
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
383
+ true
384
+ else
385
+ false
386
+ end
387
+ when :Object
388
+ # generic object (usually a Hash), return directly
389
+ value
390
+ when /\AArray<(?<inner_type>.+)>\z/
391
+ inner_type = Regexp.last_match[:inner_type]
392
+ value.map { |v| _deserialize(inner_type, v) }
393
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
394
+ k_type = Regexp.last_match[:k_type]
395
+ v_type = Regexp.last_match[:v_type]
396
+ {}.tap do |hash|
397
+ value.each do |k, v|
398
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
399
+ end
400
+ end
401
+ else # model
402
+ temp_model = ProtonApi.const_get(type).new
403
+ temp_model.build_from_hash(value)
404
+ end
405
+ end
406
+ # Returns the string representation of the object
407
+ # @return [String] String presentation of the object
408
+ def to_s
409
+ to_hash.to_s
410
+ end
411
+
412
+ # to_body is an alias to to_hash (backward compatibility)
413
+ # @return [Hash] Returns the object in the form of hash
414
+ def to_body
415
+ to_hash
416
+ end
417
+
418
+ # Returns the object in the form of hash
419
+ # @return [Hash] Returns the object in the form of hash
420
+ def to_hash
421
+ hash = {}
422
+ self.class.attribute_map.each_pair do |attr, param|
423
+ value = self.send(attr)
424
+ next if value.nil?
425
+ hash[param] = _to_hash(value)
426
+ end
427
+ hash
428
+ end
429
+ # Outputs non-array value in the form of hash
430
+ # For object, use to_hash. Otherwise, just return the value
431
+ # @param [Object] value Any valid value
432
+ # @return [Hash] Returns the value in the form of hash
433
+ def _to_hash(value)
434
+ if value.is_a?(Array)
435
+ value.compact.map { |v| _to_hash(v) }
436
+ elsif value.is_a?(Hash)
437
+ {}.tap do |hash|
438
+ value.each { |k, v| hash[k] = _to_hash(v) }
439
+ end
440
+ elsif value.respond_to? :to_hash
441
+ value.to_hash
442
+ else
443
+ value
444
+ end
445
+ end
446
+
447
+ end
448
+ end
@@ -0,0 +1,271 @@
1
+ =begin
2
+ #Hydrogen Proton API
3
+
4
+ #Financial engineering module of Hydrogen Atom
5
+
6
+ OpenAPI spec version: 1.9.1
7
+ Contact: info@hydrogenplatform.com
8
+ Generated by: https://github.com/swagger-api/swagger-codegen.git
9
+ Swagger Codegen version: 2.4.19
10
+
11
+ =end
12
+
13
+ require 'date'
14
+
15
+ module ProtonApi
16
+ class EducationConfig
17
+ attr_accessor :total_annual_cost
18
+
19
+ attr_accessor :start_age
20
+
21
+ attr_accessor :end_age
22
+
23
+ # Attribute mapping from ruby-style variable name to JSON key.
24
+ def self.attribute_map
25
+ {
26
+ :'total_annual_cost' => :'total_annual_cost',
27
+ :'start_age' => :'start_age',
28
+ :'end_age' => :'end_age'
29
+ }
30
+ end
31
+
32
+ # Attribute type mapping.
33
+ def self.swagger_types
34
+ {
35
+ :'total_annual_cost' => :'Float',
36
+ :'start_age' => :'Integer',
37
+ :'end_age' => :'Integer'
38
+ }
39
+ end
40
+
41
+ # Initializes the object
42
+ # @param [Hash] attributes Model attributes in the form of hash
43
+ def initialize(attributes = {})
44
+ return unless attributes.is_a?(Hash)
45
+
46
+ # convert string to symbol for hash key
47
+ attributes = attributes.each_with_object({}) { |(k, v), h| h[k.to_sym] = v }
48
+
49
+ if attributes.has_key?(:'total_annual_cost')
50
+ self.total_annual_cost = attributes[:'total_annual_cost']
51
+ end
52
+
53
+ if attributes.has_key?(:'start_age')
54
+ self.start_age = attributes[:'start_age']
55
+ end
56
+
57
+ if attributes.has_key?(:'end_age')
58
+ self.end_age = attributes[:'end_age']
59
+ end
60
+ end
61
+
62
+ # Show invalid properties with the reasons. Usually used together with valid?
63
+ # @return Array for valid properties with the reasons
64
+ def list_invalid_properties
65
+ invalid_properties = Array.new
66
+ if @total_annual_cost.nil?
67
+ invalid_properties.push('invalid value for "total_annual_cost", total_annual_cost cannot be nil.')
68
+ end
69
+
70
+ if @total_annual_cost < 0
71
+ invalid_properties.push('invalid value for "total_annual_cost", must be greater than or equal to 0.')
72
+ end
73
+
74
+ if @start_age.nil?
75
+ invalid_properties.push('invalid value for "start_age", start_age cannot be nil.')
76
+ end
77
+
78
+ if @start_age < 0
79
+ invalid_properties.push('invalid value for "start_age", must be greater than or equal to 0.')
80
+ end
81
+
82
+ if @end_age.nil?
83
+ invalid_properties.push('invalid value for "end_age", end_age cannot be nil.')
84
+ end
85
+
86
+ if @end_age < 0
87
+ invalid_properties.push('invalid value for "end_age", must be greater than or equal to 0.')
88
+ end
89
+
90
+ invalid_properties
91
+ end
92
+
93
+ # Check to see if the all the properties in the model are valid
94
+ # @return true if the model is valid
95
+ def valid?
96
+ return false if @total_annual_cost.nil?
97
+ return false if @total_annual_cost < 0
98
+ return false if @start_age.nil?
99
+ return false if @start_age < 0
100
+ return false if @end_age.nil?
101
+ return false if @end_age < 0
102
+ true
103
+ end
104
+
105
+ # Custom attribute writer method with validation
106
+ # @param [Object] total_annual_cost Value to be assigned
107
+ def total_annual_cost=(total_annual_cost)
108
+ if total_annual_cost.nil?
109
+ fail ArgumentError, 'total_annual_cost cannot be nil'
110
+ end
111
+
112
+ if total_annual_cost < 0
113
+ fail ArgumentError, 'invalid value for "total_annual_cost", must be greater than or equal to 0.'
114
+ end
115
+
116
+ @total_annual_cost = total_annual_cost
117
+ end
118
+
119
+ # Custom attribute writer method with validation
120
+ # @param [Object] start_age Value to be assigned
121
+ def start_age=(start_age)
122
+ if start_age.nil?
123
+ fail ArgumentError, 'start_age cannot be nil'
124
+ end
125
+
126
+ if start_age < 0
127
+ fail ArgumentError, 'invalid value for "start_age", must be greater than or equal to 0.'
128
+ end
129
+
130
+ @start_age = start_age
131
+ end
132
+
133
+ # Custom attribute writer method with validation
134
+ # @param [Object] end_age Value to be assigned
135
+ def end_age=(end_age)
136
+ if end_age.nil?
137
+ fail ArgumentError, 'end_age cannot be nil'
138
+ end
139
+
140
+ if end_age < 0
141
+ fail ArgumentError, 'invalid value for "end_age", must be greater than or equal to 0.'
142
+ end
143
+
144
+ @end_age = end_age
145
+ end
146
+
147
+ # Checks equality by comparing each attribute.
148
+ # @param [Object] Object to be compared
149
+ def ==(o)
150
+ return true if self.equal?(o)
151
+ self.class == o.class &&
152
+ total_annual_cost == o.total_annual_cost &&
153
+ start_age == o.start_age &&
154
+ end_age == o.end_age
155
+ end
156
+
157
+ # @see the `==` method
158
+ # @param [Object] Object to be compared
159
+ def eql?(o)
160
+ self == o
161
+ end
162
+
163
+ # Calculates hash code according to all attributes.
164
+ # @return [Fixnum] Hash code
165
+ def hash
166
+ [total_annual_cost, start_age, end_age].hash
167
+ end
168
+
169
+ # Builds the object from hash
170
+ # @param [Hash] attributes Model attributes in the form of hash
171
+ # @return [Object] Returns the model itself
172
+ def build_from_hash(attributes)
173
+ return nil unless attributes.is_a?(Hash)
174
+ self.class.swagger_types.each_pair do |key, type|
175
+ if type =~ /\AArray<(.*)>/i
176
+ # check to ensure the input is an array given that the attribute
177
+ # is documented as an array but the input is not
178
+ if attributes[self.class.attribute_map[key]].is_a?(Array)
179
+ self.send("#{key}=", attributes[self.class.attribute_map[key]].map { |v| _deserialize($1, v) })
180
+ end
181
+ elsif !attributes[self.class.attribute_map[key]].nil?
182
+ self.send("#{key}=", _deserialize(type, attributes[self.class.attribute_map[key]]))
183
+ end # or else data not found in attributes(hash), not an issue as the data can be optional
184
+ end
185
+
186
+ self
187
+ end
188
+ # Deserializes the data based on type
189
+ # @param string type Data type
190
+ # @param string value Value to be deserialized
191
+ # @return [Object] Deserialized data
192
+ def _deserialize(type, value)
193
+ case type.to_sym
194
+ when :DateTime
195
+ value
196
+ when :Date
197
+ value
198
+ when :String
199
+ value.to_s
200
+ when :Integer
201
+ value.to_i
202
+ when :Float
203
+ value.to_f
204
+ when :BOOLEAN
205
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
206
+ true
207
+ else
208
+ false
209
+ end
210
+ when :Object
211
+ # generic object (usually a Hash), return directly
212
+ value
213
+ when /\AArray<(?<inner_type>.+)>\z/
214
+ inner_type = Regexp.last_match[:inner_type]
215
+ value.map { |v| _deserialize(inner_type, v) }
216
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
217
+ k_type = Regexp.last_match[:k_type]
218
+ v_type = Regexp.last_match[:v_type]
219
+ {}.tap do |hash|
220
+ value.each do |k, v|
221
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
222
+ end
223
+ end
224
+ else # model
225
+ temp_model = ProtonApi.const_get(type).new
226
+ temp_model.build_from_hash(value)
227
+ end
228
+ end
229
+ # Returns the string representation of the object
230
+ # @return [String] String presentation of the object
231
+ def to_s
232
+ to_hash.to_s
233
+ end
234
+
235
+ # to_body is an alias to to_hash (backward compatibility)
236
+ # @return [Hash] Returns the object in the form of hash
237
+ def to_body
238
+ to_hash
239
+ end
240
+
241
+ # Returns the object in the form of hash
242
+ # @return [Hash] Returns the object in the form of hash
243
+ def to_hash
244
+ hash = {}
245
+ self.class.attribute_map.each_pair do |attr, param|
246
+ value = self.send(attr)
247
+ next if value.nil?
248
+ hash[param] = _to_hash(value)
249
+ end
250
+ hash
251
+ end
252
+ # Outputs non-array value in the form of hash
253
+ # For object, use to_hash. Otherwise, just return the value
254
+ # @param [Object] value Any valid value
255
+ # @return [Hash] Returns the value in the form of hash
256
+ def _to_hash(value)
257
+ if value.is_a?(Array)
258
+ value.compact.map { |v| _to_hash(v) }
259
+ elsif value.is_a?(Hash)
260
+ {}.tap do |hash|
261
+ value.each { |k, v| hash[k] = _to_hash(v) }
262
+ end
263
+ elsif value.respond_to? :to_hash
264
+ value.to_hash
265
+ else
266
+ value
267
+ end
268
+ end
269
+
270
+ end
271
+ end