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