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