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