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